Русская Википедия:Функция активации

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Файл:Logistic-curve.svg
Логистическая функция активации

В искусственных нейронных сетях функция активации нейрона определяет выходной сигнал, который определяется входным сигналом или набором входных сигналов. Стандартная компьютерная микросхема может рассматриваться как цифровая сеть функций активации, которые могут принимать значения «ON» (1) или «OFF» (0) в зависимости от входа. Это похоже на поведение линейного перцептрона в нейронных сетях. Однако только нелинейные функции активации позволяют таким сетям решать нетривиальные задачи с использованием малого числа узлов. В искусственных нейронных сетях эта функция также называется передаточной функцией.

Функции

В биологических нейронных сетях функция активации обычно является абстракцией, представляющей скорость возбуждения потенциала действия в клетке Шаблон:Sfn. В наиболее простой форме эта функция является двоичной — то есть нейрон либо возбуждается, либо нет. Функция выглядит как <math>\phi(v_i)=U(v_i)</math>, где <math>U</math> — ступенчатая функция Хевисайда. В этом случае нужно использовать много нейронов для вычислений за пределами линейного разделения категорий.

Прямая с положительным угловым коэффициентом может быть использована для отражения увеличения скорости возбуждения по мере увеличения входного сигнала. Такая функция имела бы вид <math>\phi(v_i)=\mu v_i</math>, где <math>\mu</math> — наклон прямой. Эта функция активации линейна, а потому имеет те же проблемы, что и двоичная функция. Кроме того, сети, построенные с использованием такой модели, имеют Шаблон:Не переведено 5, поскольку возбуждение приоритетных входов нейронов стремится к безграничному увеличению, так как эта функция не Шаблон:Не переведено 5.

Все проблемы, упомянутые выше, можно решить с помощью нормализуемой сигмоидной функции активации. Одна из реалистичных моделей остаётся в нулевом состоянии, пока не придёт входной сигнал, в этот момент скорость возбуждения сначала быстро возрастает, но постепенно достигает асимптоты в 100 % скорости возбуждения. Математически, это выглядит как <math>\phi(v_i)=U(v_i)\mathrm{th}\,(v_i)</math>, где гиперболический тангенс можно заменить любой сигмоидой. Такое поведение реально имеет место в биологическом нейроне, поскольку нейроны не могут физически возбуждаться быстрее некоторой определённой скорости. Эта модель, однако, имеет несколько проблем в вычислительных сетях, поскольку функция не дифференцируема, что нужно для вычисления обратной передачи ошибки обучения.

Последняя модель, которая используется в многослойных перцептронах — сигмоидная функция активации в форме гиперболического тангенса. Обычно используются два вида этой функции: <math>\phi(v_i)=\mathrm{th}\,(v_i)</math>, образ которой нормализован к интервалу [-1, 1], и <math>\phi(v_i) = (1+\exp(-v_i))^{-1}</math>, сдвинутая по вертикали для нормализации от 0 до 1. Последняя модель считается более биологически реалистичной, но имеет теоретические и экспериментальные трудности с вычислительными ошибками некоторых типов.

Альтернативные структуры

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

  • Гауссова: <math>\,\phi(v_i)=\exp\left(-\frac{\|v_i-c_i\|^2}{2\sigma^2}\right)</math>
  • Мультиквадратичная (Шаблон:Lang-en): <math>\,\phi(v_i)=\sqrt{\|v_i-c_i\|^2 + a^2}</math>
  • Обратная мультиквадратичная (Шаблон:Lang-en): <math>\,\phi(v_i)=(\|v_i-c_i\|^2 + a^2)^{-1/2}</math>

где <math>c_i</math> является вектором, представляющим центр функции, а <math>a</math> и <math>\sigma</math> являются параметрами, влияющими на расходимость радиуса.

