Как настроить смартфоны и ПК. Информационный портал

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

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

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

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

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

Книги

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

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

Видео

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

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

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

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

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

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

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

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

. Методы обучения нейронных сетей .

Решение задачи на нейрокомпьютере принципиально отличается от решения той же задачи на обычной ЭВМ с Фон-Неймановской архитектурой. Решение задачи на обычной ЭВМ заключается в обработке вводимых данных в соответствии с программой. Программу составляет человек. Для составления программы нужно придумать алгоритм, т.е. определенную последовательность математических и логических действий, необходимых для решения этой задачи. Алгоритмы, как и программы, разрабатываются людьми, а компьютер используется лишь для выполнения большого количества элементарных операций: сложения, умножения, проверки логических условий и т.п.

Нейрокомпьютер же используется как “ черный ящик”, который можно обучить решению задач из какого-нибудь класса. Нейрокомпьютеру “предъявляются” исходные данные задачи и ответ, который соответствует этим данным и который был получен каким-либо способом. Нейрокомпьютер должен сам построить внутри “черного ящика” алгоритм решения этой задачи, чтобы выдавать ответ, совпадающий с правильным. Кажется естественным ожидать, что чем больше различных пар (исходных данных), (ответ) , будет предъявлено нейрокомпьютеру, тем адекватнее решаемой задаче он сконструирует модель.

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

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

Мы рассмотрим два направления классификации методов обучения сетей. Первое направление - по способам использования учителя.

С учителем:

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

Обучение с последовательным подкреплением знаний:

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

Обучение без учителя:

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

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

Детерминистские методы:

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

Стохастические методы обучения:

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

. Правила обучения нейросетей .

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

Правило Хебба (D.Hebb):

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

dW ij = gf (Y i) f(Y j) ,

где: dW ij - величина изменения синапса W ij

Y i - уровень возбуждения i-го нейрона

Y j - уровень возбуждения j-го нейрона

f(.) - преобразующая функция

g - константа, определяющая скорость обучения.

Большинство обучающих правил основаны на этой формуле.

Дельта-правило:

Оно известно как правило снижения квадратичной ошибки и было предложено . Дельта-правило используется при обучении с учителем.

dW ij = g (D j - Y j) Y i

где: D j - желаемый выход j-го нейрона.

Таким образом, изменение силы связей происходит в соответствии с ошибкой выходного сигнала (D j - Y j) и уровнем активности входного элемента Y. Обобщение дельта-правила, называемое обратным распространением ошибки(Back-Propagation), используется в НС с двумя и более слоями.

ART - правило:

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

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

Элемент с наибольшим уровнем активации называют “победитель”. Когда он выбран, НС добавляет черты вводимого образа в члены долговременной памяти путем повторного прогона вперед - назад через веса долговременной памяти. Этот процесс Гроссберг назвал резонансом.

Правило Кохонена:

Тео Кохонен из Хельсинского технологического института использовал концепцию состязательного обучения для развития обучающего правила ” без учителя “ в НС типа карты Кохонена (рис.3.3).

Правило Кохонена заключается в следующем. Сначала выбирается победитель по стратегии “ победитель берет все ”. Поскольку выход j-го нейрона определяется скалярным произведением (U,W j) входного вектора U с вектором весов связей между входным слоем и j-м нейроном, то он зависит от угла между векторами U,W j . Поэтому выбирается нейрон, вектор весов W j которого наиболее близок ко входному вектору U. (другими словами, выбирается наиболее активный нейрон). Далее конструируется новый вектор W j так, чтобы он был ближе ко входному вектору U, т.е. :

W ij new = W ij old + g (U - W ij old) i = 1,2,...,k.

где: k - количество входов сети.

g - константа обучения.

Больцмановское обучение:

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

Больцмановское обучение выполняется в несколько этапов.

1. Коэффициенту T присваивают большое начальные значение.

2. Через сеть пропускают входной вектор,и по выходу вычисляют целевую функцию.

3. Случайным образом изменяют вес в соответствии с распределением Гаусса: P(x)=exp(-x 2 /T 2) ,где x - изменение веса.

4. Снова вычисляют выход и целевую функцию.

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

