Фон
Фон

Аннотация

В данной работе представлена разработка и тестирование модели машинного обучения, основанной на нейронных сетях, для анализа данных кинематики простого робота. Используя библиотеку PyTorch, была создана и обучена модель, способная обрабатывать численные и булевые параметры, полученные в результате кинематических расчётов. Основная цель исследования заключалась в разработке надёжной и точной модели, которая могла бы способствовать улучшению проектирования и анализа в робототехнике.

Процесс обучения модели был подробно описан, включая конфигурацию, методы обучения и валидации, а также вспомогательные функции для визуализации результатов и сохранения модели. Модель обучалась на стандартизированных данных, что позволило достичь высокой точности предсказаний, как подтверждается значениями потерь и средней абсолютной ошибки (MAE) на этапах обучения и валидации.

Результаты работы демонстрируют, что предложенная модель эффективно справляется с задачей анализа кинематических данных и может быть использована для дальнейшего исследования и разработки в области робототехники. Также были обсуждены возможности дальнейшего улучшения модели, включая тестирование на более сложных датасетах и оптимизацию гиперпараметров. Это исследование может быть полезным при изучении нейронных сетей, а также при их разработке.

Общее описание Machine Learning (ML)

В эпоху цифровых технологий машинное обучение (ML) выступает как ключевой элемент прогресса в сфере робототехники и искусственного интеллекта (ИИ). Эта наука, на пересечении математической статистики, теории сигналов, оптимизационных алгоритмов и теории управления, открывает новые горизонты в понимании и обработке данных.

Подробнее

Машинное обучение предполагает создание моделей, способных адаптироваться и улучшаться благодаря взаимодействию с данными, процесс схож с обучением в природе и основан на принципах алгоритмического анализа и обработки информации.

В рамках ML модели анализируют входные данные, которые могут быть как исходными, так и специально подготовленными признаками, и на их основе формируют выводы или прогнозы. До широкого распространения глубокого обучения, задача инженерии признаков часто выполнялась вручную. Сейчас же благодаря развитию глубоких нейронных сетей, этот процесс стал автоматизированным, обеспечивая более глубокое и комплексное изучение данных. Наряду с нейронными сетями, в машинном обучении также активно используются линейные, квадратичные модели и вероятностные распределения, включая гауссово распределение [2].

Многообразие типов нейронных сетей, таких как конволюционные (CNN) [3], рекуррентные (RNN) [4] и графовые нейронные сети (GNN) [5], позволяет подходить к решению задач глубокого обучения с большим выбором инструментария. Выбор модели зависит от специфики задачи и характеристик данных. В сложных случаях предпочтение отдается нейронным сетям из-за их способности аппроксимировать сложные нелинейные взаимосвязи, что особенно важно при работе с большими объемами данных, например, в области обработки изображений.

Ключевым элементом в процессе машинного обучения является оптимизация параметров модели для достижения наилучших результатов на основе имеющихся данных. Это включает в себя выбор типа модели, настройку внутренних параметров и определение оптимальных гиперпараметров, таких как количество слоев в нейронной сети или типы используемых распределений. Данные для обучения и тестирования могут представлять собой различные типы информации, от числовых массивов до текстов и изображений, а результаты могут варьироваться в зависимости от задачи, в том числе использование вариативных автоэнкодеров (VAE) [8] и генеративных состязательных сетей (GAN) [9].

Машинное обучение находит применение в самых разнообразных областях, от автоматического распознавания образов до создания алгоритмов принятия решений, где традиционные подходы могут оказаться неэффективными. Оно стремится не просто имитировать человеческое восприятие и аналитические способности, но и разрабатывать новые методы для обработки и интерпретации данных, обеспечивая нахождение оптимальных решений на основе глубокого анализа и накопления опыта [12].

Методы машинного обучения можно классифицировать по типу обучения на обучение с учителем, без учителя и с подкреплением. Каждый из этих подходов предлагает уникальные стратегии для обработки данных и адаптации моделей, используя различные алгоритмы, в том числе методы градиентного спуска, для оптимизации параметров моделей [2].

Обучение с учителем включает в себя модели, обучаемые на основе заранее определенных пар "вход-выход", что позволяет модели научиться предсказывать результаты на новых данных. Неконтролируемое обучение, напротив, исследует скрытые структуры в неразмеченных данных, такие как кластеризация или снижение размерности. Обучение с подкреплением фокусируется на том, чтобы научить модель принимать решения через серию испытаний и ошибок, стимулируя ее достигать определенной цели [38].

Таким образом, машинное обучение представляет собой мощный инструмент, позволяющий расширить границы возможного в обработке и анализе данных, создавая новые подходы к решению задач и обеспечивая прогресс в различных сферах научных исследований и практического применения.

Применение ML в робототехнике

Современная промышленность не может обойтись без использования роботов: они выполняют такие операции, как фрезерование, сверление, покраска, а также задачи по сортировке и перемещению предметов. Сложность промышленных задач требует от роботов всё более продвинутой архитектуры и систем управления.