Методы опорных векторов (SVM) могут эффективно использовать класс функций активации, который включает как сигмоиды, так и РБФ. В этом случае вход преобразуется для отражения гиперплоскости границы решений основываясь на нескольких обучающих входных данных, называемых опорными векторами <math>x</math>. О функции активации для закрытого уровня этих машин говорят как о ядре скалярного произведения (Шаблон:Lang-en), <math>K(v_i,x)=\phi(v_i)</math>. Опорные вектора представляются как центры в РБФ с ядром, равным функции активации, но они принимают единственный вид в перцептроне

<math>\,\phi(v_i)=\mathrm{th}\,\left(\beta_1 + \beta_0 \sum_j v_{i,j} x_j \right)</math>,

где для сходимости <math>\beta_0</math> и <math>\beta_1</math> должны удовлетворять некоторым условиям. Эти машины могут принимать полиномиальные функции активации любого порядка

<math>\,\phi(v_i)=\left(1+\sum_j v_{i,j} x_j \right)^p</math>Шаблон:Sfn.

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

  • Тождественная функция
  • Двоичная ступенчатая функция
  • Биполярная[1] ступенчатая функция
  • Cигмоидная функция
    • Двоичная cигмоидальная функция
    • Биполярная сигмоидная функция
  • Функция подъёма[2]

Сравнение функций активации

Некоторые желательные свойства функций активации:

  • Нелинейность – Если функция активации нелинейна, можно доказать, что двухуровневая нейронная сеть будет универсальным аппроксиматором функции Шаблон:Sfn. Тождественная функция активации не удовлетворяет этому свойству. Если несколько уровней используют тождественную функцию активации, вся сеть эквивалентна одноуровневой модели.
  • Непрерывная дифференцируемость – Это свойство желательно (RELU не является непрерывно дифференцируемой и имеет некоторые проблемы с оптимизацией, основанной на градиентном спуске, но остаётся допустимой возможностью) для обеспечения методов оптимизации на основе градиентного спуска. Двоичная ступенчатая функция активации не дифференцируема в точке 0 и её производная равна 0 во всех других точках, так что методы градиентного спуска не дают никакого успеха для неёШаблон:Sfn.
  • Область значений – Если множество значений функции активации ограничено, методы обучения на основе градиента более стабильны, поскольку представления эталонов существенно влияют лишь на ограниченный набор весов связей. Если область значений бесконечна, обучение, как правило, более эффективно, поскольку представления эталонов существенно влияют на большинство весов. В последнем случае обычно необходим меньший темп обучения.
  • Монотонность – Если функция активации монотонна, поверхность ошибок, ассоциированная с одноуровневой моделью, гарантированно будет выпуклой Шаблон:Sfn.
  • Гладкие функции с монотонной производной – Показано, что в некоторых случаях они обеспечивают более высокую степень общности.
  • Аппроксимирует тождественную функцию около начала координат – Если функции активации имеют это свойство, нейронная сеть будет обучаться эффективно, если её веса инициализированы малыми случайными значениями. Если функция активации не аппроксимирует тождество около начала координат, нужно быть осторожным при инициализации весов[3]. В таблице ниже функции активации, у которых <math>f(0)=0</math>, <math>f'(0)=1</math> и <math>f'</math> непрерывна в точке 0, помечены как имеющие это свойство.

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

Название График Уравнение Производная (по x) Область значений Порядок гладкости Монотонная Монотонная производная Аппроксимирует тождественную
функцию около начала координат
Тождественная Файл:Activation identity.svg <math>f(x)=x</math> <math>f'(x)=1</math> <math>(-\infty,\infty)</math> <math>C^\infty</math>
Да
Да
Да
Да
Да
Да
Единичная ступенька Файл:Activation binary step.svg <math>f(x) = \begin{cases}

0 & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>f'(x) = \begin{cases}

0 & x \ne 0\\ ? & x = 0\end{cases}</math>

