Научная электронная библиотека. Активационные функции

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

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

Активационная функция может быть различного вида . Наиболее широко используемые варианты приведены в таблице (табл.2.1).

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

  • 1. линейная,
  • 2. нелинейная с насыщением - логистическая функция или сигмоид,
  • 3. гиперболический тангенс.

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

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

Таблица 2.1

Перечень функций активации нейронов

Название

Область значений

Пороговая

Знаковая

Сигмовидная

Полулинейная

Линейная

Радиальная базисная

Полулинейная с

насыщением

Линейная с

насыщением

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

Треугольная

. (2.12)

Рис.2.12 Вид сигмоидной функции

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

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

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

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

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

Вопрос о том, сколько нужно иметь наблюдений для обучения сети, часто оказывает-ся непростым. Известен ряд эвристических правил, которые устанавливают связь между количеством необходимых наблюдений и размерами сети. Простейшее из них гласит, что количество наблюдений должно быть в 10 раз больше числа связей в сети. На самом деле это число зависит от сложности того отображения, которое должна воспроизводить ней-ронная сеть. С ростом числа используемых признаков количество наблюдений возрастает по нелинейному закону, так что уже при довольно небольшом числе признаков, скажем 50, может потребоваться огромное число наблюдений. Эта проблема носит название "проклятие размерности".

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

μ = w x l x m. (2.13)

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

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

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

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

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

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

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

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

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

Для решения задачи обучения могут быть использованы следующие (итерационные) алгоритмы:

  • 1. алгоритмы локальной оптимизации с вычислением частных производных первого порядка;
  • 1. алгоритмы локальной оптимизации с вычислением частных производных первого и второго порядка;
  • 2. стохастические алгоритмы оптимизации;
  • 3. алгоритмы глобальной оптимизации.

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

Ко второй группе относятся: метод Ньютона, методы оптими-зации с разреженными матрицами Гессе, квазиньютоновские ме-тоды, метод Гаусса-Ньютона, метод Левенберга-Марквардта и другие.

Стохастическими методами являются: поиск в случайном на-правлении, имитация отжига, метод Монте-Карло (численный ме-тод статистических испытаний).

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

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

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

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

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

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

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

При обучении сети рассчитывается некоторый функционал, характеризующий качество обучения:

, (2.14)

где J - функционал; Q - объем выборки; М - число слоев сети; q - номер выборки; S м - число нейронов выходного слоя; Ψ q - вектор сигнала на выходе сети; Ψ q opt - вектор желаемых (целевых) значений сигнала на выходе сети для выборки с номером q.

В случае использования линейной активационной функции нейронные сети первого слоя однослойные. В этом случае М = 1 и выражение для функционала принимает вид:

где - функция активации; - сигнал на входе функции активации для j-го нейрона; - вектор входного сигнала; w - число элементов вектора входа; m - число нейронов в слое; - весовые коэффициенты сети.

Включим вектор смещения в состав матрицы весов , а век-тор входа дополним элементом, равным 1.

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

Введем обозначение:

и преобразуем выражение (2.16) следующим образом:

. (2.18)

Полученные выражения упрощаются, если сеть линейна. Поскольку для такой сети выполняется соотношение , то справедливо условие . В этом случае выражение (2.16) принимает вид:

. (2.19)

Выражение (2.19) положено в основу алгоритма WH, применяемого для обучения ли-нейных нейронных сетей .

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

. (2.20)

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

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

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

где - вектор желаемых выходов сети, соответствующий входному вектору .

Инициализируем вектор весов Ω случайным образом.

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

, (2.22)

а выходы всей нейросети - выражениями:

(2.23)

В выражениях (2.22) и (2.23), F() - функция активации, например, сигмоидная функция.

Функционал квадратичной ошибки сети для данного входного образа имеет вид:

(2.24)

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

, (2.25)

где h - коэффициент скорости обучения 0<η<1.

Параметр η имеет смысл темпа обучения и выбирается достаточно малым для сходимости метода.

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

(2.26)

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

Выполняется подстройка весов скрытого слоя:

(2.27)

Вычисляются производные функции ошибки:

(2.26)

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

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

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

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

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

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

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

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

