Научная электронная библиотека. Функции активации в нейронных сетях

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

Сигнал, полученный от сумматора, передается функции активации. Результат, полученный при вычислении этой функции, является выходным сигналом нейрона 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. Многослойными персептронами называют нейронные сети прямого распространения. Входной сигнал в таких сетях распространяется в прямом направлении, от слоя к слою. Многослойный персептрон в общем представлении состоит из следующих элементов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сигмоида

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

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

  1. Насыщение сигмоиды приводит к затуханию градиентов. Крайне нежелательное свойство сигмоиды заключается в том, что при насыщении функции с той или иной стороны (0 или 1), градиент на этих участках становится близок к нулю. Напомним, что в процессе обратного распространения ошибки данный (локальный) градиент умножается на общий градиент. Следовательно, если локальный градиент очень мал, он фактически обнуляет общий градиент. В результате, сигнал почти не будет проходить через нейрон к его весам и рекурсивно к его данным. Кроме того, следует быть очень осторожным при инициализации весов сигмоидных нейронов, чтобы предотвратить насыщение. Например, если исходные веса имеют слишком большие значения, большинство нейронов перейдет в состояние насыщения, в результате чего сеть будет плохо обучаться.
  2. Выход сигмоиды не центрирован относительно нуля. Это свойство является нежелательным, поскольку нейроны в последующих слоях будут получать значения, которые не центрированы относительно нуля, что оказывает влияние на динамику градиентного спуска (gradient descent). Если значения, поступающие в нейрон, всегда положительны (например, x > 0 поэлементно в f = ω T x + b ), тогда в процессе обратного распространения ошибки все градиенты весов ω будут либо положительны, либо отрицательны (в зависимости от градиента всего выражения f ). Это может привести к нежелательной зигзагообразной динамике обновлений весов. Однако следует отметить, что когда эти градиенты суммируются по пакету, итоговое обновление весов может иметь различные знаки, что отчасти нивелирует описанный недостаток. Таким образом, отсутствие центрирования является неудобством, но имеет менее серьезные последствия, по сравнению с проблемой насыщения.

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

Гиперболический тангенс (hyperbolic tangent, tanh) принимает на входе произвольное вещественное число, а на выходе дает вещественное число в интервале от –1 до 1. Подобно сигмоиде, гиперболический тангенс может насыщаться. Однако, в отличие от сигмоиды, выход данной функции центрирован относительно нуля. Следовательно, на практике всегда предпочтительнее использовать гиперболический тангенс, а не сигмоиду.

ReLU

В последние годы большую популярность приобрела функция активации под названием «выпрямитель» (rectifier, по аналогии с однополупериодным выпрямителем в электротехнике). Нейроны с данной функцией активации называются ReLU (rectified linear unit). ReLU имеет следующую формулу f(x) = max(0, x) и реализует простой пороговый переход в нуле.

Рассмотрим положительные и отрицательные стороны ReLU.

Положительные стороны:

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

Отрицательные стороны:

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

В настоящее время существует целое семейство различных модификаций ReLU. Далее мы рассмотрим их особенности.

Для LReLU αi имеет фиксированное значение, для PReLU αi определяется на основе данных, для RReLU αji генерируется случайным образом из заданного интервала во время обучения и остается постоянным во время тестирования.

Leaky ReLU

ReLU с «утечкой» (leaky ReLU, LReLU) представляет собой одну из попыток решить описанную выше проблему выхода из строя обычных ReLU. Обычный ReLU на интервале x < 0 дает на выходе ноль, в то время как LReLU имеет на этом интервале небольшое отрицательное значение (угловой коэффициент около 0,01). То есть функция для LReLU имеет вид f(x) = αx при x < 0 и f(x) = x при x ≥ 0 , где α – малая константа. Некоторые исследователи сообщают об успешном применении данной функции активации, но результаты не всегда стабильны.

Parametric ReLU

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

Randomized ReLU

Для рандомизированного ReLU (randomized ReLU, RReLU) угловой коэффициент на отрицательном интервале во время обучения генерируется случайным образом из заданного интервала, а во время тестирования остается постоянным. В рамках Kaggle-соревнования National Data Science Bowl (NDSB) RReLU позволили уменьшить переобучение благодаря свойственному им элементу случайности . Как сообщает победитель данного соревнования, во время обучения значение α i генерировалось случайным образом из распределения 1 / U(3, 8) , а во время тестирования значение было постоянно и равнялось математическому ожиданию: 2 / (l + u) = 2 / 11 .

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

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

Ограничение нормы вектора весов

Еще одним методом регуляризации является метод ограничения нормы вектора весов (max norm constraint). В рамках данного метода мы задаем абсолютный верхний предел для нормы вектора весов каждого нейрона. Соблюдение ограничения обеспечивается с помощью проецируемого градиентного спуска (projected gradient descent). На практике это реализуется следующим образом: обновление весов выполняется как обычно, а затем вектор весов ω каждого нейрона ограничивается так, чтобы выполнялось условие ||ω|| 2 < c . Обычно значение c составляет порядка 3 или 4. Некоторые исследователи сообщают о положительном эффекте при использовании данного метода регуляризации. Одно из полезных свойств этого метода заключается в том, что он позволяет предотвратить «взрывной» рост весов даже при слишком большой скорости обучения, потому что обновления весов всегда ограничены.

