Опубликован: 01.03.2007 | Доступ: свободный | Студентов: 1589 / 211 | Оценка: 4.58 / 4.39 | Длительность: 20:15:00
Специальности: Программист
Лекция 3:

Быстрое дифференцирование, двойственность и обратное распространение ошибки

Двойственное функционирование и быстрое дифференцирование

Вычисление градиента сложной функции многих переменных также будет представлено как некоторый вычислительный процесс, в ходе которого сигналы перемещаются в обратном направлении - от выходных элементов графа к входным. И так же, как при вычислении сложной функции, будет явно представлено прохождение каждого узла (подобно тому, как это сделано в уравнении функционирования (4)), а весь процесс в целом будет складываться из таких элементарных фрагментов за счет структуры связей между узлами. Сама эта структура - та же самая, что и для прямого процесса.

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

Основной инструмент при построении двойственного функционирования - формула для дифференцирования "двухслойной" сложной функции нескольких переменных

$ {\frac{\partial f(A_1 (x_1 ,...,x_n ),A_2 (x_1 ,...,x_n ),...,A_k (x_1 ,...,x_n ))}{\partial x_i }}{\rm{ = }}{\sum\limits_{j = 1}^k {\frac{\partial f}{\partial A_j}}\times {\frac{\partial A_j }{\partial x_i }}} $ ( 5)
.

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