Теоретические задачи

  • определить решаемую проблему нейросетью (классификация, прогнозирование, модификация);
  • определить входные (тип: изображение, звук, размер: 100x100, 30x30, формат: RGB, в градациях серого) и выходные данные (количество классов);
  • определить топологию сверточной сети (количество сверточных, подвыборочных, полносвязанных слоев; количество карт признаков, размер ядер, функции активации).

Введение

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

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

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

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

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

СНС состоит из разных видов слоев: сверточные (convolutional) слои, субдискретизирующие (subsampling, подвыборка) слои и слои «обычной» нейронной сети – персептрона, в соответствии с рисунком 1.


Рисунок 1 – топология сверточной нейронной сети

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

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

Сверточные сети являются удачной серединой между биологически правдоподобными сетями и обычным многослойным персептроном. На сегодняшний день лучшие результаты в распознавании изображений получают с их помощью. В среднем точность распознавания таких сетей превосходит обычные ИНС на 10-15%. СНС – это ключевая технология Deep Learning.

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

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

Модель нейрона


Топология сверточной нейросети

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

Можно выделить следующие этапы влияющие на выбор топологии:

  • определить решаемую задачу нейросетью (классификация, прогнозирование, модификация);
  • определить ограничения в решаемой задаче (скорость, точность ответа);
  • определить входные (тип: изображение, звук, размер: 100x100, 30x30, формат: RGB, в градациях серого) и выходных данные (количество классов).
Решаемая моей нейросетью задача – классификация изображений, конкретно лиц. Накладываемые ограничения на сеть - это скорость ответа – не более 1 секунды и точность распознавания не менее 70%. Общая топология сети в соответствии с рисунком 2.


Рисунок 2 - Топология сверточной нейросети

Входной слой

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

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

Входные данные каждого конкретного значения пикселя нормализуются в диапазон от 0 до 1, по формуле:

Сверточный слой

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

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


Рисунок 3 - Организация связей между картами сверточного слоя и предыдущего

Размер у всех карт сверточного слоя – одинаковы и вычисляются по формуле 2:

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

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

Изначально значения каждой карты сверточного слоя равны 0. Значения весов ядер задаются случайным образом в области от -0.5 до 0.5. Ядро скользит по предыдущей карте и производит операцию свертка, которая часто используется для обработки изображений, формула:

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


Рисунок 4 - Операция свертки и получение значений сверточной карты (valid)


Операция свертки и получение значений сверточной карты. Ядро смещено, новая карта получается того же размера, что и предыдущая (same)

При этом в зависимости от метода обработки краев исходной матрицы результат может быть меньше исходного изображения (valid), такого же размера (same) или большего размера (full), в соответствии с рисунком 5.


Рисунок 5 - Три вида свертки исходной матрицы

В упрощенном виде этот слой можно описать формулой:

При этом за счет краевых эффектов размер исходных матриц уменьшается, формула:

Подвыборочный слой

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

Обычно в подвыборочном слое применяется функция активации RelU. Операция подвыборки (или MaxPooling – выбор максимального) в соответствии с рисунком 6.


Рисунок 6 - Формирование новой карты подвыборочного слоя на основе предыдущей карты сверточного слоя. Операция подвыборки (Max Pooling)

Формально слой может быть описан формулой:

Полносвязный слой

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

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

Выходной слой

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

Выбор функции активации

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

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

Функция активации сигмоиды

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

График сигмоидальной функции в соответствии с рисунком ниже:

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

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

Сигмоидальная функция является:

  • непрерывной;
  • монотонно возрастающей;
  • дифференцируемой.

Функция активации гиперболический тангенс

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

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

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

График функции ReLU в соответствии с рисунком ниже:

Преимущества использования ReLU:

  • ее производная равна либо единице, либо нулю, и поэтому не может произойти разрастания или затухания градиентов, т.к. умножив единицу на дельту ошибки мы получим дельту ошибки, если же мы бы использовали другую функцию, например, гиперболический тангенс, то дельта ошибки могла, либо уменьшиться, либо возрасти, либо остаться такой же, то есть, производная гиперболического тангенса возвращает число с разным знаком и величиной, что можно сильно повлиять на затухание или разрастание градиента. Более того, использование данной функции приводит к прореживанию весов;
  • вычисление сигмоиды и гиперболического тангенса требует выполнения ресурсоемких операций, таких как возведение в степень, в то время как ReLU может быть реализован с помощью простого порогового преобразования матрицы активаций в нуле;
  • отсекает ненужные детали в канале при отрицательном выходе.