Подробнее

Машинное обучение не просто играет ключевую роль в развитии современной робототехники; оно является движущей силой инноваций, позволяя роботам адаптироваться к разнообразным условиям и выполнять задачи с необходимой гибкостью и интеллектом.

Применение ML в робототехнике охватывает широкий спектр направлений:

  • Зрение роботов обеспечивает машинам способность "видеть" и интерпретировать окружающий мир, что необходимо для ряда задач, от сортировки объектов до навигации в пространстве [13];

  • Навигация позволяет роботам самостоятельно передвигаться в пространстве, избегая препятствий и оптимизируя маршруты, что критически важно для доставки, разведения и спасательных операций [14];

  • Полевая робототехника, которая включает в себя автономные машины, работающие в сельском хозяйстве, экологическом мониторинге и исследованиях на открытом воздухе [15];

  • Медицинская робототехника преобразовывает здравоохранение, обеспечивая выполнение сложных хирургических операций с высокой точностью и минимальным вмешательством [19];

  • Навигация в условиях пересеченной местности открывает новые возможности для использования роботов в сложных условиях, таких как поисково-спасательные операции в горной местности или на разрушенных после стихийных бедствий территориях [20].

Машинное обучение нашло широкое применение в анализе кинематики роботов, позволяя оценить и управлять их движением с высокой точностью. Использование нейронных сетей для кинематического анализа робота предложено в исследовании [22], где авторы демонстрируют преимущества перед традиционными методами, такими как алгоритм Ньютона-Рапсона, особенно в аспекте выявления множественных решений для обобщенных координат.

Примеры успешного применения ML в робототехнике демонстрируют его потенциал в создании новых возможностей. Один из таких примеров — разработка роботов-сортировщиков на складах, которые используют машинное зрение для идентификации и сортировки товаров. Это не только существенно увеличивает скорость обработки заказов, но и минимизирует ошибки, связанные с человеческим фактором [39].

В другой работе группа учёных [24] описала подход к решению обратной кинематической задачи для серийных роботов с помощью нейронной сети, обученной учитывать ошибки сборки в шарнирах.

Анализ кинематики роботов параллельной структуры, оснащенных шестью прямолинейными приводами, был проведен в работе [26] с использованием различных методов машинного обучения, включая линейную регрессию, многомерную полиномиальную регрессию, векторную регрессию с поддержкой, регрессию на основе деревьев решений и регрессию случайного леса.

Что касается точного определения рабочего пространства по прежнему широко используется метод Монте-Карло для определения достижимых положений робота [27, 28], а также разрабатываются точные интерпретируемые модели [29]. Определение рабочей области тесно взаимосвязано с решением кинематики робота (прямая и обратная задачи кинематики). Хорошее понимание этих двух аспектов способствует решению другой задачи в роботехнике - оптимизации параметров робота. Существует множество работ представляющих решение оптимизации параметров робота, как численные методы, так и графические. В этом контексте, машинное обучение предлагает новые подходы, включая использование генетических алгоритмов [41], для решения задач оптимизации параметров роботов.

Таким образом, интеграция машинного обучения в робототехнику открывает новые возможности для разработки и управления роботами, делая их более адаптивными, интеллектуальными и способными к выполнению широкого спектра задач в различных условиях.

Описание задачи

В рамках данного исследования ставится задача разработки и реализации модели машинного обучения с использованием нейронных сетей на платформе PyTorch для анализа данных, полученных в результате кинематических расчётов простого робота. В основу модели ложатся данные, содержащие шесть ключевых параметров, отражающих поведение кинематической структуры робота.

Параметры данных:

  1. Входные параметры (2 численных): Представляют собой специфические характеристики робота, определяющие его конфигурацию и начальное состояние.

  2. Выходные параметры (2 численных): Это значения, рассчитываемые на основе кинематики, которые определяют окончательное состояние структуры робота после выполнения заданной операции.

  3. Условные параметры (2 булевых): Они выражают выполнение или невыполнение определенных условий в процессе работы кинематической структуры.

Исходный датасет

parameter1

parameter2

criteria1

criteria2

constraint1

constraint2

0

10

10

20

0.000

True

False

1

10

13

23

216.770

True

True

2

10

16

26

490.088

True

True

3

10

19

29

819.956

False

True

4

10

22

32

1206.370

False

True

Цель исследования: Разработать нейронную сеть, способную анализировать указанные параметры и выдавать точные и проверяемые результаты, например по входным параметрам определять выходные. Научиться использовать инструменты проектирования нейронных сетей - PyTorch.

Ожидаемые результаты: Модель должна обеспечить точное предсказание выходных и условных параметров на основе заданных входных данных, демонстрируя высокую степень корреляции с реальным поведением кинематических структур.

Описание модели

