Нейрокомпьютерные системы

Градиентные алгоритмы обучения сети

Показывать лекцию целиком

Универсальный путь обучения

Существует универсальный путь обучения нейронных сетей - минимизация оценки как неявно заданной функции параметров сети. При реализации этого подхода предполагается, что:

  • задана обучающая выборка, состоящая из векторов входных сигналов $$x^p$$ ;
  • известны требования к соответствующим выходным сигналам $$y^p$$, зафиксированные в функции оценки $$E(y^p)$$ ;
  • оценка $$E$$ по всей выборке или какой-либо ее части строится известным способом по значениям $$E(y^p)$$.
  • После подготовки (создание обучающей выборки, выбор функции оценки, предобработка входных данных и т.п.), предшествующей обучению, имеем способ вычисления некоторой функции $$E$$, минимизация которой как функции параметров настроит сеть для правильной работы.

    Особенности задачи оптимизации, возникающей при обучении нейронных сетей

    Задачи оптимизации нейронных сетей имеют ряд специфических ограничений. Они связаны с огромной размерностью задачи обучения. Число параметров может достигать $$10^8$$ и более. В простейших программных имитаторах на персональных компьютерах подбирается $$10^3$$ - $$10^4$$ параметров. Из-за высокой размерности возникают два требования к алгоритму:

  • Ограничение по памяти. Пусть $$n$$ - число параметров. Если алгоритм требует затрат памяти порядка $$n^2$$, то он вряд ли применим для обучения. Желательно иметь алгоритмы, которые требуют затрат памяти $$kn, k=const$$.
  • Возможность параллельного вычисления наиболее трудоемких этапов алгоритма, и желательно нейронной сетью.
  • Обученный нейрокомпьютер должен с приемлемой точностью решать все тестовые задачи. Поэтому задача обучения становится многокритериальной задачей оптимизации: нужно найти точку общего минимума большого числа функций. Обучение нейрокомпьютера исходит из гипотезы о существовании этой точки.
  • Обученный нейрокомпьютер должен иметь возможность приобретать новые навыки без утраты старых. Возможно более слабое требование: новые навыки могут сопровождаться потерей точности в старых, но потеря не должна быть существенной. Это означает, что в достаточно большой окрестности найденной точки общего минимума оценок их значения незначительно отличаются от минимальных. Итак, имеем четыре специфических ограничения, выделяющих обучение нейрокомпьютера из общих задач оптимизации:
  • астрономическое число параметров;
  • необходимость высокого параллелизма при обучении;
  • многокритериальность решаемых задач;
  • необходимость найти достаточно широкую область, в которой значения всех минимизируемых функций близки к минимальным.
  • Учет ограничений при обучении

    Для параметров сети возможны ограничения простейшего вида:

    $$\begin{align*} w_{i\min} \le w_i \le w_{i\max}. \end{align*} $$

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

    Учесть ограничения можно, например, методом штрафных функций либо методом проекций:

  • Использование метода штрафных функций означает, что в оценку $$E$$ добавляется штрафы за выход параметров из области ограничений. В~градиент $$E$$ вводятся производные штрафных функций.
  • Проективный метод означает, что если в сети предлагается изменение параметров $$w_i\colon = W_i$$ и $$W_i$$ для некоторых $$i$$ выходит за ограничения, то следует положить
  • $$\begin{align*} w_i\colon = \left \{ \begin{array}{rcl} W_i,\quad \mbox{ если } w_{i\min} \le W_i \le w_{i\max}\\ w_{i\max},\quad \mbox{ если } W_i > w_{i\max}\\ w_{i\min},\quad \mbox{ если } W_i < w_{i\min}\\ \end{array} \right. \end{align*} $$

    Практика показывает, что проективный метод не приводит к затруднениям. Обращение со штрафными функциями менее успешно. Далее будем считать, что ограничения учтены одним из методов, и будем говорить об обучении как о безусловной минимизации.

    Выбор направления минимизации

    Пусть задано начальное значение вектора параметров $$w^0$$ и вычислена функция оценки $$E=E(w^0)$$. Процедура одномерной оптимизации дает приближенное положение минимума $$e(x)=E(w^0+xs)$$ (вообще говоря, локального).

    Наиболее очевидный выбор направления $$s$$ для одномерной оптимизации - направление антиградиента $$E$$:

    $$\begin{align*} s = -\nabla E. \end{align*}$$

    Выберем на каждом шаге это направление, затем проведем одномерную оптимизацию, потом снова вычислим градиент $$E$$ и т.д. Это - метод наискорейшего спуска, который иногда работает хорошо. Но неиспользование информации о кривизне функции оценки (целевой функции) и резкое замедление минимизации в окрестности точки оптимального решения, когда градиент принимает очень малые значения, часто делают алгоритм наискорейшего спуска низкоэффективным.

    Другой способ - случайный выбор направления $$s$$ для одномерной оптимизации. Он требует большого числа шагов, но зато предельно прост — ему необходимо только прямое функционирование сети с вычислением оценки.

    Партан-методы

    Для исправления недостатков наискорейшего спуска разработаны итерационный и модифицированный партан-методы.

    Итерационный партан-метод ( $$k$$ -партан) строится следующим образом. В начальной точке $$w^0$$ вычисляется градиент оценки $$E$$ и делается шаг наискорейшего спуска - для этого используется одномерная оптимизация. Далее снова вычисляется градиент $$E$$ и выполняется спуск (т.е. перемещение в направлении антиградиента), и описанный процесс повторяется $$k$$ раз. После $$k$$ шагов наискорейшего спуска получаем точку $$w^k$$ и проводим одномерную оптимизацию из $$w^0$$ в направлении $$s = w^k - w^0$$ с начальным шагом $$\alpha = 1$$. После этого цикл повторяется.

    Модифицированный партан-метод требует запоминания дополнительных параметров. Он строится следующим образом. Из $$w^0$$ делается два шага наискорейшего спуска. Получаем $$w^1$$ и $$w^2$$. Далее выполняем одномерную оптимизацию в направлении $$w^2 - w^0$$. Получаем $$w^3$$. Далее выполняется наискорейший спуск из $$w^3$$. Получаем $$w^4$$. Выполняем одномерную оптимизацию из $$w^2$$ в направлении $$w^4 - w^2$$. Получаем $$w^5$$ и~т.д. Таким образом, четные $$w^{2k}$$ получаем наискорейшим спуском из $$w^{2k-1}$$, нечетные $$w^{2k+1}$$ - одномерной оптимизацией из $$w^{2k-2}$$ в направлении $$s = w^{2k} - w^{2k-2}$$ (начальный шаг $$\alpha = 1$$ ). Как показала практика, модифицированный партан-метод в задачах обучения работает лучше, чем $$k$$ -партан.

    Одношаговый квазиньютоновский метод и сопряженные градиенты

    В тех случаях, когда является положительно определенной матрица $$D_2$$ вторых производных оценки $$E$$, наилучшим считается ньютоновское направление

    $$\begin{align*} s = - D_2^{-1}\nabla E. \end{align*} $$

    С использованием этой формулы квадратичные формы минимизируются за один шаг, однако, применять эту формулу трудно по следующим причинам:

  • Время. Поиск всех вторых производных функции $$E$$ и обращение матрицы $$D_2$$ требует больших вычислительных затрат.
  • Память. Для решения задач большой размерности $$N$$ требуется хранить $$N^2$$ элементов матрицы $$D_2^{-1}$$ — это слишком много.
  • Матрица $$D_2$$ не всегда является положительно определенной.
  • Для преодоления этих трудностей разработана масса методов. Идея квазиньютоновских методов с ограниченной памятью состоит в том, что поправка к направлению наискорейшего спуска отыскивается как результат действия матрицы малого ранга. Сама матрица не хранится, а её действие на векторы строится с помощью скалярных произведений на несколько специально подобранных векторов.

    Простейший и весьма эффективный метод основан на $$BFGS$$ формуле (Брайден-Флетчер-Гольдфард-Шанно) и использует результаты предыдущего шага. Обозначим:

    $$s_k$$ - направление спуска на $$k$$ -шаге;

    $$\alpha_k$$ - величина $$k$$ шага ( $$k$$ -й шаг - сдвиг на $$\alpha_k s_k$$ );

    $$g_k$$ - градиент функции оценки в начальной точке $$k$$ -го шага;

    $$y_k=g_k - g_{k-1}$$ - изменение градиента в результате $$k$$ -го шага.

    $$BFGS$$ - формула для направления спуска на $$k+1$$ -м шаге имеет вид:

    $$\begin{align*} s_{k+1} = - g_{k+1}+[(s_k,g_{k+1})y_k+(y_k,g_{k+1})s_k]/(y_k,s_k)-\\ - h_ks_k(s_k,g_{k+1})/(y_k,s_k) - s_k(y_k,y_k)\cdot(s_k,g_{k+1})/(y_k,s_k)^2, \end{align*} $$

    где $$(x,y)$$ - скалярное произведение векторов $$x$$ и $$y$$.

    Если одномерную оптимизацию в поиске шага проводить достаточно точно, то новый градиент $$g_{k+1}$$ будет практически ортогонален предыдущему направлению спуска, т.е. $$(s_k,g_{k+1})=0$$. При этом формула для $$s_{k+1}$$ упрощается:

    $$\begin{align*} s_{k+1} = - g_{k+1} + s_k(y_k,g_{k+1}) /(y_k,s_k). \end{align*} $$

    Это - формула метода сопряженных градиентов (МСГ), которому требуется достаточно аккуратная одномерная оптимизация при выборе шага.

    В описанных методах предполагается, что начальное направление спуска $$s_0 = -g_0$$. После некоторой последовательности из $$k$$ шагов целесообразно возвращаться к наискорейшему спуску - проводить рестарт. Он используется в тех случаях, когда очередное $$s_{k+1}$$ - плохое направление спуска, т.е. движение вдоль него приводит к слишком маленькому шагу либо вообще не дает улучшения.

    Вернуться к учебному плану