Дропаут

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

Дропаут – одни из самых популярных методов регуляризации. В 2014 году компания Google подала патентную заявку на этот метод.

7. Визуализация

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

Как известно, скорость обучения является очень чувствительным параметром. На рисунке 1 ниже мы видим, что при очень большой (very high) скорости обучения кривая ошибки будет иметь неприемлемую форму. При малой (low) скорости обучения ошибка будет уменьшаться очень медленно даже после большого количества эпох. При большой (high) скорости обучения ошибка быстро уменьшается вначале, но потом попадает в локальный минимум, в результате чего сеть может не достичь хороших результатов. В том случае, когда скорость обучения подобрана правильно (good) (красная линия), ошибка уменьшается плавно и в итоге достигает минимального значения.

Теперь давайте рассмотрим кривую ошибки в более крупном масштабе. Эпоха (epoch) соответствует однократному проходу по обучающему набору данных, соответственно, в каждую эпоху входит множество мини-пакетов (mini-batch). Если мы визуализируем ошибку для каждого мини-пакета, кривая ошибки будет иметь вид, изображенный на рисунке 2. Как уже было сказано в отношении рисунка 1, если кривая ошибки имеет форму, близкую к линейной, это свидетельствует о малой скорости обучения. Если ошибка уменьшается медленно, вероятно, скорость обучения слишком большая. «Ширина» кривой соответствует размеру мини-пакета. Если «ширина» слишком большая, то есть разброс между мини-пакетами слишком большой, значит необходимо увеличить размер мини-пакета.

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

8. Ансамбли глубоких сетей

Различные стадии обучения одной модели

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

Практический пример:

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

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

Перевод Станислава Петренко

) являются частью моей научной работы в ВУЗе, которая звучала так: «Программный комплекс детектирования лиц в видеопотоке с использованием сверточной нейронной сети». Цель работы была - улучшение скоростных характеристик в процессе детектирования лиц в видеопотоке. В качестве видеопотока использовалась камера смартфона, писалось десктопное ПС (язык 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++) для улучшения производительности

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

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

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

Рассмотрим нейрон:

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

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

Ступенчатая функция активации

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

  • Функция А = активирована, если Y > граница, иначе нет.
  • Другой способ: A = 1, если Y > граница, иначе А = 0.

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

Функция принимает значение 1 (активирована), когда Y > 0 (граница), и значение 0 (не активирована) в противном случае.

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

Представим, что мы создаем бинарный классификатор — модель, которая должна говорить “да” или “нет” (активирован или нет). Ступенчатая функция сделает это за вас — она в точности выводит 1 или 0.

Теперь представим случай, когда требуется большее количество нейронов для классификации многих классов : класс1, класс2, класс3 и так далее. Что будет, если активированными окажутся больше чем 1 нейрон? Все нейроны из функции активации выведут 1. В таком случае появляются вопросы о том, какой класс должен в итоге получиться для заданного объекта.

Мы хотим, чтобы активировался только один нейрон, а функции активации других нейронов были равна нулю (только в этом случае можно быть уверенным, что сеть правильно определяет класс). Такую сеть труднее обучать и добиваться сходимости. Если активационная функция не бинарная, то возможны значения “активирован на 50%”, “активирован на 20%” и так далее. Если активированы несколько нейронов, можно найти нейрон с наибольшим значением активационной функции (лучше, конечно, чтобы это была softmax функция, а не max . Но пока не будем заниматься этими вопросами).

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

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

Первое, что приходит в голову — линейная функция.

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

A = cx

Линейная функция представляет собой прямую линию и пропорциональна входу (то есть взвешенной сумме на этом нейроне).

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

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

Производная от A=cx по x равна с . Это означает, что градиент никак не связан с Х . Градиент является постоянным вектором, а спуск производится по постоянному градиенту. Если производится ошибочное предсказание, то изменения, сделанные ошибки, тоже постоянны и не зависят от изменения на входе delta(x).

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

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

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

Сигмоида

Сигмоида выглядит гладкой и подобна ступенчатой функции. Рассмотрим её преимущества.

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

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

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

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

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

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

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

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

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

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

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

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

ReLu

Следующая в нашем списке — активационная функция ReLu,

A(x) = max(0,x)

Пользуясь определением, становится понятно, что ReLu возвращает значение х , если х положительно, и 0 в противном случае. Схема работы приведена ниже.

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

В продолжение темы:
Решения

Алгоритмизация и программирование Алгоритмы, виды алгоритмов, описание алгоритмов. Формальное исполнение алгоритмов Термин «алгоритм», впервые употребленный в современном...

Новые статьи
/
Популярные