Вопрос или проблема
Мои вопросы следуют за приведенным ниже отрывком со страницы 4 из статьи Хохрайтера о LSTM:
Если $f_{l_{m}}$ – это логистическая сигмоида, то максимальное
значение $f^\prime_{l_{m}}$ равно 0,25. Если $y^{l_{m-1}}$ постоянно и
не равно нулю, то
$|f^\prime_{l_{m}}(net_{l_{m}})w_{l_{m}l_{m-1}}|$ достигает максимальных
значений, где$w_{l_{m}l_{m-1}} = {1 \over y^{l_{m-1}}} \coth \left( {1 \over 2}net_{l_{m}} \right)$,
стремится к нулю при $|w_{l_{m}l_{m-1}}| \rightarrow \infty$, и меньше
1,0 при $|w_{l_{m}l_{m-1}}| < 4,0$.
Производная сигмоиды $f_{l_{m}} = f^\prime_{l_{m}} = \sigma$ равна $\sigma(1-\sigma)$, так что, конечно, ее максимальное значение равно 0,25.
Но я не понимаю следующее:
- Откуда берется $\coth$?
- Почему $y^{l_{m-1}}$ должен быть статичным? Моё понимание заключается в том, что это активация юнита, которая меняется на каждом временном шаге.
- Умножение ненулевого положительного числа, каким может быть $f^\prime_{l_{m}}$, на $|w_{l_{m}l_{m-1}}|$, когда он приближается к бесконечности, сделает его стремящимся к бесконечности, а не к нулю. Что я пропускаю здесь?
Заранее благодарю вас за помощь.
Чтобы сначала ответить на ваши вопросы
Эта статья предполагает, что $f_i$ – это сигмоидальная функция $f_i(x) = \sigma(x) = \frac{1}{1 + e^{-x}}$.
Обратите внимание, что
$$
\frac{\partial \sigma(x)}{\partial x} = \sigma(x) (1 – \sigma(x))
$$
Поскольку
$$
\begin{align*}
& f’_{l_m}\big(\text{net}_{l_m}(t – m)\big) w_{l_m l_{m – 1}} \\
& = \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot w_{l_m l_{m – l}}, \tag{1}
\end{align*}
$$
чтобы найти максимальное значение (1) по отношению к $w_{l_m l_{m – 1}}$, мы можем вычислить производную от (1) и найти точку $w_{l_m l_{m – 1}}^*$, где производная (1), вычисленная в $w_{l_m l_{m – 1}}^*$, равна 0, т.е.,
$$
\frac{\partial \Big[\sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot w_{l_m l_{m – l}}\Big]}{\partial w_{l_m l_{m – 1}}} = 0 \tag{2}
$$
Теперь мы вычисляем производную
$$
\begin{align*}
& \frac{\partial \Big[\sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot w_{l_m l_{m – l}}\Big]}{\partial w_{l_m l_{m – 1}}} \\
& = \frac{\partial \sigma\big(\text{net}_{l_m}(t – m)\big)}{\partial \text{net}_{l_m}(t – m)} \cdot \frac{\partial \text{net}_{l_m}(t – m)}{\partial w_{l_m l_{m – 1}}} \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot w_{l_m l_{m – l}} \\
& \quad + \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \frac{\partial \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big)}{\partial \text{net}_{l_m}(t – m)} \cdot \frac{\partial \text{net}_{l_m}(t – m)}{\partial w_{l_m l_{m – 1}}} \cdot w_{l_m l_{m – l}} \\
& \quad + \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot \frac{\partial w_{l_m l_{m – 1}}}{\partial w_{l_m l_{m – 1}}} \\
& = \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big)^2 \cdot y_{l_{m – 1}}(t – m – 1) \cdot w_{l_m l_{m – 1}} \\
& \quad – \Big(\sigma\big(\text{net}_{l_m}(t – m)\big)\Big)^2 \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot y_{l_{m – 1}}(t – m – 1) \cdot w_{l_m l_{m – 1}} \\
& \quad + \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \\
& = \Big[2 \Big(\sigma\big(\text{net}_{l_m}(t – m)\big)\Big)^3 – 3 \Big(\sigma\big(\text{net}_{l_m}(t – m)\big)\Big)^2 + \sigma\big(\text{net}_{l_m}(t – m)\big)\Big] \cdot \\
& \quad \quad y_{l_{m – 1}}(t – m – 1) \cdot w_{l_m l_{m – 1}} \\
& \quad + \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \\
& = \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(2 \sigma\big(\text{net}_{l_m}(t – m)\big) – 1\Big) \Big(\sigma\big(\text{net}_{l_m}(t – m)\big) – 1\Big) \cdot \\
& \quad \quad y_{l_{m – 1}}(t – m – 1) \cdot w_{l_m l_{m – 1}} \\
& \quad + \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \\
& = 0.
\end{align*} \tag{3}
$$
Последнее равенство в (3) следует из (2).
Переставляя термины, мы можем ещё больше упростить наше уравнение:
$$
\begin{align*}
& \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(2 \sigma\big(\text{net}_{l_m}(t – m)\big) – 1\Big) \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \cdot \\
& \quad \quad y_{l_{m – 1}}(t – m – 1) \cdot w_{l_m l_{m – 1}} = \sigma\big(\text{net}_{l_m}(t – m)\big) \cdot \Big(1 – \sigma\big(\text{net}_{l_m}(t – m)\big)\Big) \\
\implies & \Big(2 \sigma\big(\text{net}_{l_m}(t – m)\big) – 1\Big) \cdot y_{l_{m – 1}}(t – m – 1) \cdot w_{l_m l_{m – 1}} = 1 \\
\implies & w_{l_m l_{m – 1}} = \frac{1}{y_{l_{m – 1}}(t – m – 1)} \cdot \frac{1}{2 \sigma\big(\text{net}_{l_m}(t – m)\big) – 1} \\
\implies & w_{l_m l_{m – 1}} = \frac{1}{y_{l_{m – 1}}(t – m – 1)} \cdot \coth\bigg(\frac{\text{net}_{l_m}(t – m)}{2}\bigg).
\end{align*} \tag{4}
$$
Последняя импликация в (4) использует следующие уравнения:
$$
\begin{align*}
\tanh(x) & = 2 \sigma(2x) – 1 \\
\tanh(\frac{x}{2}) & = 2 \sigma(x) – 1 \\
\coth(\frac{x}{2}) & = \frac{1}{\tanh(\frac{x}{2})} = \frac{1}{2 \sigma(x) – 1}
\end{align*}
$$
Долгий ответ выше должен быть достаточным, чтобы ответить на ваш вопрос 1.
Что касается 2., я полагаю, что это просто предположение для упрощения анализа.
Но я согласен, что это плохое предположение (почему? вы можете видеть, что даже если мы позволим $y_{l_{m – 1}}(t – m – 1)$ быть ненулевым, мы все равно можем сделать $\text{net}_{l_m}(t – m) = 0$, что делает $\coth$ неопределенным).
$f_{l_m}’$ – это сигмоидная функция, в которой используется экспонента, мы можем видеть, что
$$
\begin{align*}
& \lim_{w_{l_m l_{m-1}} \to \infty} \frac{w_{l_m l_{m – 1}}}{1 + e^{-\text{net}_{l_m}(t – m)}} \frac{e^{-\text{net}_{l_m}(t – m)}}{1 + e^{-\text{net}_{l_m}(t – m)}} \\
&= \lim_{w_{l_m l_{m-1}} \to \infty} \frac{w_{l_m l_{m – 1}}}{1 + e^{-\sum_{l_m^*} w_{l_m^* l_{m – 1}} y_{l_{m – 1}}(t – m – 1) }} \frac{e^{-\sum_{l_m^*} w_{l_m^* l_{m – 1}} y_{l_{m – 1}}(t – m – 1)}}{1 + e^{-\sum_{l_m^*} w_{l_m^* l_{m – 1}} y_{l_{m – 1}}(t – m – 1)}} \\
&= 0.
\end{align*}
$$
Это должно ответить на ваши вопросы.
НО!
На самом деле автор допустил ошибку в уравнении (3.2), что делает анализ немного неточным.
Под немного я имею в виду, что даже если все выводы были неверными, исправив (3.2) и разобравшись с выводами, результат все равно сохраняется (градиенты все еще исчезают).
Я запишу правильное уравнение и оставлю сортировку вам
$$
\frac{\partial \vartheta(t – q)}{\partial \vartheta(t)} = \sum_{l_1 = 1}^n \cdots \sum_{l_{q – 1} = 1}^n \prod_{m = 1}^q f_{l_{m}}'(\text{net}_{l_m}(t – m)) w_{l_{m – 1} l_m}
$$
(он написал $w_{l_m l_{m – 1}}$ вместо $w_{l_{m – 1} l_m}$.)
Ответ или решение
Вопрос о максимальных значениях производной сигмоидной функции логистической регрессии \( f’_{l_{m}} \) и весов нейронной сети в контексте статьи Хохрейтера о длительной краткосрочной памяти (LSTM) требует внимательного анализа. Давайте разберёмся по пунктам.
### 1. Происхождение функции \(\coth\)
В статье приводится выражение для весов \( w_{l_{m}l_{m-1}} \), которое связано с производной сигмоидной функции. Для его получения авторы используют утверждение, что:
\[
w_{l_{m}l_{m-1}} = \frac{1}{y^{l_{m-1}}} \coth\left( \frac{1}{2} net_{l_{m}} \right).
\]
Здесь \(\coth\) (котангенс гиперболический) появляется из преобразования функции \(\tanh\) (гиперболический тангенс), что, в свою очередь, связано с сигмоидной функцией (логистической). Мы можем использовать следующее соотношение:
\[
\tanh(x) = 2\sigma(2x) – 1,
\]
где \(\sigma(x)\) — это сигмоидальная функция. Исходя из этого, \(\coth\) можно выразить через \(\tanh\), что дает основание для использования данного подхода.
### 2. Положение относительного \(y^{l_{m-1}}\)
Относительно того, почему \( y^{l_{m-1}} \) считается постоянным, можно предположить, что это сделано для упрощения анализа. Зачастую в теориях глубокого обучения анализируется поведение некоторых слоëв при фиксированных входах.
Тем не менее, вы правы, \( y^{l_{m-1}} \) изменяется во времени, и его состояние зависит от предыдущих расчетов. Эта допустимая гипотеза, вероятно, используется для получения математических выводов, но она не учитывает динамическую природу временных рядов, что может привести к недоумениям в интерпретации.
### 3. Произведение при приближении к бесконечности
Ваша третья заметка касательно поведения функции при стремлении веса \( |w_{l_{m}l_{m-1}}| \) к бесконечности вполне логична. Однако, важно понимать, что в контексте нейронных сетей производная сигмоидной функции \( f’_{l_{m}} \) приближается к нулю, когда аргумент сигмоиды (здесь, \( net_{l_{m}} \)) становится достаточно большим или малым, и функция становится практически плоской.
В результате при рассмотрении предела:
\[
|f^\prime_{l_{m}}(net_{l_{m}}) w_{l_{m}l_{m-1}}| \to 0,
\]
поскольку \( f^\prime_{l_{m}} \) достигает своего максимума 0.25 только в определённых пределах, в то время как при большом \( |w_{l_{m}l_{m-1}}| \) значение \( |w_{l_{m}l_{m-1}}| \) может не компенсировать уменьшающее влияние производной.
Таким образом, некорректное заключение в том, что произведение может стремиться к бесконечности — на самом деле, оно стремится к нулю, похоже на тот случай, когда \( |w_{l_{m}l_{m-1}}| \to \infty \).
### Заключение
Мы рассмотрели основные моменты, связанные с производной сигмоидальной функции и весами в сетях LSTM. Эти нюансы имеют значение при изучении вопросов, касающихся исчезающих градиентов в долгосрочной памяти, и требуют внимательного анализа математических формулировок. Недочёты, связанные с фиксированными значениями либо упрощениями, могут приводить к неверным интерпретациям. Всегда необходимо учитывать динамический характер входных данных и взаимодействие между слоями нейронной сети.