В результате выполнения кинематики был создан набор данных, содержащий значения параметров робота и соответствующих значений обобщенных координат. Полученные данные разделены на тренировочный набор и проверочный набор в соотношении 80% тренировочный набор и 20% проверочный. Тренировочные данные перемешаны.

На основе кинематического анализа были сгенерированы данные о рабочем пространстве. В научной литературе предлагается несколько методов оценки рабочего пространства. Предыдущие работы на эту тему представлены в [40, 41].

Процесс определения параметров нейронной сети является сложной и важной задачей, как правило нет какого то обязательного правила составления нейронных сетей, зачастую параметры нейронных сейте подбираются эмпирические в процессе тестирования или основываясь на личностном опыте.

В качестве библиотеки проектирования нейронных сетей используем распространённую библиотеку Pytorch [31]. Выходные параметры модели:

  • input_size: Размер входного слоя, который должен соответствовать количеству признаков в ваших данных.

  • output_size: Размер выходного слоя, который определяет количество целевых переменных, которые модель будет предсказывать. Для одномерной регрессии это будет 1.

  • layer_sizes: Список, определяющий размеры скрытых слоёв. Каждый элемент списка указывает на количество нейронов в соответствующем слое. По умолчанию зададим один скрытый слой размером 64 нейрона.

  • activation_fn: Функция активации, применяемая к выходам каждого скрытого слоя. По умолчанию используем функцию активации ReLU [32].

Исходный код

import torch.nn as nn
import torch.nn.functional as F

class RegressionModel(nn.Module):
    def __init__(self, 
                 input_size, 
                 output_size,
                 layer_sizes=[64], 
                 activation_fn=F.relu):
        super(RegressionModel, self).__init__()
        self.input_size = input_size
        self.output_size = output_size
        self.layer_sizes = layer_sizes
        self.activation_fn = activation_fn        
        self.layers = nn.ModuleList()        
        prev_size = input_size
        for size in layer_sizes:
            self.layers.append(nn.Linear(prev_size, size))
            prev_size = size        
        self.layers.append(nn.Linear(prev_size, output_size))
        self.activation_fn = activation_fn

    def forward(self, x):
        for layer in self.layers[:-1]:
            x = self.activation_fn(layer(x))
        x = self.layers[-1](x)
        return x

Принцип работы:

  1. Входной вектор данных x последовательно проходит через все слои модели.

  2. На выходе каждого скрытого слоя применяется функция активации (по умолчанию F.relu [32]), что позволяет модели изучать нелинейные зависимости между входными и выходными данными.

  3. Последний слой (выходной слой) возвращает линейный выход, который может интерпретироваться как прогнозируемое значение целевой переменной для задачи регрессии.

Основной метод:

  • forward(x): Определяет прямой проход (forward pass) через модель. Для каждого слоя, кроме последнего, применяется функция активации к его выходу. Выход последнего слоя возвращается напрямую, что характерно для задач регрессии, где мы хотим получить непрерывное значение без применения функции активации.

В качестве функции активации выбрана функция ReLU. ReLU, или Rectified Linear Unit, является одной из наиболее широко используемых функций активации в нейронных сетях, особенно в свёрточных нейронных сетях. Эта функция активации помогает решать проблему исчезающего градиента, которая часто встречается при использовании сигмоидных или гиперболических тангенсальных функций активации, и ускоряет сходимость обучения за счёт своей простоты [32].

Подробнее о ReLU

Функция ReLU определяется следующей формулой:

f(x) = \max(0, x)

Здесь x — это входное значение для нейрона. Если x положительно, функция возвращает значение x; если x отрицательно или равно нулю, функция возвращает ноль. Это можно также записать с использованием индикаторной функции:

f(x) = x \cdot I(x > 0)

где I — индикаторная функция, которая равна 1, если

x > 0, и 0 в противном случае.

Графически функция ReLU выглядит как два линейных сегмента, один из которых — горизонтальная линия на уровне нуля для отрицательных значений x, и другой — наклонная прямая, проходящая через начало координат под углом 45 градусов для положительных значений x.

Производная функции ReLU также проста. Она равна:

f'(x) = \begin{cases} 1 & \text{если } x > 0 \\0 & \text{если } x \leq 0\end{cases}

Производная функции ReLU показывает, что для всех положительных значений входа градиент будет равен 1, что облегчает обучение сети, поскольку градиенты не уменьшаются сильно с увеличением глубины сети. Однако для отрицательных значений входа градиент равен нулю, что может привести к проблеме "умирающих нейронов", когда нейроны полностью перестают участвовать в регулировке и обучении из-за того, что их градиенты всегда равны нулю.

В целях обеспечения масштабируемости и гибкости регулирования модели обучения используем методы декомпозиции процесса обучения (помести процесс обучения в отдельный класс Trainer, это общепринятая практика). Этот класс инкапсулирует логику обучения, включая итерации по эпохам, обработку пакетов данных, вычисление функции потерь, выполнение шагов оптимизации, а также валидацию модели.