Величина Р(С) - вероятность изменения С в целевой функции, определяется с использованием распределения Больцмана: P(С)~exp(- С/kT)

где: k - константа, аналогичная константе Больцмана, выбирается в зависимости от условий задачи.

Затем выбирают случайное число V ,используя равномерное распределение от нуля до единицы. Если Р(С)>V , то изменение веса сохраняется иначе изменение веса равно нулю.

Шаги 3 - 5 повторяют для каждого из весов сети, при этом постепенно уменьшают T , пока не будет достигнуто приемлемо низкое значение целевой функции. После этого повторяют весь процесс обучения для другого входного вектора. Сеть обучается на всех векторах, пока целевая функция не станет допустимой для всех них. При этом для обеспечения сходимости изменение T должно быть пропорциональным логарифму времени t :

T(t) = T(0) / log(1+t)

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

. Алгоритмы обучения нейросетей.

Обучение сетей прямого распространения.

Для обучения сети нужно знать значения d j (j=1,2 . . .n(K)) выходов с нейронов выходного слоя (желаемые выходы) , которые сеть должна выдавать при поступлении на ее вход возбуждающего вектора I .

Ошибка функционирования сети на этих данных определяется как

где: y j - выход сети.

Для уменьшения этой ошибки следует изменить веса сети по следующему правилу:

W k new = W k old - (E/ W k)

где:  - константа, характеризующая скорость обучения.

Последняя формула описывает процесс градиентного спуска в пространстве весов. Выражение для производной dE/dW имеет следующий вид:

E/W k-1 ij = (d j - y j) f j u k-1 i для выходного слоя, т.е. k = K

E/W k-1 ij =[ (d j - y j) f j w k ij ] f j u k-1 i для скрытых слоев,

т.е. k=1,2 . . . , K-1.

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

 k-1 j = (d j - y j) y j (1- y j) , E/W k-1 ij =  k-1 j u k-1 i

для скрытых слоев:

 k-1 j =  [  k j w k ] u j k (1- u j k) , E/W k-1 ij =  k-1 j u k-1 i

Эти соотношения называются формулами обратного распространения ошибки (Back-Propagation). Если при прямом функционировании входной сигнал распространяется по сети от входного слоя к выходному, то при подстройке весов ошибка сети распространяется от выходного слоя ко входному.

Обучение сетей Кохонена (построение карт признаков).

Для построения карты Кохонена требуется достаточно представительная выборка обучающих векторов признаков (U). Пусть каждый вектор U множества(U) имеет размерность k: U=(U 1 , U 2 , . . . ,U k).

Тогда первый (распределительный) слой сети Кохонена должен иметь k нейронов; n нейронов второго слоя (карты) располагаются из плоскости в какой-либо регулярной конфигурации, например из квадратной прямоугольной сетке (рис.3.3). Настраиваемым связям между нейронами первого и второго слоев W ij присваиваются случайные значения.

Здесь, индекс i обозначает номер нейрона первого слоя, индекс j - номер нейрона второго слоя. До начала обучения задают функцию влияния нейронов второго слоя друг на друга g(r,t) , где r- расстояние между нейронами, t- параметр, характеризующий время обучения.

Эта функция традиционно имеет вид "мексиканской шляпы" (рис.3.4.), которую в процессе обучения, по мере увеличения параметра t, делают более "узкой" . Однако часто используют более простые функции, например:

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

Каждый цикл обучения заключается в поочередном предъявлении сети векторов обучающего множества с последующей корректировкой весов W ij . Корректировка осуществляется следующим образом:

1. При появлении на входе сети очередного обучающего вектора U сеть вычисляет отклик нейронов второго слоя:

2. Выбирается нейрон-победитель (т.е. нейрон с наибольшим откликом). Его номер C определяется как:

C = argmax Y j , j=1,2, . . ., n.

3. Корректировка весов связей W осуществляется по следующей формуле:

W ij new = W ij old +g(r,t)(U i - W ij old), i=1, . . . ,k; j=1, . . . n.

Здесь  - константа, характеризующая обучение.

Если после очередного цикла обучения процесс изменения весов замедлился, увеличивают параметр t.

Обучение сетей Хопфилда.

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

