Как получить модифицированную активацию tanh, предложенную ЛеКуном?

Вопрос или проблема

В “Efficient Backprop” (http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf), Лекун и другие предлагают модифицированную активационную функцию tanh следующего вида:

$$ f(x) = 1.7159 * tanh(\frac{2}{3}*x) $$

Они утверждают, что:

  • Проще аппроксимировать полиномами
  • Говорят, что она соответствует цели, что ее вторая производная максимальна в 1

Я пытался начать с функции вида: $f(x) = a * tanh(b*x)$ и вывести значения $a$ и $b$, чтобы соответствовать вышеупомянутым свойствам.

Есть идеи, как эти константы выводятся? При каких предположениях? Совпадают ли они с ожидаемыми свойствами по конструкции?

В “Стратегии обобщения и проектирования сетей” Лекун утверждает, что он выбрал параметры, которые удовлетворяют:
$$ f (\pm1) = \pm1$$

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

Визуализация производных с использованием этого кода:

Поведение Tanh_lecun

Из его описания максимумов второй производной я делаю вывод, что третья производная $f(x)=a*tanh(bx)$ должна быть равна нулю для $ x = \pm1$. Третья производная:
$$\frac{\partial^{3} f}{\partial x^3}=\frac{-2ab³}{cosh²(bx)}\left(\frac{1}{cosh²(bx)} – 2tanh²(bx)\right) $$

Таким образом, мы приравниваем к нулю: $$1-2sinh²(bx)=0 \quad x\in\pm1$$
$$bx=arcsinh(\frac{1}{\sqrt{2}})$$
Подставляя значения в numpy, я получаю:

$$b=0.6584789484624083$$
Подставляя результат в $f(1)$, я получаю:
$$a=1.7320509044937022$$

Это означает, что между моими переменными и его есть небольшая разница. Сравнивая tanh, используя наши разные значения переменных, я получаю $\delta = 0.0012567267661376946$ для $x=1$, используя мой код numpy.

Либо я ошибся, он не имел такого точного численного решателя/таблицы значений, либо он выбрал “более красивое” число.

Однажды я пытался вывести символическое решение (без тригонометрических функций) для себя (в основном полагаясь на Wolfram Alpha для выполнения тяжелой работы), используя те же ограничения, что и @a-doering ($f(\pm1)=\pm1$ и $f”'(\pm1)=0$). Я пришел к довольно – учитывая все обстоятельства – красивым коэффициентам:

$\begin{align}
f(x) &= a \tanh(bx)
\\
a &= \sqrt{3} &&\approx 1.732050808 &&\approx 1.7159
\\
b &= \frac{-\ln(2 – \sqrt{3})}{2} &&\approx 0.658478948 &&\approx \frac{2}{3}
\end{align}$

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

Вот интерактивный график для всех, кто заинтересован в том, чтобы поиграть с ним: https://www.desmos.com/calculator/tf4udjl8cn Оригинал красным, мой зеленым. Я сомневаюсь, что между ними будет какая-либо реальная разница в результате обучения.

Дополнение

Я вернулся и перевывел это, так что вот оно.

Начните с нахождения $b$, подставив $x=1$ и вычислив $\frac{d^3}{dx^3} \tanh(b) = 0$ (фактор $a$ не влияет на третью производную). WolframAlpha дает $b = \pm\frac{1}{2}\cosh^{-1}(2) = \pm\frac{1}{2}\ln(2+\sqrt{3})$.

Поскольку подстановка $b=\frac{1}{2}\ln(2+\sqrt{3})$ гарантирует, что условие третьей производной будет выполнено при $x=1$, мы можем зафиксировать как $x$, так и $b$, и масштабировать выход, чтобы выполнить условие $f(1) = 1$. Доверяя WolframAlpha, мы имеем:

\begin{align}
a \tanh\left(\frac{\ln(2+\sqrt{3})}{2}\right) &= 1
\\
a &= \frac{1}{\tanh\left(\frac{\ln(2+\sqrt{3})}{2}\right)}
\\
&= \sqrt{3}
\end{align}

Чтобы увидеть эквивалентность с моим оригинальным ответом, отметьте, что $\ln(2+\sqrt{3}) = -\ln(2-\sqrt{3})$. Полная функция становится:
\begin{align}
f(x) &= \sqrt{3} \tanh\left( \frac{\ln(2 + \sqrt{3})}{2} x \right)
\end{align}

Ответ или решение

Производная модифицированного активационного функции tanh, предложенной Лекуном

В статье «Efficient Backprop» Янна Лекуна и других авторов, предложена модифицированная функция активации вида:

$$ f(x) = 1.7159 * \tanh\left(\frac{2}{3}x\right) $$

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

Основные свойства функции

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

  2. Фиксация значений при $x = \pm 1$: В функции Лекуна задается, чтобы $f(\pm1) = \pm1$. Это позволяет сохранить выходные значения активации в пределах, стандартных для многих задач.

  3. Максимум второй производной: Второй производной функции является максимальной в точках $x = \pm1$. Это улучшает сходимость при обучении, особенно на завершающих этапах.

Параметризация функции активации

Рассмотрим функцию в рамках общего выражения:

$$ f(x) = a \tanh(b x) $$

Здесь мы должны определить значения коэффициентов $a$ и $b$, соответствующие указанным свойствам.

  1. Определение коэффициента $b$:
    Мы хотим, чтобы $f”'(x)$ равнялось нулю в $x = \pm 1$. При нахождении выражения для третьей производной:

    $$ \frac{\partial^{3} f}{\partial x^3} = \frac{-2ab^3}{\cosh^2(bx)} \left( \frac{1}{\cosh^2(bx)} – 2\tanh^2(bx) \right) $$

    Условие $f”'(1) = 0$ дает уравнение:

    $$ 1 – 2\sinh^2(b) = 0 $$

    откуда можно получить $b$, предварительно решив уравнение:

    $$ b = \frac{1}{2} \ln(2 + \sqrt{3}) $$

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

  2. Определение коэффициента $a$:
    После нахождения $b$, используем условие $f(1) = 1$ для нахождения $a$:

    $$ a * \tanh\left(\frac{1}{2} \ln(2+\sqrt{3})\right) = 1 $$

    Таким образом, можно выразить:

    $$ a = \frac{1}{\tanh\left(\frac{1}{2} \ln(2+\sqrt{3})\right)} $$

    Это приводит нас к конечному значению:

    $$ a = \sqrt{3} \approx 1.732 $$

Итог

В результате, получаем конечную формулу для модифицированной функции активации Лекуна:

$$ f(x) = \sqrt{3} \tanh\left(\frac{1}{2} \ln(2 + \sqrt{3}) x\right) $$

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

Совершенствование этих коэффициентов, таких как $1.7159$ и $\frac{2}{3}$, нельзя считать случайным выбором, поскольку они обеспечивают производительность, оптимальную для определённых условий обучения. Подход Лекуна позволяет достичь сбалансированного отображения и доступности функций активации в рамках архитектуры нейросетей.

Оцените материал
Добавить комментарий

Капча загружается...