Описание класса Trainer:

Этот класс предназначен для обучения, валидации и визуализации результатов работы модели машинного обучения.

Исходный код

Конструктор __init__
Принимает следующие параметры:

  • model: экземпляр модели, которую необходимо обучить.

  • criterion: функция потерь, по умолчанию используется torch.nn.MSELoss.

  • optimizer: оптимизатор, по умолчанию используется torch.optim.Adam с шагом обучения 0.001.

  • device: устройство, на котором будет происходить обучение ('cpu' или 'gpu').

  • print_every: частота вывода информации о процессе обучения (каждые print_every эпох).

  • verbose: если True, будет выводиться дополнительная информация в процессе обучения.

Класс хранит списки потерь и ошибок на этапах обучения и валидации, которые могут быть использованы для анализа процесса обучения.

Подробнее о методах

Метод _train

Принимает один параметр:

  • train_dataloader: загрузчик данных для обучения.

Метод проходит по всем данным обучения, вычисляет потери и обновляет параметры модели. В конце каждой эпохи вычисляет среднюю потерю и среднюю абсолютную ошибку (MAE).

Метод _eval

Принимает один параметр:

  • val_dataloader: загрузчик данных для валидации.

Метод проходит по всем данным валидации, вычисляет потери и сохраняет результаты без обновления параметров модели.

Метод fit

Принимает параметры:

  • n_epochs: количество эпох обучения.

  • train_dataloader: загрузчик данных для обучения.

  • val_dataloader: загрузчик данных для валидации.

Метод организует полный цикл обучения и валидации модели, выводит результаты после каждой print_every эпохи.

Метод plot_metrics

Визуализирует динамику изменения потерь и MAE во время обучения и валидации, используя библиотеку Matplotlib.

Метод predict

Принимает inputs — данные для предсказания.
Возвращает предсказания модели.

Метод save_model

Сохраняет текущее состояние модели и её конфигурацию в файл.

Метод load_model

Загружает модель из файла.

Основные входные параметры:

  • model: Экземпляр модели, которую нужно обучить.

  • criterion: Функция потерь, используемая для оценки ошибки модели. По умолчанию зададим MSELoss [35], подходящий для задач регрессии.

  • optimizer: Оптимизатор для обновления весов модели на основе градиентов. По умолчанию задаётся оптимизатор Adam [36] с скоростью обучения 0.001.

  • device: Устройство, на котором будут выполняться вычисления (cpu или cuda).

Особенности:

  • Этот класс обеспечивает удобную обёртку для стандартного цикла обучения модели с возможностью валидации.

  • Использование DataLoader в методах _train и _eval позволяет эффективно обрабатывать данные пакетами, что важно для обучения на больших наборах данных.

  • Поддержка гибкой конфигурации оптимизатора и функции потерь делает класс универсальным для различных задач машинного обучения.

  • Встроенная поддержка визуализации процесса обучения с помощью plot_metrics позволяет наглядно отслеживать прогресс.

В качестве оптимизатора был выбран Adam (Adaptive Moment Estimation) — это метод оптимизации, который используется для обновления весов нейронной сети на основе градиентов первого и второго порядка. Он является одним из наиболее популярных и эффективных алгоритмов оптимизации, используемых в обучении глубоких нейронных сетей, благодаря своей способности адаптироваться к различным параметрам модели [36].

Подробнее о Adam

Оптимизатор Adam объединяет идеи двух других методов оптимизации: алгоритма момента (Momentum) и алгоритма адаптивной оценки градиента (AdaGrad), обеспечивая эффективную адаптацию скорости обучения для каждого параметра.

Формулы обновления параметров:

  1. Вычисление градиентов:

    g_t = \nabla_{\theta} J(\theta_t)

    Здесь g_t — градиент функции стоимости J по параметрам \theta на шаге t.

  2. Обновление скользящих средних градиентов (первый момент):

    m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t

    Где \beta_1 — коэффициент забывания для первого момента (обычно около 0.9).

  3. Обновление скользящих средних квадратов градиентов (второй момент):

    v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2

    Где \beta_2 — коэффициент забывания для второго момента (обычно около 0.999).

  4. Коррекция смещений первого и второго моментов:

    \hat{m}_t = \frac{m_t}{1 - \beta_1^t}\hat{v}_t = \frac{v_t}{1 - \beta_2^t}

    Коррекция помогает компенсировать смещения к нулю в начале обучения, когда m_t и v_t инициализируются как векторы нулей.

  5. Обновление весов:

    \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t

    Где \eta — скорость обучения, а \epsilon — небольшая константа (например, 10^{-8}), добавляемая для стабилизации деления на очень маленькое \hat{v}_t.

Преимущества Adam:

  • Адаптивность. Adam автоматически корректирует скорость обучения для каждого параметра, что делает его подходящим для задач с различными масштабами данных и параметров.

  • Высокая эффективность. Алгоритм обычно требует меньше настроек гиперпараметров и часто работает хорошо с настройками по умолчанию.

