Алгоритмы обучения искусственных нейронных сетей. Что такое переобучение? Многослойные нейронные сети

  • 27.04.2019

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

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

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

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

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

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

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


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

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

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

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

Упрощение

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

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

Биологическая структура → схема

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

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

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

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

Электрические сигналы → числа

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

Электрический сигнал всегда будет электрическим сигналом. Концептуально ничего не изменяется. Но что же тогда меняется? Меняется величина этого электрического сигнала (сильнее/слабее). А любую величину всегда можно выразить числом (больше/меньше).

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

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

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

Синапсы → веса связей

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

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

Это ключевой момент в концепции искусственных нейронных сетей, я объясню его подробнее. Посмотрите на картинку ниже. Теперь каждой черной стрелке (связи) на этой картинке соответствует некоторое число ​\(w_i \) ​ (вес связи). И когда сигнал проходит по этой связи, его величина умножается на вес этой связи.

На приведенном выше рисунке вес стоит не у каждой связи лишь потому, что там нет места для обозначений. В реальности у каждой ​\(i \) ​-ой связи свой собственный ​\(w_i \) ​-ый вес.

Искусственный нейрон

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

На рисунке ниже представлена полная модель искусственного нейрона.

Не пугайтесь, ничего сложного здесь нет. Давайте рассмотрим все подробно слева направо.

Входы, веса и сумматор

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

Поступившие на входы сигналы умножаются на свои веса. Сигнал первого входа ​\(x_1 \) ​ умножается на соответствующий этому входу вес ​\(w_1 \) ​. В итоге получаем ​\(x_1w_1 \) ​. И так до ​\(n \) ​-ого входа. В итоге на последнем входе получаем ​\(x_nw_n \) ​.

Теперь все произведения передаются в сумматор. Уже исходя из его названия можно понять, что он делает. Он просто суммирует все входные сигналы, умноженные на соответствующие веса:

\[ x_1w_1+x_2w_2+\cdots+x_nw_n = \sum\limits^n_{i=1}x_iw_i \]

Математическая справка

Сигма – Википедия

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

Рассмотрим простейший вариант записи:

\[ \sum\limits^5_{i=1}i=1+2+3+4+5 \]

Таким образом снизу сигмы мы присваиваем переменной-счетчику ​\(i \) ​ стартовое значение, которое будет увеличиваться, пока не дойдет до верхней границы (в примере выше это 5).

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

Пусть у нас есть ​\(n \) магазинов. У каждого магазина есть свой номер: от 1 до ​\(n \) ​. Каждый магазин приносит прибыль. Возьмем какой-то (неважно, какой) ​\(i \) ​-ый магазин. Прибыль от него равна ​\(p_i \) ​.

\[ P = p_1+p_2+\cdots+p_i+\cdots+p_n \]

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

\[ P=\sum\limits^n_{i=1}p_i \]

Словами: «Просуммируй прибыли всех магазинов, начиная с первого и заканчивая ​\(n \) ​-ым». В виде формулы это гораздо проще, удобнее и красивее.

Результатом работы сумматора является число, называемое взвешенной суммой.

Взвешенная сумма (Weighted sum ) (​\(net \) ​) - сумма входных сигналов, умноженных на соответствующие им веса.

\[ net=\sum\limits^n_{i=1}x_iw_i \]

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

Пример

Для понимания роли последнего компонента искусственного нейрона – функции активации – я приведу аналогию.

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

  1. Стоимость поездки
  2. Какая на море погода
  3. Текущая обстановка с работой
  4. Будет ли на пляже закусочная

Все эти параметры будем характеризовать 0 или 1. Соответственно, если погода на море хорошая, то на этот вход подаем 1. И так со всеми остальными параметрами.

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

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

Пусть на входы нашего нейрона мы подаем следующие сигналы:

Умножаем веса входов на сигналы соответствующих входов:

Взвешенная сумма для такого набора входных сигналов равна 6:

\[ net=\sum\limits^4_{i=1}x_iw_i = 5 + 0 + 0 + 1 =6 \]

Вот на сцену выходит функция активации.

Функция активации

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

Она преобразует взвешенную сумму в какое-то число, которое и является выходом нейрона (выход нейрона обозначим переменной ​\(out \) ​).