Сеть используется как ассоциативная память. А именно: мы хотим хранить в ней m двоичных векторов V s , s=1,2, . . .n: V s =(V 1s ,V 2s ,...,V ns).

Это означает, что при предъявлении сети любого из этих векторов она должна прийти в устойчивое состояние, соответствующее этому вектору, т.е. на выходе нейронов должен выделиться этот же вектор. Если же сети будет предъявлен неизвестный ей вектор U , то на выходе сети должен появиться один из запомненных векторов V i , который наиболее близок к U.

Очевидно, количество нейронов в такой сети должно быть равно длине хранимых векторов n.

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

Однако емкость такой сети (т.е. количество хранимых векторов m), невелика, m  log n. В работе для формирования весов использовалось правило обучения Хеббовского типа, в результате чего была достигнута емкость сети m  n.

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

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

Теперь, когда стало ясно, что именно мы хотим построить, мы можем переходить к вопросу "как строить такую нейронную сеть". Этот вопрос решается в два этапа: 1. Выбор типа (архитектуры) нейронной сети. 2. Подбор весов (обучение) нейронной сети. На первом этапе следует выбрать следующее: * какие нейроны мы хотим использовать (число входов, передаточные функции); * каким образом следует соединить их между собой; * что взять в качестве входов и выходов нейронной сети. Эта задача на первый взгляд кажется необозримой, но, к счастью, нам необязательно придумывать нейронную сеть "с нуля" - существует несколько десятков различных нейросетевых архитектур, причем эффективность многих из них доказана математически. Наиболее популярные и изученные архитектуры - это многослойный перцептрон, нейронная сеть с общей регрессией, нейронные сети Кохонена и другие. Про все эти архитектуры скоро можно будет прочитать в специальном разделе этого учебника.

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

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

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

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

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

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


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

Описанные выше процессы обучения и применения нейронных сетей можно увидеть в действии прямо сейчас. Фирмой Ward Systems Group подготовлено несколько простых программ, которые написаны на основе библиотеки NeuroWindows. Каждая из программ позволяет пользователю самостоятельно задать набор примеров и обучить на этом наборе определенную нейронную сеть. Затем можно предлагать этой нейронной сети новые примеры и наблюдать ее работу.

СОВРЕМЕННЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ/2. Вычислительная техника и программирование

Золотухина Ирина Андреевна, магистрант

Костанайский государственный университет имени А. Байтурсынова, Казахстан.

Методы и алгоритмы обучения нейронных сетей.

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

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

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

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

Впервые предложили модель искусственного нейрона американские ученые Уоррен Маккалок (Warren McCulloch) и его ученик Уолтер Питт (Walter Pitts) в 1943 году.

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

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

· промежуточные нейроны, составляющие основу нейронных сетей, преобразования в которых выполняются по выражениям (1) и (1.1);

· выходные нейроны, выходные значения которых представляют выходы нейронной сети; преобразования в них осуществляются также по выражениям (1) и (1.1).

Рис 1. Структура формальной нейронной сети

(1)

y = f(s) (1.1)

где

· w i , – вес (weight) синапса , i = 1...n ;

· b – значение смещения;

· s – результат суммирования;

· x , – компонент входного вектора (входной сигнал),

· x i = 1...n ;

· у – выходной сигнал нейрона;

· n – число входов нейрона;

· f – нелинейное преобразование (функция активации).

На входной сигнал (s) нелинейный преобразователь отвечает выходным сигналом f(s) , который представляет собой выход у нейрона.

Преимущества нейросетевого подхода при решении задач информационных технологий в отличие от других (например, архитектуры фон Неймана):

· параллелизм обработки информации;

· единый и эффективный принцип обучения;

· надежность функционирования;

· способность решать неформализованные задачи.

Применение и проблемы, решаемые искусственными нейронными сетями

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

Круг задач, решаемых нейронными сетями:

· распознавания образов;

· распознавания и синтеза речи;

· распознавания аэрокосмических изображений;

· обработки сигналов при наличии больших шумов;

· прогнозирования;

· оптимизации;

· прогнозирования котировки ценных бумаг и курса валют;

· предупреждения мошенничества с кредитными карточками;

· игра на бирже;

