Понятие обучения простой нейронной сети

Добавлено 5 января 2020 в 15:31
Нейронные сети перцептрон для начинающих  (содержание)

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

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

Обучающие данные перцептрона

Целью обучения является предоставление данных, которые позволяют нейронной сети сходиться на надежных математических связях между входом и выходом. В предыдущей статье математическая связь была простой: если компонент x точки в трехмерном пространстве меньше нуля, выходной результат равен нулю (например, это означает, что эта точка данных «недействительна» и не требует дальнейшего анализа); если компонент x равен или больше нуля, выходной сигнал равен единице (что указывает на «действительную» точку данных).

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

Рисунок 1 Обучающие данные в Excel
Рисунок 1 – Обучающие данные в Excel

Компоненты x, y и z были созданы функцией RANDBETWEEN(). На скриншоте, показанном выше, все случайные значения представляют собой целые числа от –10 до +10. В другой части обучающего набора я использую формулу RANDBETWEEN(–10, 10)/10, чтобы получить нецелые компоненты x, y и z в интервале [–1, +1].

Рисунок 2 Обучающие данные в Excel в диапазоне [-1, +1]
Рисунок 2 – Обучающие данные в Excel в диапазоне [–1, +1]

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

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

Обеспечение обилия обучающих данных

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

Диверсификация данных

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

Представьте, что вы никогда раньше не видели дерево и не представляете, как оно выглядит. Ваш друг пытается помочь вам, показывая вам тысячи фотографий деревьев. К сожалению, он живет в сосновом лесу и фотографирует только сосны. Изучив фотографии, вы можете легко посмотреть на сосну, а также, вероятно, на пихту или ель и сказать: «Это дерево». Однако, что бы вы сказали, если бы увидели дуб или клен, или вишню, или пальму? Вероятно, это не лучшая аналогия, которую я когда-либо придумал, но я думаю, что она дает общее представление о том, что происходит с нейронной сетью, когда вы обучаете ее данными, которые не отражают разнообразие реальной задачи обработки.

Соответствие обучающих данных рабочим данным

Обучающие данные должны представлять данные, которые нейросеть будет пытаться классифицировать. В конце концов, цель обучения состоит в том, чтобы дать возможность сети эффективно обрабатывать некоторую информацию из реальной жизни. Например, что касается простой системы классификации, которую мы изучали, я мог бы знать, что мои реальные входные данные будут оставаться в пределах интервала (–5, +5), возможно, потому что три компонента входного вектора – это на самом деле аналоговые напряжения, передаваемые операционным усилителем с питанием ±5 В. Если бы это было так, я бы подготовил обучающий набор, который включает в себя множество целых и нецелых значений в диапазоне от –5 до +5.

Перетасовка

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

Переобучение

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

Следующая диаграмма эффективно иллюстрирует концепцию переобучения.

Рисунок 3 Переобучение нейросети
Рисунок 3 – Переобучение нейросети

Красные и синие точки представляют обучающие выборки, которые классифицирует нейронная сеть. Черная линия представляет собой хорошую стратегию классификации: она следует общему шаблону, который отделяет красный от синего, и, следовательно, она, вероятно, приведет к самой низкой ошибке в реальных данных. Зеленая линия – это переобученная стратегия классификации. Она слишком хорошо следует обучающим данным; в своей попытке идеально классифицировать обучающие выборки, она создала связь вход-выход, которая является менее обобщенной и, следовательно, менее подходящей для реальных данных.

Другой способ визуализации перетренировки представлен на следующих графиках.

Рисунок 4 Недостаточно обученная нейросеть
Рисунок 4 – Недостаточно обученная нейросеть
Рисунок 5 Хорошо обученная нейросеть
Рисунок 5 – Хорошо обученная нейросеть
Рисунок 6 Переобученная нейросеть
Рисунок 6 – Переобученная нейросеть

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

Заключение

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

Теги

Искусственный интеллект, ИИ / Artificial Intelligence, AIМашинное обучение / Machine LearningНейросеть / Нейронная сетьПереобучение / ПеретренировкаПеретасовка / ПеремешиваниеПерцептрон / Perceptron

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.