Итак, пусть G - связный (но не обязательно ориентированно связный) ориентированный граф без ориентированных циклов. Как и выше, v(G) - множество вершин G, e(G) - множество ребер. Пусть, далее, каждой вершине \tau \in {\rm{v(G)}} сопоставлена метка - символ алфавита p(\tau ), а каждому ребру {\rm{(}}\tau '{\rm{,}}\tau {\rm{)}}\in {\rm{e(G)}} сопоставляется метка - конечное множество натуральных чисел P(\tau ', \tau ) и выполнено условие согласования A: если для данного \tau \in {\rm{v(G)}} множество входящих ребер (\tau ', \tau ) непусто, то p(\tau ) = f^\tau \in F_k (является k -местным функциональным символом при некотором k ) и семейство множеств

{\rm{\{P(}}\tau {\rm{'}}{\rm{,}}\tau {\rm{)|(}}\tau '{\rm{,}}\tau {\rm{)}}\in {\rm{e(G)\}}}
при фиксированном \tau образует разбиение множества номеров {1,...,k}. Для каждой вершины \tau \in {\rm{v(G)}} обозначим множество входящих в нее ребер in(\tau ), а выходящих из нее - out(\tau ).

Пусть указана интерпретация всех символов, отмечающих вершины графа, значения переменных, отвечающих входным вершинам и уравнениям функционирования (4) определены значения Z(\tau ) для всех вершин графа. В результате определены значения всех сложных функций, формулы для которых являются термами, соответствующими вершинам графа G. Процесс вычисления Z(\tau ) будем называть прямым в противовес обратному или двойственному, к описанию которого мы переходим.

При заданных Z(\tau ) для каждой вершины и каждого ребра строятся переменные двойственного функционирования (или, более кратко, двойственные переменные ). Будем обозначать их \mu (\tau ) для вершин и \mu (\tau ', \tau ) - для ребер.

Для выходных вершин \mu (\tau ) являются независимыми переменными. Пусть их значения заданы. Для вершины \tau, не являющейся выходной, значение \mu (\tau ) есть сумма значений двойственных переменных, соответствующих выходящим из \tau ребрам:

\mu (\tau ) = \sum\limits_{(\tau ,\tau ') \in {\rm{out(}}\tau )}{\mu (\tau ,\tau ')}
. ( 6)

Для ребра (\tau ', \tau ) значение \mu (\tau ', \tau ) определяется согласно формуле (5):

\mu (\tau ',\tau ) = \mu (\tau )\sum\limits_{i \in P(\tau ',\tau )}{\frac{{\partial f^\tau  (t_1 ,...,t_k )}}{{\partial t_i }}}
. ( 7)

В формуле (7) f^\tau = p(\tau ) \in F_k - метка ребра \tau, t_1 ,...,t_k - аргументы "простой" функции f^\tau, а производные f^\tau берутся при условиях, определяемых прямым процессом:

t_j = Z(\theta ) ( 8)
при \theta \in {\rm{in}}(\tau ),{\rm{ }}j \in P(\theta ,\tau ).

Для каждого {\rm{j}}\in {\rm{\{1}},...,{\rm{k\}}} такое \theta существует и единственно в силу того, что метки входящих в вершину \tau ребер образуют разбиение множества номеров {1,...,k}.

В самом распространенном случае все метки ребер P(\tau ', \tau ) содержат по одному элементу. В этом случае формула (7) приобретает особенно простой вид

\mu (\tau ',\tau ) = \mu (\tau )\frac{{\partial f^\tau  (t_1 ,...,t_k )}}{{\partial t_{i(\tau ',\tau )}}}
где
P(\tau ',\tau ) = \{i(\tau ',\tau )\}{\rm{     (7')}}

Используя (6)-(8), можно записать правила вычисления двойственных переменных для вершин, не использующие двойственных переменных для ребер:

\mu (\tau ) \left( {= \sum\limits_{(\tau ,\theta ) \in {\rm{out(}}\tau )}{\mu (\tau ,\theta )}}\right) = 
\sum\limits_{(\tau ,\theta ) \in {\rm{out}}(\tau )}{\mu (\theta )\sum\limits_{i \in P(\tau ,\theta )}{\frac{{\partial f^\theta  (t_1 ,...,t_k )}}{{\partial t_i }}}}, ( 9)

где производные f^\theta = p(\theta ) \in F_k берутся при условиях

t_j = Z(\eta ) ( 10)
при \eta \in {\rm{in}}(\theta ),{\rm{ }}j \in P(\eta ,\theta ).

Греческими буквами \tau, \eta, \theta здесь обозначены вершины графа.

Опять же, в распространенном случае, когда все P(\tau ', \tau ) одноэлементны, применяем (7') вместо (7) и получаем

\mu (\tau ) \left( {= \sum\limits_{(\tau ,\theta ) \in {\rm{out(}}\tau )}{\mu (\tau ,\theta )}}\right) = \sum\limits_{(\tau ,\theta ) \in {\rm{out}}(\tau )}{\mu (\theta )\frac{{\partial f^\theta  (t_1 ,...,t_k )}}{{\partial t_{i(\tau ,\theta )}}}}
где
P(\tau ,\theta ) = \{i(\tau ,\theta )\}. ( 9')

Напомним, что каждой вершине \tau, принадлежащей ненулевому слою графа G, соответствуют терм \tau и сложная функция F^\tau от независимых переменных и констант, отмечающих вершины нулевого слоя G.

Процесс вычисления двойственных переменных организуется послойно от выходных вершин к входным и часто называется процессом обратного распространения (back propagation) или просто обратным процессом.

Теорема 5. Пусть задана интерпретация всех символов, отмечающих вершины графа G, определены значения независимых переменных (а также констант), соответствующих вершинам входного слоя {\rm{v}}_{{\rm{in}}} и значения независимых переменных двойственного функционирования \mu (\tau ) для вершин выходного слоя {\rm{v}}_{{\rm{out}}}. Тогда для любого \theta \in v_{in}

\mu (\theta ) = \sum\limits_{\tau \in {\rm{v}}_{{\rm{out}}}}{\mu (\tau )\frac{{\partial F^\tau  }}{{\partial x_\theta  }}}
. ( 11)

где F^\tau - соответствующая вершине \tau функция от независимых переменных и констант, отмечающих вершины нулевого слоя G, x_\theta - соответствующая вершине \theta \in v_{in} переменная или константа, а производные в (11) берутся при фиксированных значениях прочих переменных и констант.

Доказательство проводится индукцией по числу слоев. Для графов из двух слоев - нулевого и первого - теорема очевидна. Спуск от i+1 -слойных графов к i -слойным производится с помощью формулы 5.

Прохождение вершины графа и прилегающих к ней ребер при прямом и обратном процессах проиллюстрировано на рис. 3.3.


Рис. 3.3.