<math>\{0,1\}</math> <math>C^{-1}</math>
Да
Да
Нет
Нет
Нет
Нет
Логистическая (сигмоида или Гладкая ступенька) Файл:Activation logistic.svg <math>f(x)=\sigma(x)=\frac{1}{1+e^{-x}}</math>Шаблон:Ref <math>f'(x)=f(x)(1-f(x))</math> <math>(0,1)</math> <math>C^\infty</math>
Да
Да
Нет
Нет
Нет
Нет
th Файл:Activation tanh.svg <math>f(x)=\mathrm{th}\,(x)=\frac{(e^{x} - e^{-x})}{(e^{x} + e^{-x})}</math> <math>f'(x)=1-f(x)^2</math> <math>(-1,1)</math> <math>C^\infty</math>
Да
Да
Нет
Нет
Да
Да
arctg Файл:Activation arctan.svg <math>f(x)=\mathrm{tg}\,^{-1}(x)</math> <math>f'(x)=\frac{1}{x^2+1}</math> <math>\left(-\frac{\pi}{2},\frac{\pi}{2}\right)</math> <math>C^\infty</math>
Да
Да
Нет
Нет
Да
Да
Softsign[4]Шаблон:Sfn Файл:Activation softsign.png x|}</math> x|)^2}</math> <math>(-1,1)</math> <math>C^1</math>
Да
Да
Нет
Нет
Да
Да
Обратный квадратный корень (Шаблон:Lang-en, ISRU)[5] Файл:Activation ISRU.svg <math>f(x) = \frac{x}{\sqrt{1 + \alpha x^2}}</math> <math>f'(x) = \left(\frac{1}{\sqrt{1 + \alpha x^2}}\right)^3 </math> <math>\left(-\frac{1}{\sqrt{\alpha}},\frac{1}{\sqrt{\alpha}}\right)</math> <math>C^\infty</math>
Да
Да
Нет
Нет
Да
Да
Шаблон:Не переведено 5 (или Полулинейный элемент)

(Шаблон:Lang-en, ReLU) [6]Шаблон:Sfn

Файл:Activation rectified linear.svg <math>f(x) = \begin{cases}

0 & x < 0\\ x & x \geqslant 0\end{cases}</math>

<math>f'(x) = \begin{cases}

0 & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>[0,\infty)</math> <math>C^0</math>
Да
Да
Да
Да
Нет
Нет
Линейный выпрямитель с «утечкой» (Шаблон:Lang-en, Leaky ReLU)Шаблон:Sfn Файл:Activation prelu.svg <math>f(x) = \begin{cases}

0,01x & x < 0\\ x & x \geqslant 0\end{cases}</math>

<math>f'(x) = \begin{cases}

0,01 & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>(-\infty,\infty)</math> <math>C^0</math>
Да
Да
Да
Да
Нет
Нет
Параметрический линейный выпрямитель (Шаблон:Lang-en, PReLU)Шаблон:Sfn Файл:Activation prelu.svg <math>f(\alpha,x) = \begin{cases}

\alpha x & x < 0\\ x & x \geqslant 0\end{cases}</math>

<math>f'(\alpha,x) = \begin{cases}

\alpha & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>(-\infty,\infty)</math>Шаблон:Ref <math>C^0</math> Да,
когда <math>\alpha \geqslant 0</math>
Да
Да
Да,
когда <math>\alpha = 1</math>
Рандомизированный линейный выпрямитель с «утечкой» (Шаблон:Lang-en, RReLU)Шаблон:Sfn Файл:Activation prelu.svg <math>f(\alpha, x) = \begin{cases}

\alpha x & x < 0\\ x & x \geqslant 0\end{cases}</math>Шаблон:Ref

<math>f'(\alpha, x) = \begin{cases}

\alpha & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>(-\infty,\infty)</math> <math>C^0</math>
Да
Да
Да
Да
Нет
Нет
Экспоненциальная линейная функция (Шаблон:Lang-en, ELU)[7] Файл:Activation elu.svg <math>f(\alpha,x) = \begin{cases}

\alpha(e^x - 1) & x < 0\\ x & x \geqslant 0\end{cases}</math>

<math>f'(\alpha,x) = \begin{cases}

f(\alpha,x) + \alpha& x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>(-\alpha,\infty)</math> <math>\begin{cases}

