Как работает нейронная сеть: алгоритмы, обучение, функции активации и потери. Методы обучения нейронной сети

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

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

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

Это определение процесса обучения нейронной сети предполагает следующую последовательность событий:

  1. В нейронную сеть поступают стимулы из внешней среды.
  2. В результате первого пункта изменяются свободные параметры нейронной сети.
  3. После изменения внутренней структуры нейронная сеть отвечает на возбуждения уже иным образом.

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

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

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

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

В данной статье собраны материалы - в основном русскоязычные - для базового изучения искусственных нейронных сетей.

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

Книги

Начнем подборку с классического способа изучения - с помощью книг. Мы подобрали русскоязычные книги с большим количеством примеров:

  • Ф. Уоссермен, Нейрокомпьютерная техника: Теория и практика. 1992 г.
    В книге в общедоступной форме излагаются основы построения нейрокомпьютеров. Описана структура нейронных сетей и различные алгоритмы их настройки. Отдельные главы посвящены вопросам реализации нейронных сетей.
  • С. Хайкин, Нейронные сети: Полный курс. 2006 г.
    Здесь рассматриваются основные парадигмы искусственных нейронных сетей. Представленный материал содержит строгое математическое обоснование всех нейросетевых парадигм, иллюстрируется примерами, описанием компьютерных экспериментов, содержит множество практических задач, а также обширную библиографию.
  • Д. Форсайт, Компьютерное зрение. Современный подход. 2004 г.
    Компьютерное зрение – это одна из самых востребованных областей на данном этапе развития глобальных цифровых компьютерных технологий. Оно требуется на производстве, при управлении роботами, при автоматизации процессов, в медицинских и военных приложениях, при наблюдении со спутников и при работе с персональными компьютерами, в частности, поиске цифровых изображений.

Видео

Нет ничего доступнее и понятнее, чем визуальное обучение при помощи видео:

  • Чтобы понять,что такое вообще машинное обучение, посмотрите вот эти две лекции от ШАДа Яндекса.
  • Введение в основные принципы проектирования нейронных сетей - отлично подходит для продолжения знакомства с нейронными сетями.
  • Курс лекций по теме «Компьютерное зрение» от ВМК МГУ. Компьютерное зрение - теория и технология создания искусственных систем, которые производят обнаружение и классификацию объектов в изображениях и видеозаписях. Эти лекции можно отнести к введению в эту интересную и сложную науку.

Образовательные ресурсы и полезные ссылки

  • Портал искусственного интеллекта.
  • Лаборатория «Я - интеллект».
  • Нейронные сети в Matlab .
  • Нейронные сети в Python (англ.):
    • Классификация текста с помощью ;
    • Простой .
  • Нейронная сеть на .

Серия наших публикаций по теме

Ранее у нас публиковался уже курс #neuralnetwork@tproger по нейронным сетям. В этом списке публикации для вашего удобства расположены в порядке изучения.

Нейронная сеть без обратных связей - персептрон

Задачи для нейронных сетей

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

· Аппроксимация - построение функции по конечному набору значений (например, прогнозирование временных рядов)

· Построение отношений на множестве объектов (например, задачи распознавания образов и звуковых сигналов).

· Распределенный поиск информации и ассоциативная память (например, задачи нахождения неявных зависимостей в больших массивах данных).

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

· Сжатие информации (например, нейросетевые реализации алгоритмов сжатия звуков, статических и динамических изображений).

· Идентификация динамических систем и управление ими.


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

Схема может быть дополнена сумматором, объединяющим при необходимости выходные сигналы нейронов в один общий выход.

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

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

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

Обучить нейронную сеть - значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы "А", мы спрашиваем его: "Какая это буква?" Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: "Это буква А". Ребенок запоминает этот пример вместе с верным ответом, то есть в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все 33 буквы будут твердо запомнены. Такой процесс называют "обучение с учителем " .

При обучении нейронной сети мы действуем совершенно аналогично. Предположим, у нас имеется таблица – база данных, содержащая примеры (кодированный набор изображений букв). Предъявляя изображение буквы "А" на вход нейронной сети, мы рассчитываем (в идеале), что уровень сигнала будет максимальным (=1) на выходе OUT1 (А – буква №1 в алфавите из 33-х букв) и минимальным (=0).

Таким образом, таблица, называемая обучающим множеством , будет иметь вид (в качестве примера заполнена только первая строка):

Буква Вектор входа Желаемый вектор выхода
X1 X2 X12 TARGET1 TARGET2 TARGET33
А
Б
Ю
Я

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

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

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

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

В общем виде алгоритм обучения с учителем будет выглядеть следующим образом:

1. Инициализировать синаптические веса маленькими случайными значениями.

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

3. Вычислить выход сети.

4. Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).

5. Подкорректировать веса сети для минимизации ошибки.

6. Повторять шаги с 2 по 5 для каждой пары обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемого уровня.

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

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

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

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

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

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

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

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

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

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

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

Дельта правило (правило Видроу-Хоффа).

Определим ошибку :

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

