Одним из серьезных недостатков алгоритма с обратным распространением ошибки, используемого для обучения многослойных нейронных сетей, является слишком долгий процесс обучения, что делает неприменимым использование данного алгоритма для широкого круга задач, которые требуют быстрого решения. В настоящее время известно достаточное количество алгоритмов ускоряющих процесс обучения, таких как: QuickProp, метод сопряженных градиентов, метод Левенберга-Маркара и др. В данной статье рассматривается один из таких алгоритмов названный Resilient Propagation (Rprop) который был предложен М. Ридмиллером (M.Riedmiller) и Г. Брауном (H.Braun).
В данной статье под стандартным алгоритмом обратного распространения (backprop) условимся понимать алгоритм обратного распространения ошибки, использующий метод градиентного спуска, и, говоря о недостатках этого алгоритма, будем подразумевать недостатки метода градиентного спуска.
В отличие от стандартного алгоритма Backprop, RProp использует только знаки частных производных для подстройки весовых коэффициентов. Алгоритм использует так называемое «обучение по эпохам», когда коррекция весов происходит после предъявления сети всех примеров из обучающей выборки.
Для определения величины коррекции используется следующее правило
$\Delta_{ij}^{(t)} =\left\{ {\eta^+\,\Delta_{ij}^{(t)},\,\frac{\partial E^{(t)}}{\partial w_{ij}}\,\frac{\partial E^{(t-1)}}{\partial w_{ij}}\,>\,0} \atop{\eta^-\,\Delta_{ij}^{(t)},\,\frac{\partial E^{(t)}}{\partial w_{ij}}\,\frac{\partial E^{(t-1)}}{\partial w_{ij}}\,<\,0}\right\}$, (1)
$$0\,<\,\eta^-<1\,<\eta^+$$
Если на текущем шаге частная производная по соответствующему весу $w_{ij}$поменяла свой знак, то это говорит о том, что последнее изменение было большим, и алгоритм проскочил локальный минимум (соответствующую теорему можно найти в любом учебнике по математическому анализу), и, следовательно, величину изменения необходимо уменьшить на $\eta$ и вернуть предыдущее значение весового коэффициента: другими словами необходимо произвести 'откат'.
$\Delta\,w_{ij}\,(t)\,=\,\Delta\,w_{ij}\,(t)\,-\,\Delta_{ij}^{(t-1)}$, (2)
Если знак частной производной не изменился, то нужно увеличить величину коррекции на $\eta^+$ для достижения более быстрой сходимости. Зафиксировав множители $\eta^-$ и $\eta^+$, можно отказаться от глобальных параметров настройки нейронной сети, что также можно рассматривать как преимущество рассматриваемого алгоритма перед стандартным алгоритмом Backprop.
Рекомендованные значения для $\eta^-$= 0.5, $\eta^+$= 1.2, но нет никаких ограничений на использование других значений для этих параметров.
Для того, чтобы не допустить слишком больших или малых значений весов, величину коррекции ограничивают сверху максимальным $\Delta_{max}$ и снизу минимальным $\Delta_{min}$ значениями величины коррекции, которые по умолчанию, соответственно, устанавливаются равными 50 и 1.0E-6.
Начальные значения для всех $\Delta_{ij}$ устанавливаются равными 0.1. Опять же, это следует рассматривать лишь как рекомендацию, и в практической реализации можно задать другое значение для инициализации.
Для вычисления значения коррекции весов используется следующее правило:
$\Delta\,w_{ij}\,(t)\,=\begin{Bmatrix} {-\,\Delta _{ij}^{(t)},\,\frac{\partial\,E^{(t)}}{\partial\,w_{ij}} \,>\,0} \\ {+\,\Delta _{ij}^{(t)},\,\frac{\partial\,E^{(t)}}{\partial\,w_{ij}} \,<\,0} \\ {0,\,\frac{\partial\,E^{(t)}}{\partial\,w_{ij}}\,=\,0} \end{Bmatrix}$, (3)
Если производная положительна, т.е. ошибка возрастает, то весовый коэффициент уменьшается на величину коррекции, в противном случае – увеличивается.
Затем подстраиваются веса:
$w_{ij}(t\,+\,1) = w_{ij}(t)\,+\,\Delta\,w_{ij}(t)$, (4)
Алгоритм
Данный алгоритм сходится в 4-5 раз быстрее, чем стандартный алгоритм Backprop.