C_ 1 & \alpha=1 \\ C_0 & \alpha \ne 1 \end{cases} </math>

Да,
когда <math>\alpha \geqslant 0</math>
Да,
когда <math>0 \leqslant \alpha \leqslant 1</math>
Да,
когда <math>\alpha = 1</math>
Масштабированная экспоненциальная линейная функция (Шаблон:Lang-en, SELU)Шаблон:Sfn <math>f(\alpha,x) = \lambda \begin{cases}

\alpha(e^x - 1) & x < 0\\ x & x \geqslant 0\end{cases}</math> с <math>\lambda = 1,0507</math> и <math>\alpha = 1,67326</math>

<math>f'(\alpha,x) = \lambda \begin{cases}

\alpha(e^x) & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>(-\lambda\alpha,\infty)</math> <math>C^0</math>
Да
Да
Нет
Нет
Нет
Нет
Линейный S-выпрямитель (Шаблон:Lang-en, SReLU)[8] <math>f_{t_l,a_l,t_r,a_r}(x) = \begin{cases}

t_l + a_l (x - t_l) & x \leqslant t_l\\ x & t_l < x < t_r\\ t_r + a_r (x - t_r) & x \geqslant t_r\end{cases}</math>
<math>t_l, a_l, t_r, a_r</math> являются параметрами.

<math>f'_{t_l,a_l,t_r,a_r}(x) = \begin{cases}

a_l & x \leqslant t_l\\ 1 & t_l < x < t_r\\ a_r & x \geqslant t_r\end{cases}</math>

<math>(-\infty,\infty)</math> <math>C^0</math>
Нет
Нет
Нет
Нет
Нет
Нет
Обратный квадратный линейный корень (Шаблон:Lang-en, ISRLU)[5] Файл:Activation ISRLU.svg <math>f(x) = \begin{cases}

\frac{x}{\sqrt{1 + \alpha x^2}} & x < 0\\ x & x \geqslant 0\end{cases}</math>

<math>f'(x) = \begin{cases}

\left(\frac{1}{\sqrt{1 + \alpha x^2}}\right)^3 & x < 0\\ 1 & x \geqslant 0\end{cases}</math>

<math>\left(-\frac{1}{\sqrt{\alpha}},\infty\right)</math> <math>C^2</math>
Да
Да
Да
Да
Да
Да
Адаптивная кусочно-линейная функция (Шаблон:Lang-en, APL)[9] <math>f(x) = \max(0,x) + \sum_{s=1}^{S}a_i^s \max(0, -x + b_i^s)</math> <math>f'(x) = H(x) - \sum_{s=1}^{S}a_i^s H(-x + b_i^s)</math>Шаблон:Ref <math>(-\infty,\infty)</math> <math>C^0</math>
Нет
Нет
Нет
Нет
Нет
Нет
SoftPlus[10] Файл:Activation softplus.svg <math>f(x)=\ln(1+e^x)</math> <math>f'(x)=\frac{1}{1+e^{-x}}</math> <math>(0,\infty)</math> <math>C^\infty</math>
Да
Да
Да
Да
Нет
Нет
Выгнутая тождественная функция (Шаблон:Lang-en) Файл:Activation bent identity.svg <math>f(x)=\frac{\sqrt{x^2 + 1} - 1}{2} + x</math> <math>f'(x)=\frac{x}{2\sqrt{x^2 + 1}} + 1</math> <math>(-\infty,\infty)</math> <math>C^\infty</math>
Да
Да
Да
Да
Да
Да
Cигмоидно-взвешенная линейная функция (Шаблон:Lang-en, SiLU)Шаблон:Sfn <math>f(x)=x\cdot\sigma(x)</math>Шаблон:Ref <math>f'(x)=f(x)+\sigma(x)(1-f(x))</math>Шаблон:Ref <math>[\approx-0,28,\infty)</math> <math>C^\infty</math>
Нет
Нет
Нет
Нет
Нет
Нет
SoftExponentialШаблон:Sfn Файл:Activation soft exponential.svg <math>f(\alpha,x) = \begin{cases}