Adam остается популярным выбором среди исследователей и практиков благодаря своей эффективности и простоте использования в широком спектре задач машинного обучения.

На данном этапе критическую роль играет определение критерия сходимости. Возможные варианты включают установление максимального числа вычислений функции, достижение заданного минимального уровня среднеквадратичной ошибки (MSE) или проверку эффективности сети на данных, выделенных для валидации. Выбор конкретного критерия сходимости зависит от пользователя, который настраивает сеть, и может отличаться в зависимости от специфики применения нейронной сети. В рассматриваемом случае в качестве критерия была выбрана метрика MSE.

Подробнее о MSE

MSE, или Среднеквадратичная ошибка (Mean Squared Error), является одной из наиболее часто используемых метрик для оценки производительности моделей в задачах регрессии. Эта метрика измеряет среднее квадратов разностей между фактическими значениями и предсказанными моделью значениями, предоставляя оценку точности модели. MSE полезна тем, что она штрафует большие ошибки сильнее, чем маленькие, что делает её чувствительной к выбросам в данных [35].

MSE определяется следующей формулой:

MSE = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2

где:

  • n — количество наблюдений в данных,

  • y_i — фактическое значение целевой переменной для i-го наблюдения,

  • \hat{y}_i — предсказанное моделью значение для i-го наблюдения.

MSE широко используется в статистике и машинном обучении не только как функция потерь в процессе обучения моделей, но и как метрика для оценки качества моделей в задачах прогнозирования. Она полезна в приложениях, где большие ошибки предсказания являются нежелательными и должны получать соответствующее наказание.

Целью использования функции потерь MSE в процессе оптимизации является уменьшение среднеквадратичного отклонения между фактическими и прогнозируемыми значениями, что способствует повышению точности модели. В контексте тренировки нейронной сети это задача сводится к настройке весов сети так, чтобы минимизировать значение MSE с помощью обратного распространения ошибок и метода градиентного спуска.

Последнее что хочется отметить, что для данные предварительно нормализованы, для этого использован удобный инструмент библиотеки Scikit Learn - StandardScaler [37].

Подробнее о StandardScaler

StandardScaler — это метод предобработки данных, используемый для нормализации набора данных по отдельным признакам, так что каждый признак будет иметь среднее значение 0 и стандартное отклонение 1. Этот процесс известен также как стандартизация и часто используется для улучшения работы алгоритмов машинного обучения, особенно тех, которые чувствительны к масштабу признаков, таких как логистическая регрессия, метод опорных векторов и многие алгоритмы, основанные на градиенте [37].

Для каждого признака в данных стандартизация выполняется по следующей формуле:

z = \frac{(x - \mu)}{\sigma}

где:

  • x — значение признака,

  • \mu — среднее значение признака по всему набору данных,

  • \sigma — стандартное отклонение признака по всему набору данных.

Предположим, у нас есть следующий набор данных:

import numpy as np
from sklearn.preprocessing import StandardScaler

# Имитация данных
data = np.array([[10, 2.7, 3.6],
                 [15, 3.0, 4.1],
                 [20, 2.9, 4.3]])

# Создание объекта StandardScaler
scaler = StandardScaler()

# Обучение на данных и одновременное преобразование
scaled_data = scaler.fit_transform(data)

print("Оригинальные данные:\n", data)
print("Стандартизированные данные:\n", scaled_data)

Стандартизированные данные будут иметь среднее значение, близкое к 0 и стандартное отклонение, близкое к 1, для каждого признака.

Использование StandardScaler позволяет обеспечить, что все признаки вносят равный вклад в анализ и обучение моделей, независимо от их исходного масштаба и распределения, что может значительно улучшить производительность многих алгоритмов машинного обучения.

Анализ результатов

В качестве входных параметров модели были выбраны: parameter1, parameter2, constraint1, constraint2. качестве выходных параметров были выбраны: criteria1, criteria2.

Анализ обучения
Анализ обучения
Epoch 10, Loss: 0.2909, MAE: 0.4163, Val Loss: 0.2987, Val MAE: 0.4313
Epoch 20, Loss: 0.0782, MAE: 0.2165, Val Loss: 0.0852, Val MAE: 0.2287
Epoch 30, Loss: 0.0275, MAE: 0.1166, Val Loss: 0.0326, Val MAE: 0.1259
Epoch 40, Loss: 0.0143, MAE: 0.0862, Val Loss: 0.0168, Val MAE: 0.0893
Epoch 50, Loss: 0.0083, MAE: 0.0653, Val Loss: 0.0098, Val MAE: 0.0685
Epoch 60, Loss: 0.0052, MAE: 0.0519, Val Loss: 0.0063, Val MAE: 0.0544
Epoch 70, Loss: 0.0035, MAE: 0.0423, Val Loss: 0.0045, Val MAE: 0.0463
Epoch 80, Loss: 0.0026, MAE: 0.0371, Val Loss: 0.0035, Val MAE: 0.0414
Epoch 90, Loss: 0.0020, MAE: 0.0330, Val Loss: 0.0028, Val MAE: 0.0376
Epoch 100, Loss: 0.0016, MAE: 0.0298, Val Loss: 0.0023, Val MAE: 0.0348

