Обучение нейронной сети
Мы уже познакомились со строением искусственного нейрона, узнали об организации обмена данными между нейронами и о принципах построения нейронных сетей. Также мы научились инициализировать синаптические коэффициенты. Следующим шагом будет обучение нейронной сети.
Том Митчелл (Tom Mitchell) предложил следующее определение машинному обучению:
«Компьютерная программа учится на опыте E в отношении некоторого класса задач T и показателя производительности P, если ее производительность при выполнении задач в T, измеренная с помощью P, улучшается с опытом E».
Принято выделять три основных подхода к обучению нейронных сетей:
- Обучение с учителем;
- Обучение без учителя;
- Обучение с подкреплением.
Алгоритмы обучения с учителем на практике дают наилучшие результаты, но они требуют большой подготовительной работы. Сам принцип обучения с учителем подразумевает наличие правильных ответов. Как учитель, на каждой итерации обучения мы будем направлять нейронную сеть, показывая ей правильные результаты, тем самым призывая нейронную сеть запомнить, что верно, а что ложь.
При таком подходе внутри нейронной сети настраиваются связи корреляции исходных данных с правильными ответами. В идеале нейронная сеть должна научиться выделять существенные признаки из набора исходных данных. Обобщая набор выделенных признаков, она должна определять принадлежность объекта к тому или иному классу (задачи классификации) или указать наиболее вероятное развитие событий (задачи регрессии).
Сложность такого подхода заключается в необходимости проведения огромной подготовительной работы. Данный подход требует сопоставление правильных ответов к каждому набору исходных данных из обучающей выборки. Не всегда эту работу можно автоматизировать, приходится привлекать человеческие ресурсы. В то же время использование рабочей силы по подготовке обучающей выборки и правильных ответов повышает риск наличия ошибок в выборке и, как следствие, неправильной настройки нейронной сети.
Еще один риск такого подхода — переобучение нейронной сети. Это явление обычно проявляется при обучении глубоких сетей на малом наборе исходных данных. В таком случае нейронная сеть в состоянии «запомнить» все пары наборов исходных данных с правильными ответами. При этом она утратит всякую способность к обобщению данных. В результате мы получим нейронную сеть с прекрасными результатами на тренировочном наборе данных и абсолютно случайными ответами на тестовой выборке и при ее эксплуатации на реальных данных.
Для снижения риска переобучения нейронных сетей используют различные методы регуляризации, нормализации и дропаута, о которых мы поговорим позже.
Также не стоит забывать о возможности столкнуться с задачей, в которой нет однозначного правильного ответа для представленных наборов данных. В подобных случаях используются другие подходы к обучению нейронных сетей.
Обучение без учителя применяется при отсутствии правильных ответов для обучающей выборки. Алгоритмы обучения без учителя позволяют выделять отдельные признаки объектов исходных данных. Сравнивая выделенные признаки, алгоритмы проводят кластеризацию исходных данных, объединяя наиболее похожие объекты в некие классы. Количество таких классов задается в гиперпараметрах нейронной сети.
За экономию затрат на подготовительном этапе приходится платить качеством распознавания объектов и более узким кругом решаемых задач.
С ростом объема исходных данных для обучения широко используются алгоритмы обучения без учителя для предварительного обучения нейронных сетей. Вначале создается нейронная сеть и обучается без учителя на большой выборке. Это позволяет научить нейронную сеть выделять отдельные признаки из набора исходных данных и разделить большой объем данных на отдельные классы объектов.
Затем к предварительно обученной сети добавляются нейронные слои принятия решений (чаще всего полносвязные нейронные слои перцептрона) и проводится дообучение нейронной сети алгоритмами обучения с учителем.
Такой подход позволяет обучить нейронную сеть на большом объеме исходных данных, что помогает снизить до минимума риск переобучения нейронной сети. При этом, так как обучение на основном массиве данных проходит без учителя, мы можем дообучить глубокую нейронную сеть на сравнительно небольшом наборе пар исходных данных с правильными ответами. Это снижает ресурсы, требуемые для проведения подготовительной работы при обучении с учителем.
Отдельным подходом к обучению нейронных сетей можно назвать обучение с подкреплением. Данный подход применяется для решения оптимизационных задач, требующих построения стратегии. Наилучшие результаты демонстрируются при обучении нейронных сетей компьютерным и логическим играм, для чего и был разработан этот метод. Он применим для длительных конечных процессов, когда в течении процесса от нейронной сети требуется ряд решений в зависимости от состояния окружающей среды, а суммарный результат принятых решений будет ясен только в конце процесса. К примеру, выигрыш или проигрыш в игре.
Суть метода заключается в присваивании некой награды или штрафа за каждое действие. В процессе обучения определяется стратегия с максимальной наградой.
В данной книге больше внимания будет уделено обучению с учителем, которое на практике показывает наилучшие результаты обучения и применим для решения регрессионных задач, к которым относится и прогнозирование временных рядов.