· фильтрация спама;

· оценки стоимости недвижимости;

· оценки финансового состояния предприятий и риска невозврата кредитов;

· обработки радиолокационных сигналов;

· системы безопасности и видеонаблюдения;

· контроля движения на скоростных автомагистралях и железных дорогах;

· диагностики в медицине;

· управление сложными объектами;

· добычи знаний из больших объемов данных в бизнесе, финансах и научных исследованиях;

· управления в реальном времени и это далеко не всё.

Обучение

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

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

Обучение с учителем

На вход искусственной нейронной сети подается множество входных нейронов X - входной вектор для обучаемой нейронной сети.

Определим функцию ошибки E . Обычно это средняя квадратичная ошибка,

,

где

· P - количество обработанных нейронной сетью примеров;

· y i -выход;

· d i - желаемый (идеальный) выход нейронной сети.

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

Общая схема обучения с учителем:

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

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

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

Если после нескольких итераций алгоритма обучения ошибка обучения E L падает почти до нуля, в то время как ошибка обобщения E G в начале спадает а затем начинает расти, то это признак эффекта переобучения. В этом случае обучение необходимо прекратить.

Рис 2. Эффект переобучения

На основе этого алгоритма строится обучение нейронной сети методом Розенблатта.

Метод Розенблатта

Данный метод был предложен Ф.Розенблаттом в 60-х годах XX века Для нейронной сети, названной персептрон (perceptron). Персептрон имеет пороговую функцию активации, его схема представлена на рис.1.

Рис 3. Однослойный персептрон

Процедуру обучения Розенблатта для однослойного персептрона можно представить так:

,

где

· x i - i -тый вход нейронной сети;

· d j - желаемый (идеальный) j -тый выход нейронной сети;

· a - коэффициент (скорость обучения) 0< a ≤1

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

1. Полагаем все веса равными нулю.

2. Проводим цикл предъявления примеров. Для каждого примера выполняется следующая процедура.

2.1. Если сеть выдала правильный ответ, то переходим к шагу 2.4.

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

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

2.4. Переходим к следующему примеру. Если достигнут конец обучающего множества, то переходим к шагу 3, иначе возвращаемся на шаг 2.1.

3. Если в ходе выполнения второго шага алгоритма хоть один раз выполнялся шаг 2.2 или 2.3 и не произошло зацикливания, то переходим к шагу 2. В противном случае обучение завершено.

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

4. k =1; m =0. Запоминаем веса связей.

5. После цикла предъявлений образов сравниваем веса связей с запомненными. Если текущие веса совпали с запомненными, то произошло зацикливание. В противном случае переходим к шагу 3.

6. m =m +1. Если m <k , то переходим ко второму шагу.

7. k =2k ; m =0. Запоминаем веса связей и переходим к шагу 2.

Поскольку длина цикла конечна, то при достаточно большом k зацикливание будет обнаружено.

Обучение без учителя.

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

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

Идея алгоритма выражается следующим равенством:

,

где

· y i (n-1) – выходное значение нейрона i слоя (n-1) ,

· y j (n) – выходное значение нейрона j слоя n ;

· w ij (t) и w ij (t-1 ) – весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно;

· a – коэффициент скорости обучения.

Существует также и дифференциальный метод обучения Хебба, представленный формулой

,(2)

здесь y i (n-1) (t) и y i (n-1) (t-1) – выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1;

y j (n) (t) и y j (n) (t-1) – то же самое для нейрона j слоя n .

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

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

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

2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей, то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение y i (n) , i =0...M i -1, где M i – число нейронов в слое i ; n =0...N -1, а N – число слоев в сети.

3. На основании полученных выходных значений нейронов по формуле (1) или (2) производится изменение весовых коэффициентов.

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

На втором шаге цикла попеременно предъявляются все образы из входного набора.

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

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

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

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

Литература:

1. В.В.Круглов, В.В.Борисов «Искусственные нейронные сети», 2002 год.

2. Rumelhart D. E., Hinton G. E., Williams R. D. Learning internal reprentation by error propagation in parallel distributed processing. – Cambrige: MA: MIT Press, 1986. – 91 p.

Лучшие статьи по теме