Для разных типов искусственных нейронов используют самые разные функции активации. В общем случае их обозначают символом ​\(\phi(net) \) ​. Указание взвешенного сигнала в скобках означает, что функция активации принимает взвешенную сумму как параметр.

Функция активации (Activation function )(​\(\phi(net) \) ​) - функция, принимающая взвешенную сумму как аргумент. Значение этой функции и является выходом нейрона (​\(out \) ​).

Функция единичного скачка

Самый простой вид функции активации. Выход нейрона может быть равен только 0 или 1. Если взвешенная сумма больше определенного порога ​\(b \) ​, то выход нейрона равен 1. Если ниже, то 0.

Как ее можно использовать? Предположим, что мы поедем на море только тогда, когда взвешенная сумма больше или равна 5. Значит наш порог равен 5:

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

Однако если бы погода на море была бы плохой, а также поездка была бы очень дорогой, но имелась бы закусочная и обстановка с работой нормальная (входы: 0011), то взвешенная сумма равнялась бы 2, а значит выход нейрона равнялся бы 0. Итак, мы никуда не едем.

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

Графически эту функцию активации можно изобразить следующим образом.

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

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

\[ out(net) = \begin{cases} 0, net < b \\ 1, net \geq b \end{cases} \]

В этой записи нет ничего сложного. Выход нейрона (​\(out \) ​) зависит от взвешенной суммы (​\(net \) ​) следующим образом: если ​\(net \) ​ (взвешенная сумма) меньше какого-то порога (​\(b \) ​), то ​\(out \) ​ (выход нейрона) равен 0. А если ​\(net \) ​ больше или равен порогу ​\(b \) ​, то ​\(out \) ​ равен 1.

Сигмоидальная функция

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

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

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

График этой функции выглядит достаточно просто. Если присмотреться, то можно увидеть некоторое подобие английской буквы ​\(S \) ​, откуда и пошло название семейства этих функций.

А вот так она записывается аналитически:

\[ out(net)=\frac{1}{1+\exp(-a \cdot net)} \]

Что за параметр ​\(a \) ​? Это какое-то число, которое характеризует степень крутизны функции. Ниже представлены логистические функции с разным параметром ​\(a \) ​.

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

Здесь же случай более приближенный к реальности. Мы до конца полностью не уверены (в особенности, если вы параноик) – стоит ли ехать? Тогда использование логистической функции в качестве функции активации приведет к тому, что вы будете получать цифру между 0 и 1. Причем чем больше взвешенная сумма, тем ближе выход будет к 1 (но никогда не будет точно ей равен). И наоборот, чем меньше взвешенная сумма, тем ближе выход нейрона будет к 0.

Например, выход нашего нейрона равен 0.8. Это значит, что он считает, что поехать на море все-таки стоит. Если бы его выход был бы равен 0.2, то это означает, что он почти наверняка против поездки на море.

Какие же замечательные свойства имеет логистическая функция?

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

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

Гиперболический тангенс

Однако есть и еще одна сигмоида – гиперболический тангенс. Он применяется в качестве функции активации биологами для более реалистичной модели нервной клетки.

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

Функция записывается следующим образом:

\[ out(net) = \tanh\left(\frac{net}{a}\right) \]

В данной выше формуле параметр ​\(a \) ​ также определяет степень крутизны графика этой функции.

А вот так выглядит график этой функции.

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

Что мы узнали?

Теперь вы получили полное представление о внутренней структуре искусственного нейрона. Я еще раз приведу краткое описание его работы.

У нейрона есть входы. На них подаются сигналы в виде чисел. Каждый вход имеет свой вес (тоже число). Сигналы на входе умножаются на соответствующие веса. Получаем набор «взвешенных» входных сигналов.

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

Сформулируем теперь самое короткое описание работы нейрона – его математическую модель:

Математическая модель искусственного нейрона с ​\(n \) ​ входами:

где
​\(\phi \) ​ – функция активации
\(\sum\limits^n_{i=1}x_iw_i \) ​ – взвешенная сумма, как сумма ​\(n \) ​ произведений входных сигналов на соответствующие веса.

Виды ИНС

Мы разобрались со структурой искусственного нейрона. Искусственные нейронные сети состоят из совокупности искусственных нейронов. Возникает логичный вопрос – а как располагать/соединять друг с другом эти самые искусственные нейроны?

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

Однослойные нейронные сети

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

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

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

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

Однослойная нейронная сеть (Single-layer neural network ) - сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.