В результате тестирования модели на простом датасете были получены следующие показатели на последней, стой эпохе обучения:

  • Потери при обучении (Training Loss): 0.0016

  • Средняя абсолютная ошибка при обучении (MAE): 0.0298

  • Потери при валидации (Validation Loss): 0.0023

  • Средняя абсолютная ошибка при валидации (Val MAE): 0.0348

Эти результаты позволяют сделать несколько ключевых выводов о работе и эффективности модели:

Эффективность модели

На основе полученных метрик можно утверждать, что модель достаточно хорошо справляется с поставленной задачей. Маленькие значения потерь и средней абсолютной ошибки указывают на высокую точность предсказаний модели. Низкое значение потерь на этапе обучения и валидации также свидетельствует о том, что модель хорошо обобщает данные, не демонстрируя признаков переобучения.

Стабильность модели

Сравнение значений потерь и MAE между тренировочным и валидационным наборами данных показывает, что результаты довольно стабильны и модель не испытывает значительных колебаний производительности, что является хорошим признаком надежности модели.

Влияние простоты датасета

Важно отметить, что датасет, используемый в этом исследовании, является относительно простым. Это может влиять на обобщающую способность модели при работе с более сложными или разнообразными данными. Возможно, потребуется провести дополнительные тесты на более сложных наборах данных, чтобы лучше понять, как модель будет вести себя в различных условиях.

Рекомендации

  1. Тестирование на более сложных датасетах: Для дальнейшей оценки обобщающей способности модели рекомендуется провести тестирование на более сложных и разнообразных датасетах.

  2. Эксперименты с гиперпараметрами: Рассмотреть возможность оптимизации гиперпараметров модели, таких как скорость обучения или архитектура сети, для улучшения её производительности.

  3. Анализ ошибок: Провести анализ типов ошибок, которые совершает модель, что может помочь в дальнейшем улучшении алгоритмов и предобработки данных.

Таким образом, исходя из анализа текущих результатов, модель демонстрирует хорошую производительность на представленных данных. Однако для полноценной оценки её потенциала необходимо провести дополнительные исследования и тесты.

Вывод

В рамках данного исследования была успешно разработана и реализована модель машинного обучения на базе нейронных сетей с использованием библиотеки PyTorch для анализа данных, полученных в результате кинематических расчётов простого робота. В процессе работы была создана структура нейронной сети, способная обрабатывать численные и булевые параметры и выдавать точные предсказания, оптимизированная с помощью Adam и функции потерь MSELoss. Особое внимание уделено подробному описанию всех компонентов реализации модели, включая инициализацию класса тренера, методы обучения и валидации, а также вспомогательные методы для визуализации результатов и сохранения/загрузки модели. Для обучения и тестирования модели был подготовлен специализированный датасет с кинематическими данными, который был стандартизирован для улучшения сходимости процесса обучения.

Обучение модели проходило на протяжении многих эпох, в ходе которых потери уменьшались, а точность предсказаний улучшалась, что свидетельствует о правильности выбора архитектуры и эффективности процесса обучения. Тщательный анализ результатов показал, что модель достигла высокой точности как на тренировочных, так и на валидационных данных, подтвердив свою стабильность и надежность.

В целом, проделанная работа позволяет сделать вывод о том, что разработанная модель является функциональной и может служить как практическому применению, так и научному сообществу в области робототехники и машинного обучения.

Список источников