-\frac{\ln(1-\alpha (x + \alpha))}{\alpha} & \alpha < 0\\ x & \alpha = 0\\

       \frac{e^{\alpha x} - 1}{\alpha} + \alpha & \alpha > 0\end{cases}</math>
<math>f'(\alpha,x) = \begin{cases}

\frac{1}{1-\alpha (\alpha + x)} & \alpha < 0\\ e^{\alpha x} & \alpha \geqslant 0\end{cases}</math>

<math>(-\infty,\infty)</math> <math>C^\infty</math>
Да
Да
Да
Да
Да,
когда <math>\alpha = 0</math>
СинусоидаШаблон:Sfn Файл:Activation sinusoid.svg <math>f(x)=\sin(x)</math> <math>f'(x)=\cos(x)</math> <math>[-1,1]</math> <math>C^\infty</math>
Нет
Нет
Нет
Нет
Да
Да
Sinc Файл:Activation sinc.svg <math>f(x)=\begin{cases}
       1 & x = 0\\

\frac{\sin(x)}{x} & x \ne 0\end{cases}</math>

<math>f'(x)=\begin{cases}

0 & x = 0\\ \frac{\cos(x)}{x} - \frac{\sin(x)}{x^2} & x \ne 0\end{cases}</math>

<math>[\approx-0,217234,1]</math> <math>C^\infty</math>
Нет
Нет
Нет
Нет
Нет
Нет
Гауссова Файл:Activation gaussian.svg <math>f(x)=e^{-x^2}</math> <math>f'(x)=-2xe^{-x^2}</math> <math>(0,1]</math> <math>C^\infty</math>
Нет
Нет
Нет
Нет
Нет
Нет
Шаблон:NoteЗдесь, Шаблон:Mvar является ступенчатой функцией Хевисайда.
Шаблон:NoteШаблон:Mvar является стохастической переменной, берущейся из равномерного распределения в момент обучения, значение которой фиксируется равным математическому ожиданию распределения в момент тестирования.
Шаблон:NoteШаблон:NoteШаблон:NoteЗдесь <math>\sigma</math> является логистической функцией.

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

Название Уравнение Производные Область значений Степень гладкости
Softmax <math>f_i(\vec{x}) = \frac{e^{x_i}}{\sum_{j=1}^J e^{x_j}}</math>    для Шаблон:Mvar = 1, …, Шаблон:Mvar <math>\frac{\partial f_i(\vec{x})}{\partial x_j} = f_i(\vec{x})(\delta_{ij} - f_j(\vec{x}))</math>Шаблон:Ref <math>(0,1)</math> <math>C^\infty</math>
MaxoutШаблон:Sfn <math>f(\vec{x}) = \max_i x_i</math> <math>\frac{\partial f}{\partial x_j} = \begin{cases}
       1 & j = \underset{i}{\operatorname{argmax}} \,  x_i\\

0 & j \ne\underset{i}{\operatorname{argmax}} \, x_i\end{cases}</math>

<math>(-\infty,\infty)</math> <math>C^0</math>

Шаблон:Note Здесь <math>\delta_{ij}</math> обозначает символ Кронекера.

См. также

Примечания

Шаблон:Примечания

Литература

Шаблон:Refbegin

Шаблон:Refend Шаблон:Машинное обучение Шаблон:Rq

  1. Биполярная – принимающая значение -1 до начала координат и 1 после, в отличие от двоичной ступенчатой функции, которая принимает до начала координат значения 0.)
  2. Функция подъёма принимает значение 0 до начала координат и линейна после.
  3. Шаблон:Cite arxiv
  4. Шаблон:Cite web
  5. 5,0 5,1 Шаблон:Cite arxiv
  6. По аналогии с диодом – пропускает ток (не меняя его) в одну сторону, и не пропускает в другую.
  7. Шаблон:Cite arxiv
  8. Шаблон:Cite arxiv
  9. Шаблон:Cite arxiv
  10. Шаблон:Cite web