Ответ 1
По крайней мере на его поверхности это, по-видимому, относится к проблеме так называемого "исчезающего градиента".
Функции активации
Ваши нейроны активируются в соответствии с логистической сигмоидной функцией, f (x) = 1/(1 + e ^ -x):
Эта функция активации используется часто, поскольку она имеет несколько приятных свойств. Одним из таких хороших свойств является то, что производная от f (x) выражаема в вычислительной форме, используя значение самой функции, поскольку f '(x) = f (x) (1 - f (x)). Эта функция имеет ненулевое значение для x вблизи нуля, но быстро переходит в ноль при | x | становится большим:
Градиентный спуск
В исходной нейронной сети с логистической активацией ошибка обычно распространяется по сети через первую производную в качестве обучающего сигнала. Обычное обновление веса в вашей сети пропорционально ошибке, относящейся к этому весу, умноженной на текущее значение веса, умноженное на производную от логистической функции.
delta_w(w) ~= w * f'(err(w)) * err(w)
Как произведение трех потенциально очень малых значений, первая производная в таких сетях может стать очень малой, если веса в сети выходят за пределы "среднего" режима производной логистической функции. Кроме того, эта быстро исчезающая производная становится усугубленной добавлением большего количества слоев, потому что ошибка в слое "расщепляется" и разбивается на каждую единицу в слое. Это, в свою очередь, дополнительно уменьшает градиент в слоях ниже этого.
В сетях с более чем, скажем, двумя скрытыми слоями это может стать серьезной проблемой для обучения сети, поскольку информация о градиенте первого порядка приведет вас к тому, что весы не могут с пользой измениться.
Однако есть некоторые решения, которые могут помочь! Я могу думать о том, чтобы изменить метод обучения, чтобы использовать нечто более сложное, чем градиентный спуск первого порядка, обычно включающий информацию о производном второго порядка.
Momentum
Простейшим решением для аппроксимации с использованием информации второго порядка является включение момента импульса в обновления параметров сети. Вместо обновления параметров с помощью:
w_new = w_old - learning_rate * delta_w(w_old)
включают член импульса:
w_dir_new = mu * w_dir_old - learning_rate * delta_w(w_old)
w_new = w_old + w_dir_new
Интуитивно, вы хотите использовать информацию из прошлых производных, чтобы определить, хотите ли вы полностью следовать за новой производной (что вы можете сделать, установив mu = 0) или продолжить движение в направлении, в котором вы играли в предыдущем обновление, закаленное новой информацией о градиенте (путем установки mu > 0).
Вы можете получить еще лучше, чем это, используя "Ускоренный градиент Нестерова":
w_dir_new = mu * w_dir_old - learning_rate * delta_w(w_old + mu * w_dir_old)
w_new = w_old + w_dir_new
Я думаю, что идея заключается в том, что вместо вычисления производной по "старому" значению параметра w
вычислите ее в качестве нового параметра для w
, если вы перейдете туда и перейдете туда согласно стандартный импульсный член. Читайте больше в контексте нейронных сетей здесь (PDF).
Мешковина-Free
Учебный способ включения информации градиента второго порядка в ваш алгоритм обучения нейронной сети заключается в использовании метода Ньютона для вычисления производных первого и второго порядка вашей целевой функции по параметрам. Однако производная второго порядка, называемая матрицей Гессиана, часто чрезвычайно велика и непозволительно дорога для вычисления.
Вместо того, чтобы вычислять весь гессиан, некоторые умные исследования за последние несколько лет указали способ вычислить только значения гессиана в определенном направлении поиска. Затем вы можете использовать этот процесс для определения лучшего обновления параметров, чем градиент первого порядка.
Подробнее об этом можно узнать, прочитав исследовательский документ (PDF) или просмотрев примерная реализация.
Другие
Существует много других методов оптимизации, которые могут быть полезны для этой задачи - сопряженный градиент (PDF - определенно стоит прочитать), < "Levenberg-Marquardt (PDF), L-BFGS - но из того, что я видел в исследовательской литературе, импульсы и методы, не содержащие гесса, являются наиболее распространенными.