Многослойные нейронные сети

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

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

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

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

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

Многослойная нейронная сеть (Multilayer neural network ) - нейронная сеть, состоящая из входного, выходного и расположенного(ых) между ними одного (нескольких) скрытых слоев нейронов.

Сети прямого распространения

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

Во всех примерах стрелки строго идут слева направо, то есть сигнал в таких сетях идет строго от входного слоя к выходному.

Сети прямого распространения (Feedforward neural network ) (feedforward сети) - искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному. В обратном направлении сигнал не распространяется.

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

Однако никто не запрещает сигналу идти и в обратную сторону.

Сети с обратными связями

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

Дело в том, что в сетях прямого распространения выход сети определяется входным сигналом и весовыми коэффициентами при искусственных нейронах.

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

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

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

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

Теперь давайте чуть более подробно рассмотрим вопрос обучения нейронной сети. Что это такое? И каким образом это происходит?

Что такое обучение сети?

Искусственная нейронная сеть – это совокупность искусственных нейронов. Теперь давайте возьмем, например, 100 нейронов и соединим их друг с другом. Ясно, что при подаче сигнала на вход, мы получим что-то бессмысленное на выходе.

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

Что мы можем менять в нейронной сети?

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

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

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

Остается только один вариант – менять веса связей .

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

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

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

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

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

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

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

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

Тестовая выборка (Testing set ) - конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит оценка качества работы сети.

Мы поняли, что такое «обучение сети» – подбор правильного набора весов. Теперь возникает вопрос – а как можно обучать сеть? В самом общем случае есть два подхода, приводящие к разным результатам: обучение с учителем и обучение без учителя.

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

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

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

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

Обучение с учителем (Supervised learning ) - вид обучения сети, при котором ее веса меняются так, чтобы ответы сети минимально отличались от уже готовых правильных ответов.

Где взять правильные ответы?

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

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

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

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

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

Что же происходит при таком обучении сети? Оказывается, что при таком «обучении» сеть начинает выделять классы подаваемых на вход сигналов. Короче говоря – сеть начинает кластеризацию.

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

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

Выводы

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

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

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

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

Вопросы и задачи

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

Опишите упрощения ИНС по сравнению с биологическими нейросетями.

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

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

Функцию активации часто обозначают за ​\(\phi(net) \) ​.

Запишите математическую модель искусственного нейрона.

Искусственный нейрон c ​\(n \) ​ входами преобразовывает входной сигнал (число) в выходной сигнал (число) следующим образом:

\[ out=\phi\left(\sum\limits^n_{i=1}x_iw_i\right) \]

Чем отличаются однослойные и многослойные нейронные сети?

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

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

В чем отличие feedforward сетей от сетей с обратными связями?

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

Что такое обучающая выборка? В чем ее смысл?

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

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

Что понимают под обучением сети?

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

Что такое обучение с учителем и без него?

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

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

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

4.1 Общие сведения о нейронных сетях

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

Связь между биологическим и искусственным нейронами

Рисунок 20 – Структура биологического нейрона

Нервная система человека состоит из огромного количества связанных между собой нейронов, порядка 10 11 ; количество связей исчисляется числом 10 15 .

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

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

Искусственный нейрон – это математическая модель биологического нейрона (Рисунок 21). Обозначим входной сигнал через х, а множество входных сигналов через вектор X = {х1, х2, …, хN}. Выходной сигнал нейрона будем обозначать через y.

Изобразим функциональную схему нейрона.

Рисунок 21 – Искусственный нейрон

Для обозначения возбуждающего или тормозящего воздействия входа, введем коэффициенты w 1 , w 1 , …, w N – на каждый вход, то есть вектор

W = {w 1 , w 1 , …, w N }, w 0 – величина порога. Взвешенные на векторе W входные воздействия Х перемножаются с соответствующим коэффициентом w, суммируются и формируется сигнал g:

Выходной сигнал является некоторой функцией от g


,

где F – функция активации. Она может быть различного вида:

1) ступенчатой пороговой

или

В общем случае:

2) линейной, которая равносильна отсутствию порогового элемента вообще

F(g) = g


3) кусочно-линейной, получаемая из линейной путем ограничения диапазона её изменения в пределах , то есть

4) сигмоидальной

5) многопороговой

6) гиперболический тангенс

F(g) = tanh(g)