Дельта-правило заключается в следующем – изменение величины весового коэффициента должно быть равно:

Где – норма обучения. Это число мы сами задаем перед началом обучения. – это сигнал, приходящий к элементу k от элемента j . А – ошибка элемента k .

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

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

Алгоритм обратного распространения ошибок.

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

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

Я, пожалуй, не буду приводить математические выводы и расчеты (несмотря на мою любовь к математике 🙂), чтобы не перегружать статью, ограничимся только итоговыми результатами:

Функция – это функция активности элемента. Давайте использовать логистическую функцию, для нее:

Подставляем в предыдущую формулу и получаем величину ошибки:

В этой формуле:

Наверняка сейчас еще все это кажется не совсем понятным, но не переживайте, при рассмотрении практического примера все встанет на свои места 😉

Собственно, давайте к нему и перейдем.

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

Рассмотрим нейронную сеть и вручную проведем расчеты для прямого и обратного “потоков” в сети.

На вход мы должны подать образец, пусть это будет (0.2, 0.5) . Ожидаемый выход сети – 0.4 . Норма обучения пусть будет равна 0.85 . Давайте проведем все расчеты поэтапно. Кстати, совсем забыл, в качестве функции активности мы будем использовать логистическую функцию:

Итак, приступаем…

Вычислим комбинированный ввод элементов 2 , 3 и 4 :

Активность этих элементов равна:

Комбинированный ввод пятого элемента:

Активность пятого элемента и в то же время вывод нейронной сети равен:

С прямым “потоком” разобрались, теперь перейдем к обратному “потоку”. Все расчеты будем производить в соответствии с формулами, которые мы уже обсудили. Итак, вычислим ошибку выходного элемента:

Тогда ошибки для элементов 2 , 3 и 4 равны соответственно:

Здесь значения -0.014, -0.028 и -0.056 получаются в результате прохода ошибки выходного элемента –0.014 по взвешенным связям в направлении к элементам 2 , 3 и 4 соответственно.

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

Аналогичным образом производим расчеты и для остальных элементов:

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

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

По просьбе читателей блога я решил добавить краткий пример обучения сети с двумя скрытыми слоями:

Итак, добавляем в нашу сеть два новых элемента (X и Y), которые теперь будут выполнять роль входных. На вход также подаем образец (0.2, 0.5) . Рассмотрим алгоритм в данном случае:

1. Прямой проход сети. Здесь все точно также как и для сети с одним скрытым слоем. Результатом будет значение .

2. Вычисляем ошибку выходного элемента:

3. Теперь нам нужно вычислить ошибки элементов 2, 3 и 4.

Обучение нейронных сетей

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

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

В системах нейронных сетей большое количество парадигм обучения. Обучение с учителем (контролируемое обучение) и обучение без учителя (неконтролируемое обучение или самообучение) - вот две главные парадигмы, обычно используемые в проектировании обучающих алгоритмов. Бывает ещё смешанная парадигма.

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

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

При смешанном обучении часть весов определяется посредством обучения с учителем, в то время как остальная получается с помощью самообучения.

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

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

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

Известны 4 основных типа правил обучения: коррекция по ошибке, машина Больцмана, правило Хебба и обучение методом соревнования.

Правило коррекции по ошибке. При обучении с учителем для каждого входного примера задан желаемый выход d. Реальный выход сети y может не совпадать с желаемым. Принцип коррекции по ошибке при обучении состоит в использовании сигнала (d-y) для модификации весов, обеспечивающей постепенное уменьшение ошибки. Обучение имеет место только в случае, когда перцептрон ошибается. Известны различные модификации этого алгоритма обучения .

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

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

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

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


Рис. N.
Пример обучения методом соревнования: (а) перед обучением; (б) после обучения

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

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

Adaline и Madaline ,

линейный дискриминантный анализ], проекции Саммона ,

метод/анализ главных компонентов .

Таблица 2. Известные алгоритмы обучения.

Парадигма Обучающее правило Архитектура Алгоритм обучения Задача
С учителем Коррекция ошибки Однослойный и многослойный перцептрон Алгоритмы обучения перцептрона Обратное распространение Adaline и Madaline
Больцман Рекуррентная Алгоритм обучения Больцмана Классификация образов
Хебб Линейный дискриминантный анализ Анализ данных Классификация образов
Соревнование Соревнование Векторное квантование Категоризация внутри класса Сжатие данных
Сеть ART ARTMap Классификация образов
Без учителя Коррекция ошибки Многослойная прямого распространения Проекция Саммона Категоризация внутри класса Анализ данных
Хебб Прямого распространения или соревнование Анализ главных компонентов Анализ данных Сжатие данных
Сеть Хопфилда Обучение ассоциативной памяти Ассоциативная память
Соревнование Соревнование Векторное квантование Категоризация Сжатие данных
SOM Кохонена SOM Кохонена Категоризация Анализ данных
Сети ART ART1, ART2 Категоризация
Смешанная Коррекция ошибки и соревнование Сеть RBF Алгоритм обучения RBF Классификация образов Аппроксимация функций Предсказание, управление