Раскрыть список литературы
  1. Connell, J.H., Mahadevan, S.: Robot Learning. Springer Science & Business Media (2012)

  2. Nielsen, M.A. Neural Networks and Deep Learning. Determination Press. 2015. https://books.google.com.mt/books?id=STDBswEACAAJ

  3. Venkatesan, Ragav; Li, Baoxin. Convolutional Neural Networks in Visual Computing: A Concise Guide. CRC Press. 2017. ISBN 978-1-351-65032-8.

  4. Abiodun OI, Jantan A, Omolara AE, Dada KV, Mohamed NA, Arshad H. State-of-the-art in artificial neural network applications: A survey. Heliyon. 2018 Nov 23;4(11):e00938. doi: 10.1016/j.heliyon.2018.e00938. PMID: 30519653; PMCID: PMC6260436.

  5. L. Wu, P. Cui, J. Pei, and L. Zhao. Graph Neural Networks: Foundations, Frontiers, and Applications. Springer, Singapore, 2022

  6. Y. LeCun, Y. Bengio, G. Hinton, Deep learning, Nature 521 (2015) 436–444, https://doi.org/10.1038/nature14539.

  7. K. Hornik, M. Stinchcombe, H. White, Multilayer feedforward networks are universal approximators, Neural Netw. 2 (1989) 359–366, https://doi.org/10.1016/0893-6080(89)90020-8.

  8. Y. Pu, Z. Gan, R. Henao, X. Yuan, C. Li, A. Stevens, et al., Variational autoencoder for deep learning of images, labels and captions, in: 30th Annual Conference on Neural Information Processing Systems (NeurIPS), 2016.

  9. I.J. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, et al., Generative adversarial nets, in: 28th Annual Conference on Neural Information Processing Systems (NeurIPS), 2014.

  10. D. Silver, S. Singh, D. Precup, R.S. Sutton, Reward is enough, Artif. Intell. 299 (2021), 103535, https://doi.org/10.1016/j.artint.2021.103535.

  11. Battiti. R., Brunato. M.: Reactive search optimization: learning while optimizing. In: Handbook of Metaheuristics, pp. 543–571. Springer, US (2010)

  12. Murphy, R.R.: Human-robot interaction in rescue robotics. Syst. Man Cybernetics Appl. Rev. IEEE Trans. 34(2), 138–153 (2004)

  13. Wang, Tianhai & Chen, Bin & Zhang, Zhenqian & Li, Han & Zhang, Man. (2022). Applications of machine vision in agricultural robot navigation: A review. Computers and Electronics in Agriculture. 198. 107085. 10.1016/j.compag.2022.107085.

  14. Sofman, B., et al.: Improving robot navigation through self-supervised online learning. J. Field Robotics. 23, 59–75 (2006)

  15. Moysiadis, Vasileios & Tsolakis, Naoum & Katikaridis, Dimitris & Sørensen, Claus & Pearson, Simon & Bochtis, Dionysis. (2020). Mobile Robotics in Agricultural Operations: A Narrative Review on Planning Aspects. Applied Sciences. 10. 3453. 10.3390/app10103453.

  16. Goodfellow, Ian; Pouget-Abadie, Jean; Mirza, Mehdi; Xu, Bing; Warde-Farley, David; Ozair, Sherjil; Courville, Aaron; Bengio, Yoshua (2014). Generative Adversarial Nets. Proceedings of the International Conference on Neural Information Processing Systems (NIPS 2014). pp. 2672–2680.

  17. Kohl, N., Stone, P.: Machine learning for fast quadrupedal locomotion. In: AAAI, pp. 611–616 (2004)

  18. Popp, K., Schiehlen, W.: Ground Vehicle Dynamics. Springer, Berlin (2010)

  19. Payne, Christopher & Yang, Guang-Zhong. (2014). Hand-Held Medical Robots. Annals of biomedical engineering. 42. 10.1007/s10439-014-1042-4.

  20. Krüsi, Philipp & Furgale, Paul & Bosse, Michael & Siegwart, Roland. (2016). Driving on Point Clouds: Motion Planning, Trajectory Optimization, and Terrain Assessment in Generic Nonplanar Environments: Driving on Point Clouds. Journal of Field Robotics. 34. 10.1002/rob.21700.

  21. Mosavi, Amir & Varkonyi-Koczy, Annamaria. (2017). Integration of Machine Learning and Optimization for Robot Learning. Advances in Intelligent Systems and Computing.

  22. Gholami, A.; Homayouni, T.; Ehsani, R.; Sun, J.Q. Inverse Kinematic Control of a Delta Robot Using Neural Networks in Real-Time. Robotics 2021, 10, 115.

  23. López, E.J.; De La Mora-Pulido, D.S.; De La Mora-Pulido, R.S.; Ochoa-Estrella, F.J.; Flores, M.A.; Luna-Sandoval, G. Modeling in Two Configurations of a 5R 2-DoF Planar Parallel Mechanism and Solution to the Inverse Kinematic Modeling Using Artificial Neural Network. IEEE Access 2021, 9, 68583–6859.

  24. Csiszar, A.; Eilers, J.; Verl, A. On solving the inverse kinematics problem using neural networks. In Proceedings of the 2017 24th International Conference on Mechatronics and Machine Vision in Practice (M2VIP), Auckland, New Zealand, 21–23 November2017; pp. 1–6.

  25. Ren, H.; Ben-Tzvi, P. Learning inverse kinematics and dynamics of a robotic manipulator using generative adversarial networks. Robot. Auton. Syst. 2020, 124, 103386.

  26. Zhang, D.; Lei, J. Kinematic analysis of a novel 3-DOF actuation redundant parallel manipulator using artificial intelligence approach. Robot. Comput. Integr. Manuf. 2011, 27, 157–163.

  27. Stejskal, Tomáš & Svetlik, Jozef & Ondocko, Stefan. (2022). Mapping Robot Singularities through the Monte Carlo Method. Applied Sciences. 12. 8330. 10.3390/app12168330.

  28. Aboelnasr, Mohamed & Baha, Hussein & Mokhiamar, Ossama. (2021). Novel use of the Monte-Carlo methods to visualize singularity configurations in serial manipulators. Journal of Mechanical Engineering and Sciences. 15. 7948-7963. 10.15282/jmes.15.2.2021.02.0627.

  29. Zhi, Xin & Bai, Weibang & Yeatman, Eric. (2021). Kinematic Parameter Optimization of a Miniaturized Surgical Instrument Based on Dexterous Workspace Determination.

  30. Galan-Uribe, Ervin & Morales-Velazquez, Luis. (2022). Kinematic Optimization of 6DOF Serial Robot Arms by Bio-Inspired Algorithms. IEEE Access. PP. 1-1. 10.1109/ACCESS.2022.3214850.

  31. Meta AI, «PyTorch,» Meta AI, 2016. [В Интернете]. Available: https://pytorch.org/.

  32. Fukushima, K. (1969). "Visual feature extraction by a multilayered network of analog threshold elements". IEEE Transactions on Systems Science and Cybernetics. 5 (4): 322–333. doi:10.1109/TSSC.1969.300225

  33. Галушкин А. И. Синтез многослойных систем распознавания образов. — М.: «Энергия», 1974.

  34. Brownlee, Jason (8 January 2019). "A Gentle Introduction to the Rectified Linear Unit (ReLU)". Machine Learning Mastery. Retrieved 8 April 2021.

  35. Bickel, Peter J.; Doksum, Kjell A. (2015). Mathematical Statistics: Basic Ideas and Selected Topics. Vol. I (Second ed.). p. 20. If we use quadratic loss, our risk function is called the mean squared error (MSE).

  36. Diederik P. Kingma and Jimmy Ba. Adam: A Method for Stochastic Optimization. arXiv. 2017.1412.6980. cs.LG.

  37. Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E. Scikit-learn: Machine Learning in {P}ython. Journal of Machine Learning Research. 12. 2825--2830. 2011.

  38. van Otterlo, M.; Wiering, M. (2012). "Reinforcement Learning and Markov Decision Processes". Reinforcement Learning. Adaptation, Learning, and Optimization. Vol. 12. pp. 3–42. doi:10.1007/978-3-642-27645-3_1. ISBN 978-3-642-27644-6

  39. Habib, Hasan & Waseem, Saad & Ghafoor, Abdul. (2019). Development and Implementation of Enhanced Shortest Path Algorithm for Navigation of Mobile Robot for Warehouse Automation (MRWA). 1-4. 10.1109/iEECON45304.2019.8938954.

  40. Pisarenko, A., Malyshev, D., Rybak, L., Perevuznik, V. (2024). Application of Recursive Algorithms for Optimization and Approximation of Workspace of Parallel Robots. In: Olenev, N., Evtushenko, Y., Jaćimović, M., Khachay, M., Malkova, V. (eds) Advances in Optimization and Applications. OPTIMA 2023. Communications in Computer and Information Science, vol 1913. Springer, Cham. https://doi.org/10.1007/978-3-031-48751-4_19

  41. Anton Pisarenko, Dmitry Malyshev, Larisa Rybak, Vladislav Cherkasov, Valeria Skitova, Application of evolutionary PSO algorithms to the problem of optimization of 6-6 UPU mobility platform geometric parameters,Procedia Computer Science, Volume 213, 2022, Pages 643-650, ISSN 1877-0509, https://doi.org/10.1016/j.procs.2022.11.116.