Чаще всего входные значения преобразуются к диапазону XÎ . При w i = 1 (i = 1, 2,…, N) нейрон является мажоритарным элементом. Порог в этом случае принимает значение w 0 = N/2.

Еще один вариант условного изображения искусственного нейрона приведен на рисунке 22

Рисунок 22 – Условное обозначение искусственного нейрона

С геометрической точки зрения, нейрон при линейной функции активации описывает уравнение линии, если на входе одно значение x 1

или плоскости, когда на входе вектор значений Х

Структура (архитектура, топология) нейронных сетей

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

Изобразим пример организации нейронных сетей (рисунок 23).


Однослойная структура Двухслойная структура с обратными связями с обратными связями

Двухслойная структура Трехслойная структура с прямыми связями с прямыми связями

Рисунок 23 – Примеры структур нейронных сетей

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


Рисунок 24 – Трехслойная нейронная сеть

При конструировании сети в качестве исходных данных выступают:

– размерность вектора входного сигнала, то есть количество входов;

– размерность вектора выходного сигнала. Число нейронов в выходном слое, как правило, равно числу классов;

– формулировка решаемой задачи;

– точность решения задачи.

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

Создание или синтез НС – это задача, которая в настоящее время теоретически не решена. Она носит частный характер.

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

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

Наиболее распространенным подходом в обучении нейронных сетей является коннекционизм. Он предусматривает обучение сети путем настройки значений весовых коэффициентов wij, соответствующих различным связям между нейронами. Матрица W весовых коэффициентов wij сети называется синаптической картой. Здесь индекс i – это порядковый номер нейрона, из которого исходит связь, то есть предыдущего слоя, а j – номер нейрона последующего слоя.

Существует два вида обучения НС: обучение с учителем и обучение без учителя.

Обучение с учителем заключается в предъявлении сети последовательности обучаемых пар (примеров) (Хi, Hi), i = 1, 2, …, m образов, которая называется обучающей последовательностью. При этом для каждого входного образа Хi вычисляется реакция сети Y i и сравнивается с соответствующим целевым образом H i . Полученное рассогласование используется алгоритмом обучения для корректировки синаптической карты таким образом, чтобы уменьшить ошибку рассогласования. Такая адаптация производится путем циклического предъявления обучающей выборки до тех пор, пока ошибка рассогласования не достигнет достаточно низкого уровня.

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

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

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

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

Большинство алгоритмов обучения (АО) НС выросло из концепции Хэбба. Он предложил простой алгоритм без учителя, в котором значение веса w ij , соответствующее связи между i-м и j-м нейронами, возрастает, если оба нейрона находятся в возбужденном состоянии. Другими словами, в процессе обучения происходит коррекция связей между нейронами в соответствии со степенью корреляции их состояний. Это можно выразить в виде следующего конечно-разностного уравнения:

где w ij (t + 1) и w ij (t) – значения веса связей нейрона i с нейроном j до настройки (на шаге t+1) и после настройки (на шаге t) соответственно; v i (t) – выход нейрона i и выход нейрона j на шаге t; v j (t) – выход нейрона j на шаге t; α – параметр скорости обучения.

Стратегия обучения нейронных сетей

Наряду с алгоритмом обучения не менее важным является стратегия обучения сети.

Одним из подходов является последовательное обучение сети на серии примеров (Х i , H i) i = 1, 2, …, m, составляющих обучающую выборку. При этом сеть обучают правильно реагировать сначала на первый образ Х 1 , затем на второй Х 2 и т.д. Однако, в данной стратегии возникает опасность утраты сетью ранее приобретенных навыков при обучении каждому следующему примеру, то есть сеть может «забыть» ранее предъявленные примеры. Чтобы этого не происходило, надо сеть обучать сразу всем примерам обучающей выборки.

Х 1 ={Х 11 ,…, Х 1 N } можно обучать 100 ц 1

Х 2 = {Х 21 ,…, Х 2 N } 100 ц 2 100 ц

……………………

Х m = {Х m 1 ,…, Х mN } 100 ц 3

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

,

где l i – параметры, определяющие требования к качеству обучения нейронной сети по каждому из примеров, такие, что λ 1 + λ 2 + … + λ m = 1.

Практическая часть.

Сформируем обучающее множество:

P_o=cat (1, Mt, Mf);

Зададим структуру нейронной сети для задачи обнаружения:

