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

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

Теорема 1 (о построении термов). Каждый терм t единственным образом представляется в виде ft_1 ...t_k, где f - первый символ в t, f \in F, число k определяется по {\rm{f(}}f \in F_k {\rm{)}}, а t_1 ,...,t_k - термы.

Эта теорема является точной формулировкой эквивалентности используемой бесскобочной и обычной записи.

Пусть u и v - выражения, то есть последовательности символов алфавита. Скажем, что u входит в v, если существуют такие выражения p и q (возможно, пустые), что v совпадает с puq.

Теорема 2 (о вхождении терма в терм). Пусть f \in F_k, t_1 ,...,t_k - термы, t представляется в виде ft_1 ...t_k, \tau - терм и \tau входит в t. Тогда или \tau совпадает с t, или \tau входит в одно из t_i (i = 1,...,k).

Доказываются эти теоремы элементарной индукцией по длине термов [3.4]. В доказательстве теоремы 2 выделяется лемма, представляющая и самостоятельный интерес.

Лемма 1. Каждое вхождение любого символа в терм \tau начинает вхождение некоторого терма в \tau.

Определим отношение между термами t_1 \le t_2 индуктивным образом "сверху вниз" - по глубине вхождения:

  1. t \le t ;
  2. если t совпадает с ft_1 ...t_k, f \in F_k и t_1 ,...,t_k - термы, то t_1 ,...,t_k \le t ;
  3. если t_1 \le t и t \le t_2, то t_1 \le t_2.

Согласно теореме 2, t_1 \le t_2 тогда и только тогда, когда t_1 входит в t_2.

Для каждого терма t определим множество входящих в него термов S^t = \{\tau |\tau \le t\}. Если t \in S_i, то при 0 \le k \le i непусты множества S_k^t = S^t \cap S_k. При этом множество S_i^t состоит из одного элемента - исходного терма t.

Свяжем с термом t ориентированный граф G_0^t с вершинами, взаимнооднозначно соответствующими термам из S^t. Будем одинаково обозначать вершины и соответствующие им термы. Пара вершин (\tau_1 ,\tau_2 ) образует ориентированное от \tau_1 к \tau_2 ребро графа G_0^t, если терм \tau_2 имеет вид ft_1 ...t_k, f \in F_k, t_1 ,...,t_k - термы и один из них t_i (i = 1,...,k) совпадает с \tau_1. Вершины графа G_0^t удобно располагать по слоям S_i^t.

Для произвольного графа G будем обозначать v(G) множество вершин, а e(G) - множество ребер G.

Возьмем для примера выражение для сложной функции

\varphi (x_1 ,x_2 ,x_3 ) = f_5 (f_3 (x_1 ,f_1 (x_1 ,x_2 )),f_4 (f_1 (x_1 ,x_2 ),f_2 (x_2 ,x_3 ))) 
. ( 3)

В принятой выше бесскобочной префиксной записи оно имеет вид

f_5 f_3 x_1 f_1 x_1 x_2 f_4 f_1 x_1 x_2 f_2 x_2 x_3 
, ( 3')

где все функциональные символы принадлежат F_2.


Рис. 3.1.

Граф G_0^t для этого терма изображен на рис. 3.1.

Для того, чтобы терм однозначно восстанавливался по графу, необходимы еще два дополнения.

  1. Сопоставим каждой вершине \tau \in \nu (G_0^t {\rm{)}} метку p(\tau ) - символ алфавита. Если вершина принадлежит нулевому слою S_0^t, то ей соответствует терм, совпадающий с символом из C \cup V. Этот символ и сопоставляется вершине в качестве метки. Если вершина принадлежит S_i^t ( i>0 ), то меткой служит функциональный символ: вершине \tau сопоставляется f \in F, если \tau имеет вид ft_1 ...t_k, где f \in F_k, а t_1 ,...,t_k - термы.
  2. Каждому ребру (\tau ',\tau ) \in {\rm{e}}(G_0^t {\rm{)}}, приходящему в вершину \tau, сопоставим метку P(\tau ', \tau ) - конечное множество натуральных чисел (номеров): пусть терм \tau имеет вид ft_1 ...t_k, где f \in F_k, а t_1 ,...,t_k - термы, тогда ребру (\tau ', \tau ) сопоставляется множество тех i ( {\rm{1}} \le {\rm{i}} \le {\rm{k}} ), для которых \tau ' совпадает с t_i. На практике в большинстве случаев эта метка состоит из одного номера, но возможны и другие варианты - так же, как функции вида f(x,x). Для графических иллюстраций удобно ребра (\tau ', \tau ), имеющие в своей метке P(\tau ', \tau ) больше одного номера, рисовать как пучок ребер, идущих от вершины \tau ' к вершине \tau - по одному такому ребру для каждого номера из P(\tau ', \tau ) ; этот номер и будет меткой соответствующего ребра из пучка.

Граф G_0^t вместе со всеми метками будем обозначать G^t. На рис. 3.1 указаны соответствующие метки для разобранного примера.

Итак, для всякого терма t построен ориентированный граф G_0^t и две функции: первая сопоставляет каждой вершине \tau \in \nu (G_0^t {\rm{)}} символ алфавита p(\tau ) \in C \cup V \cup F, вторая (обозначим ее P ) - каждому ребру (\tau ',\tau ) \in {\rm{e}}(G_0^t {\rm{)}} - конечное множество натуральных чисел P(\tau ', \tau ). Отмеченный граф - набор ( G_0^t,p,P ) обозначаем G^t. Функции p и P удовлетворяют следующему ограничению:

А) если для данного \tau \in S^t множество входящих ребер (\tau ', \tau ) непусто, то p(\tau ) = f^\tau \in F_k (является k -местным функциональным символом при некотором k ) и семейство множеств

{\rm{\{P(}}\tau {\rm{'}}{\rm{,}}\tau {\rm{)|(}}\tau {\rm{'}}{\rm{,}}\tau {\rm{)}}\in {\rm{e(}}G_0^t {\rm{) \}}}
при фиксированном \tau образует разбиение множества номеров {1,...,k}, то есть

P(\tau ',\tau ) \cap P(\tau '',\tau ) = \emptyset
при \tau ' \ne \tau '',

\forall \tau \bigcup\limits_{\tau {\rm{': (}}\tau {\rm{'}}{\rm{,}}\tau {\rm{) }}\in {\rm{e(}}G_0^t )}{P(\tau ',\tau ) = \{1,...,k\}}
.

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

Пусть G - конечный ориентированный граф, не имеющий ориентированных циклов, и в G существует и единственна такая вершина \tau^*, к которой от любой вершины ведет ориентированный путь. Пусть, далее, заданы две функции: p - на множестве вершин G со значениями в множестве символов алфавита и P - на множестве ребер G со значениями в множестве конечных наборов натуральных чисел и выполнено условие A.