Из недостатков можно отметить, что ReLU не всегда достаточно надежна и в процессе обучения может выходить из строя («умирать»). Например, большой градиент, проходящий через ReLU, может привести к такому обновлению весов, что данный нейрон никогда больше не активируется. Если это произойдет, то, начиная с данного момента, градиент, проходящий через этот нейрон, всегда будет равен нулю. Соответственно, данный нейрон будет необратимо выведен из строя. Например, при слишком большой скорости обучения (learning rate), может оказаться, что до 40% ReLU «мертвы» (то есть, никогда не активируются). Эта проблема решается посредством выбора надлежащей скорости обучения.

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

Обучающая выборка состоит из положительных и отрицательных примеров. В данном случае из лиц и “не лиц”. Соотношение положительных к отрицательным примерам 4 к 1, 8000 положительных и 2000 отрицательных.

В качестве положительной обучающей выборки использовалась база данных LFW3D . Она содержит цветные изображения фронтальных лиц типа JPEG, размером 90x90 пикселей, в количестве 13000. База данных предоставляется по FTP, доступ осуществляется по паролю. Для получения пароля необходимо заполнить на главной странице сайта простую форму, где указать свое имя и электронную почту. Пример лиц из базы данных показан в соответствии с рисунком ниже:

В качестве отрицательных обучающих примеров использовалась база данных SUN397 , она содержит огромное количество всевозможных сцен, которые разбиты по категориям. Всего 130000 изображений, 908 сцен, 313000 объектов сцены. Общий вес этой базы составляет 37 GB. Категории изображений весьма различны и позволяют выбирать более конкретную среду, где будет использоваться конечное ПС. Например, если априори известно, что детектор лиц предназначен только для распознавания внутри помещения, то нет смысла использовать обучающую выборку природы, неба, гор и т.д. По этой причине автором работы были выбраны следующие категории изображений: жилая комната, кабинет, классная комната, компьютерная комната. Примеры изображений из обучающей выборки SUN397 показаны в соответствии с рисунком ниже:

Результаты

Прямое распространение сигнала от входного изображения размером 90х90 пикселей занимает 20 мс (на ПК), 3000 мс в мобильном приложении. При детектировании лица в видеопотоке в разрешении 640х480 пикселей, возможно детектировать 50 не перекрытых областей размером 90х90 пикселей. Полученные результаты с выбранной топологией сети хуже по сравнению с алгоритмом Виолы-Джонса.

Выводы

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

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

Подвыборочный слой дает:

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

Возможные улучшения

  • рассмотреть нейросети Fast-RCNN, YOLO;
  • распараллеливание процесса обучения на графические процессоры;
  • использование Android NDK (C++) для улучшения производительности

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

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

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

Таким образом, если обозначить функцию активации как F, выходной сигнал Y нейрона зависит от вектора входных значений и вектора весовых коэффициентов следующим образом:

Y = F(X1*W1 + X2*W2 + … + Xn*Wn)

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

Линейная функция активации

График линейной функции активации показан на рис. 4-3. Как видите, этот график представляет собой прямую линию, угол наклона которой зависит от константы k, а величина сдвига по горизонтальной оси координат - от константы t.

4.

5.

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

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



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

Пусть решением некоторой задачи является функция Y = F(X), заданная параметрами входных-выходных данных (X 1 , Y 1), (X 2 , Y 2), …, (X N , Y N), для которых Y k = F(X k) (k = 1, 2, …, N).

Обучение состоит в поиске (синтезе) функции G, близкой к F в смысле некторой функции ошибки E. (см. рис. 1.8).

Если выбрано множество обучающих примеров – пар (X N , Y N) (где k = 1, 2, …, N) и способ вычисления функции ошибки E, то обучение нейронной сети превращается в задачу многомерной оптимизации, имеющую очень большую размерность, при этом, поскольку функция E может иметь произвольный вид обучение в общем случае – многоэкстремальная невыпуклая задача оптимизации.

Для решения этой задачи могут использоваться следующие (итерационные) алгоритмы:

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

· градиентный алгоритм (метод наискорейшего спуска),

· методы с одномерной и двумерной оптимизацией целевой функции в направлении антиградиента,