net = newff (minmax(P_o), , {"logsig", "logsig"}, "trainlm", "learngdm");

net.trainParam.epochs = 100;% заданное количество циклов обучения

net.trainParam.show = 5;% количество циклов для показа промежуточных результатов;

net.trainParam.min_grad = 0;% целевое значение градиента

net.trainParam.max_fail = 5;% максимально допустимая кратность превышения ошибки проверочной выборки по сравнению с достигнутым минимальным значением;

net.trainParam.searchFcn = "srchcha";% имя используемого одномерного алгоритма оптимизации

net.trainParam.goal = 0;% целевая ошибка обучения

Функция newff предназначена для создания «классической» многослойной нейронной сети с обучением по методу обратного распространения ошибки. Данная функция содержит несколько аргументов. Первый аргумент функции – это матрица минимальных и максимальных значений обучающего множества Р_о, которая определяется с помощью выражения minmax (P_o).

Вторые аргументы функции, задаются в квадратных скобках и определяют количество и размер слоев. Выражение означает, что нейронная сеть имеет 2 слоя. В первом слое – npr=10 нейронов, а во втором – 2. Количество нейронов в первом слое определяется размерностью входной матрицы признаков. В зависимости от количества признаков в первом слое может быть: 5, 7, 12 нейронов. Размерность второго слоя (выходной слой) определяется решаемой задачей. В задачах обнаружения полезного сигнала на фоне микросейсма, классификации по первому и второму классам, на выходе нейронной сети задается 2 нейрона.

Третьи аргументы функции определяют вид функции активации в каждом слое. Выражение {"logsig", "logsig"} означает, что в каждом слое используется сигмоидально-логистическая функция активации , область значений которой – (0, 1).

Четвертый аргумент задает вид функции обучения нейронной сети. В примере задана функция обучения, использующая алгоритм оптимизации Левенберга-Марквардта – "trainlm".

Первые половина векторов матрицы Т инициализируются значениями {1, 0}, а последующие – {0, 1}.

net=newff (minmax(P_o), , {"logsig", "logsig"}, "trainlm", "learngdm");

net.trainParam.epochs = 1000;

net.trainParam.show = 5;

net.trainParam.min_grad = 0;

net.trainParam.max_fail = 5;

net.trainParam.searchFcn = "srchcha";

net.trainParam.goal = 0;

Программа инициализации желаемых выходов нейронной сети Т:

n1=length (Mt(:, 1));

n2=length (Mf(:, 1));

T1=zeros (2, n1);

T2=zeros (2, n2);

T=cat (2, T1, T2);

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

net = train (net, P_o, T);

Рисунок 25 – График обучения нейронной сети.

Произведем контроль нейросети:

Y_k=sim (net, P_k);

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

Pb=sum (round(Y_k (1,1:100)))/100

Оценка вероятности правильного обнаружения гусеничной техники Pb=1 alpha = sum (round(Y_k (1,110:157)))/110

Оценка вероятности ложной тревоги alpha =0

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

Величина среднеквадратической ошибки контроля составляет:

sqe_k = 2.5919e-026

Протестируем работу нейросети. Для этого сформируем матрицу признаков тестового сигнала:

h3=tr_t50-mean (tr_t50);

Mh1=MATRPRIZP (h3,500, N1, N2);

Mh1=Mh1 (1:50,:);

Y_t=sim (net, P_t);

Pb=sum (round(Y_t (1,1:100)))/100

Оценка вероятности правильного обнаружения гусеничной техники Pb=1

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

Величина среднеквадратической ошибки тестирования составляет:

sqe_t = 3.185e-025

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

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


Заключение

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

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

1) Были построены гистограммы выборочных плотностей вероятности амплитуд сигналов, как случайных величин.

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

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

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

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

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

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

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

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


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

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

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

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

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

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

Искусственная нейронная сеть состоит из трех компонентов:

  • Входной слой;
  • Скрытые (вычислительные) слои;
  • Выходной слой.

Происходит в два этапа:

  • ошибки.

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


Прямое распространение

Зададим начальные веса случайным образом:

Умножим входные данные на веса для формирования скрытого слоя:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Выходные данные из скрытого слоя передается через нелинейную функцию (), для получения выхода сети:

  • y_ = fn(h1 , h2, h3)