Контакты

Telegramm: antonSHBK.

Комментарии (5)


  1. dprotopopov
    30.05.2024 17:41

    Кажась вы здесь слишком перемудрили

    Анализ вход-выход известен со стародавних времён

    Наиболее классическим (в военном деле) это пушкари и артиллерия

    Баллистику никто не высчитывал по формулам Ньютона (тем более в древности)

    По каждой пушке пушкарь составлял таблицу количество пороха, вес снаряда, возвышение ствола и куда это всё прилетело. А потом, если надо - то (так же как это сейчас сделает нейросеть) вычислял параметры для наведения

    В каком-то смысле, здесь происходило "обучение с подкреплением" - допустивший ошибку пушкарь погибал в бою


    1. anton_shbk Автор
      30.05.2024 17:41

      Вы правы, я перемудрил, можно было бы сделать гораздо проще.


  1. Dynasaur
    30.05.2024 17:41
    +1

    А нельзя было хотя-бы привести картинку с вашей кинематикой? Столько абстрактных слов, а одна картинка бы сократила статью наполовину, и главное было бы понятно. А так не особо. Вы обучение с подкреплением использовали или что?


    1. anton_shbk Автор
      30.05.2024 17:41

      Спасибо, учту. Нейронная сеть представляет из себя простой многослойный персептрон. По факту можно было бы использовать обычную линейную модель, но я использовал нейронную сеть.