Виды функций активации. Активационные функции

Скачать Viber 08.08.2019
Скачать Viber

Лабораторная работа № 1

Модели искусственного нейрона

Цель работы: приобретение навыков исследования функций активации и моделей нейронов с помощью пакета имитационного моделирования Simulink системы MATLAB.

Ключевые слова


■ весовой коэффициент нейрона;

■ взвешенный вход нейрона;

■ входной сигнал (вход) нейрона;

■ выходной сигнал (выход) нейрона;

■ нейрон;

■ слой нейронной сети;

■ смещение нейрона;


■ функция активации (передаточная функция):

■ единичная с жесткими ограничениями;

■ линейная;

■ логистическая;


Простой нейрон

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




Рис. 1.1. Структурная схема нейрона с одним скалярным входом
а ) без смещения, б ) со смещением

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

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

Выходной сигнал нейрона можно представить в виде линейной комбинации входных сигналов и 1:

.

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

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

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

Рассмотрим три наиболее часто используемые функции активации:

1) единичная функция активации с жесткими ограничениями

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

функция активации с жесткими ограничениями реализована в виде М-файла hardlim в пакете расширения Neural Network Toolbox системы MATLAB;

2) линейная функция активации ; она описывается соотношением

а ее график и условное обозначение представлены на рис. 1.3;

в пакете расширения Neural Network Toolbox линейная функция активации реализована в виде М-файла purelin;

3) логистическая функция активации ; она описывается соотношением

а ее график и условное обозначение представлены на рис. 1.4;

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

в пакете расширения Neural Network Toolbox логистическая функция активации реализована в виде М-файла logsig; благодаря свойству дифференцируемости эта функция часто используется в сетях с обучением на основе метода обратного распространения ошибки.

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

В пакете расширения Neural Network Toolbox есть и другие функции активации. Кроме того, пользователь может создавать свои собственные функции с помощью языка программирования MATLAB.

Нейрон с векторным входом

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

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

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

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

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

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

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

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

Искусственная нейронная сеть (ИНС) может рассматриваться как направленный граф с взвешенными связями, в котором искусственные нейроны являются узлами.

Матрицу весов связей обученной нейронной сети можно отнести к эвристическим моделям представления знаний.

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

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

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

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

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

По организации обучения разделяют обучение нейронных сетей с учителем (supervised neural networks), без учителя (nonsupervised).

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

В настоящее время нейронные сети применяются для решения многих неформализуемых или трудно формализуемых задач:

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

Нейронные сети можно использовать при следующих условиях:

  1. Если задачу может решать человек.
  2. Если при решении задачи можно выделить множество входных факторов (сигналов, признаков, данных и т.п.) и множество выходных факторов.
  3. Если изменения входных факторов приводит к изменению выходных.

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

  1. Постановка задачи, пригодной для решения с помощью нейронной сети.
  2. Выбор модели ИНС.
  3. Подготовка исходных данных для обучения ИНС.
  4. Обучение ИНС.
  5. Собственно решение задачи с помощью обученной ИНС

Кроме того, иногда нужен еще один этап – интерпретация решения, полученного нейронной сетью.

Структура нейронной сети

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

Рис. 8. Биологический нейрон

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

На рис. 9 показана схема искусственного нейрона.

Рис. 7.1. Схема искусственного нейрона

Состояние нейрона определяется по формуле

, (7.1)

n - число входов нейрона,

x i - значение i-го входа нейрона,

w i - вес i-го синапса.

Затем определяется значение аксона нейрона по формуле

Y = f (S ), (7.2)

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

. (7.3)

Основное достоинство этой функции в том, что она дифференцируема на всей оси абсцисс и имеет очень простую производную:

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

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

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

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

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

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

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

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

Активационная функция нейрона

Активационная функция нейрона определяет нелинейное преобразование, осуществляемое нейроном.

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

1. Пороговая функция. На рис. 7.2, а приведен ее график.

. (7.5)

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

2. Кусочно-линейная функция. Она изображена на рис. 7.2, б и опи­сы­ва­ется следующей зависимостью:

. (7.6)

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

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

Рис. 7.2. Типы активационных функций
а), г) пороговая; б) линейная; в) сигмоидальная;
д) тангенциальная; е) радиально-базисная активационные функции

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

В общем виде сигмоидальная активационная функция описывается зависимостью:

, (7.7)

где a - параметр, определяющий наклон функции.

Варьированием его могут быть получены разные виды сигмоида. Наи­бо­лее часто используется a = 1. В случае бесконечно большого a сигмоидальная функция вырождается в пороговую.

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

. (7.8)

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

. (7.10)

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

4. Во введенных Брумхеадом и Лоуе нейронных сетях в качестве активационной применяется функция Гаусса (рис. 7.2, е )

Ее аргумент рассчитывается по формуле:

, (7.12)
где

z - вектор входных сигналов нейрона,

c - вектор координат центра окна активационной функции ,

s - ширина окна,

|| || - евклидово расстояние.

В теории нейронных сетей активационные функции типа

(7.13)

называются радиально-базисными функциями (РБФ), а основанные на них сети - РБФ-сетями (RBF - radial basis function).

Представление входных данных

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

Качественные данные мы можем разделить на две группы: упо­ря­до­чен­ные (ординальные) и неупорядоченные. Для определения способов ко­ди­рования этих данных рассмотрим задачу о прогнозировании ус­пеш­нос­ти лечения какого-либо заболевания. Примером упорядоченных данных мо­гут, например, являться данные о дополнительных факторах риска при данном заболевании.

А также возможным примером может быть возраст больного.

Опасность каждого фактора возрастает в таблицах при движении слева направо.

В первом случае видим, что у больного может быть несколько фак­то­ров рис­­ка одновременно. В этом случае нам необходимо использовать такое ко­ди­ро­вание, при котором отсутствует ситуация, когда разным комбинациям фак­торов со­от­ветствует одно и то же значение. Наиболее распространен способ ко­ди­ро­вания, когда каждому фактору ставится в соответствие разряд двоичного числа. Число 1 в этом разряде говорит о наличии фактора, а число 0 - о его отсутствии. Параметру нет можно поставить в соответствие число 0. Таким образом, для представления всех факторов достаточно четырех разрядного двоичного числа. Таким образом, число 1010 2 = 10 10 означает наличие у больного гипертонии и употребления алкоголя, а числу 0000 2 соответствует отсутствие у больного факторов риска. Таким образом, факторы риска будут представлены числами в диапазоне .

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

Аналогично можно поступать и для неупо­рядоченных данных, поставив в соответствие каждому значению ка­кое-либо число. Однако, это вво­дит нежелательную упорядоченность, которая может исказить данные и сильно затруднить процесс обу­чения. В качестве одного из способов решения этой про­блемы мож­но предложить поставить в соответствие каждому значению одного из входов нейронной сети. В данном случае при наличии этого значения со­от­ветству­ющий ему вход устанавливается в 1 или в 0 при противном слу­чае. Дан­ный способ не является панацеей, ибо при боль­шом количестве вариантов вход­ного значения число входов ней­рон­ной сети раз­растается до огромного количества. Это резко увеличит затраты вре­мени на обучение. В качестве ва­ри­ан­та обхода этой проблемы мож­но использовать несколько другое решение. В со­ответствие каждому зна­чению входного параметра ставится бинарный вектор, каждый раз­ряд которого соответствует отдельному входу нейронной сети. Например, если чис­ло возможных значений параметра 128, то можно ис­поль­зовать семиразрядный вектор. Тогда первому значению будет соот­ветствовать вектор 0000000, 128-му - 1111111, а, например, значению 26 - 0011011. Тогда число требуемых для кодирования параметров входов можно определить как

N = Log 2 (n ) , (7.14)
где

n - количество значений параметра,

N - количество входов.

Преобразование числовых входных данных

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

, (7.15)
где

x - исходное значение параметра,

Значение, подаваемое на вход нейронной сети.

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

Рис. 11. Распределение входных параметров

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

Рекомендуем почитать

Наверх