Обратное распространение

  • Суммарная ошибка (total_error) вычисляется как разность между ожидаемым значением «y» (из обучающего набора) и полученным значением «y_» (посчитанное на этапе прямого распространения ошибки), проходящих через функцию потерь (cost function).
  • Частная производная ошибки вычисляется по каждому весу (эти частные дифференциалы отражают вклад каждого веса в общую ошибку (total_loss)).
  • Затем эти дифференциалы умножаются на число, называемое скорость обучения или learning rate (η).

Полученный результат затем вычитается из соответствующих весов.

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

  • w1 = w1 — (η * ∂(err) / ∂(w1))
  • w2 = w2 — (η * ∂(err) / ∂(w2))
  • w3 = w3 — (η * ∂(err) / ∂(w3))

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


Популярный мем о том, как Карлсон стал Data Science разработчиком

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

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

Частные производные

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

Разберем необходимость частных производных на примере.

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

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

Ошибка нескольких детей может уменьшиться, но общая ошибка все еще увеличивается.

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

Гиперпараметры

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

Скорость обучения (learning rate)

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

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

Функция активации (activation function)

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

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

Функция потери (loss function)

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

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

Функция потерь одномерна и не является вектором, поскольку она оценивает, насколько хорошо нейронная сеть работает в целом.

Некоторые известные функции потерь:

  • Квадратичная (среднеквадратичное отклонение);
  • Кросс-энтропия;
  • Экспоненциальная (AdaBoost);
  • Расстояние Кульбака - Лейблера или прирост информации.

Cреднеквадратичное отклонение – самая простая фукция потерь и наиболее часто используемая. Она задается следующим образом:

Функция потерь в нейронной сети должна удовлетворять двум условиям:

  • Функция потерь должна быть записана как среднее;
  • Функция потерь не должна зависеть от каких-либо активационных значений нейронной сети, кроме значений, выдаваемых на выходе.

Глубокие нейронные сети

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

Популярные алгоритмы нейронных сетей (http://www.asimovinstitute.org/neural-network-zoo)

Более формально в deep learning:

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

Пример

Рассмотрим однослойную нейронную сеть:

Здесь, обучается первый слой (зеленые нейроны), он просто передается на выход.

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

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

Не следует путать с широкой нейронной сетью.

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

Пример:

Изучая английскую грамматику, требуется знать огромное число понятий. В этом случае однослойная широкая нейронная сеть работает намного лучше, чем глубокая нейронная сеть, которая значительно меньше.

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

Главное — баланс

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

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

Проклятье размерности

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

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

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

Компромисс

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

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

Действительно,

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

Следовательно, как правило, невозможно иметь маленькое смещение и маленькую дисперсию одновременно.

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

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

Причины популярности

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

  • богатыми возможностями;
  • простотой применения;
  • привлекательностью.

Подробнее остановимся на каждом пункте.

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

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

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

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

Сфера применения

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

Особенности образовательного процесса

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

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

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

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

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

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

Именно поэтому было продолжено обучение нейронной сети, формирование научного фундамента для подобной деятельности.

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

Методы обучения

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

Парадигмы обучения

Глубинное обучение нейронных сетей осуществляется на следующих парадигмах:

  • с учителем;
  • без наставника;
  • смешанная форма.

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

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

Смешанный вид рассматривается в качестве синтеза двух предыдущих подходов. Обучить нейронную сеть означает сообщить ей ту информацию, которую мы хотим от нее получить. Данный процесс аналогичен обучению ребенка азбуке. Ему показывают букву, а потом спрашивают: «Что это за буква?» Если ответ будет неправильный, ребенку снова объясняют, как правильно.

Процесс повторяется до тех пор, пока в его памяти не останется верная информация. Такая процедура именуется «обучением с учителем».

Сущность процесса

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

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

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

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

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

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

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

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

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

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

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

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

В настоящее время используют несколько их вариантов:

  • сопряженных градиентов;
  • обратное распространение;
  • Квази-Ньютоновский;
  • псевдо-обратный;
  • обучение Кохонена;
  • Левенберга-Маркара;
  • векторный квантователь;
  • метод К-ближайших соседей (KNN)
  • установка явных отклонений.

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

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

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

Важные моменты

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

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

Разновидности

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

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

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

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

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

Варианты ускорения обучающего процесса

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

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

Этапы разработки

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

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

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

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

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

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

Заключение

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

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

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

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

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

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