· метод сопряженных градиентов,

· методы, учитывающие направление антиградиента на нескольких шагах алгоритма;

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

· метод Ньютона,

· методы оптимизации с разреженными матрицами Гессе,

· квазиньютоновские методы,

· метод Гаусса-Ньютона,

· метод Левенберга-Марквардта и др.;

3. стохастические алгоритмы оптимизации:

· поиск в случайном направлении,

· имитация отжига,

· метод Монте-Карло (численный метод статистических испытаний);

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

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

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

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

Можно привести следующую сильно упрощенную модель биологической нейронной сети:

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

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

Нейронные сети в искусственном интеллекте – это упрощенные модели биологических нейронных сетей.

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

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

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

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

· множества входных узлов, которые образуют входной слой;

· одного или нескольких скрытых слоев вычислительных нейронов;

· одного выходного слоя нейронов.

Многослойный персептрон представляет собой обобщение однослойного персептрона Розенблатта. Примером многослойного персептрона является следующая модель нейронной сети:

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

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

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

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

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

Таблица 7.1 Функции активации нейронов

Название Формула Область значений
Линейная f (s ) = k s (-∞, ∞)
Полулинейная (0, ∞)
Логистическая (сигмоидальная) (0, 1)
Гиперболический тангенс (сигмоидальная) (-1, 1)
Экспоненциальная (0, ∞)
Синусоидальная (-1, 1)
Сигмоидальная (рациональная) (-1, 1)
Шаговая (линейная с насыщением) (-1, 1)
Пороговая (0, 1)
Модульная (0, ∞)
Знаковая (сигнатурная) (-1, 1)
Квадратичная (0, ∞)

Рис. 7.2. Примеры активационных функций:

а - функция единичного скачка; б - линейный порог (гистерезис);

в - сигмоид (логистическая функция);

г - сигмоид (гиперболический тангенс)

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

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

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

Классификация нейронных сетей и их свойства

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



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

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

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

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

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

Полносвязные (рис.7.3, а);

Многослойные или слоистые (рис. 7.3, б);

Слабосвязные (с локальными связями) (рис. 7.3, в).

Рис. 7.3. Архитектуры нейронных сетей:

а - полносвязная сеть, б - многослойная сеть с последовательными

связями, в - слабосвязные сети

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

В многослойных нейронных сетях нейроны объединяются в слои. Слой содержит совокупность нейронов с едиными входными сигналами. Число нейронов в слое может быть любым и не зависит от количества нейронов в других слоях. В общем случае сеть состоит из Q слоев, пронумерованных слева направо. Внешние входные сигналы подаются на входы нейронов входного слоя (его часто нумеруют как нулевой), а выходами сети являются выходные сигналы последнего слоя. Кроме входного и выходного слоев в многослойной нейронной сети есть один или несколько скрытых слоев. Связи от выходов нейронов некоторого слоя q к входам нейронов следующего слоя (q +1) называются последовательными. Внутри одного слоя используется одна и та же функция активации.

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

Рассмотрим три наиболее распространенные формы функции активации.

Единичная функция активации с жестким ограничениям hardlim. Эта функция описывается соотношением a = hardlim(n ) = 1(n ) и показана на рис. 2.2. Она равна 0, если n < 0, и 1, если n ³ 0.

В состав ППП Neural Network Toolbox входит М-функция hardlim, реализующая функцию активации с жесткими ограничениями. Теперь можно построить график этой функции, применяя операторы языка MATLAB:

plot(n,hardlim(n),"c+:");

В результате получим график функции hardlim в диапазоне значений входа от –5 до + 5 (рис. 2.2).

Линейная функция активации purelin. Эта функция описывается соотношением
a = purelin(n ) = n и показана на рис. 2.3.

Рис. 2.3.

Логистическая функция активации logsig.Эта функция описывается соотношением
a = logsig(n ) = 1/(1 + exp(–n )) и показана на рис. 2.4. Она принадлежит к классу сигмоидальных функций, и ее аргумент может принимать любое значение в диапазоне от –¥ до +¥, а выход изменяется в диапазоне от 0 до 1. В ППП Neural Network Toolbox она представлена М-функцией logsig. Благодаря свойству дифференцируемости эта функция часто используется в сетях с обучением на основе метода обратного распространения ошибки.

Рис. 2.4.

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

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