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

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

Теорема 3. Существует и единственен терм t, для которого G^t =(G,p,P).

Доказательство проводится в два этапа. Сначала в G устанавливается послойная структура: строится разбиение множества вершин G: s_0 \cup s_1 \cup ... \cup s_k. Множество s_0 состоит из тех вершин, к которым не ведет ни одного ребра - из-за отсутствия ориентированных циклов такие вершины существуют. Множество s_{i + 1} состоит из тех вершин, к которым ведут ребра только из элементов s_0 \cup s_1 \cup ... \cup s_i. Последний непустой элемент в последовательности s_0 ,s_1 ,...,s_k состоит из одной вершины \tau^*, все предшествующие элементы этой последовательности непусты, а объединение всех s_i содержит все вершины G.

Доказательство основного утверждения теоремы проводится индукцией по числу слоев k.

Интерпретация сопоставляет терму сложную функцию. Она строится так. Задается некоторое множество D - область интерпретации. Каждой константе с, входящей в интерпретируемый терм t, сопоставляется элемент из D ( {\rm{c}}\in {\rm{D}} ), каждому k -местному функциональному символу f, входящему в t, сопоставляется функция k переменных f:D^k \to D (мы сохраняем одинаковое обозначение для символов и их интерпретации, это вполне соответствует интуиции и не должно приводить к путанице). Каждой переменной, входящей в интерпретируемый терм t, сопоставляется переменная, пробегающая D. В результате терму t сопоставляется функция n переменных F^t :D^n \to D, где n - число различных символов переменных, входящих в t. Эта "сложная" функция получается суперпозицией "простых" функций, соответствующих функциональным символам.

Если t \in S_0, то есть терм является константой или переменной, то вместо сложной функции F^t получаем константу или тождественную функцию id, переводящую значение переменной в него же. Если t \in S_1, то соответствующая функция является "простой". Истинные сложные функции появляются, начиная со слоя S_2.

Заметим, что заданная интерпретация терма t одновременно определяет интерпретацию каждого терма, входящего в t.

Представим процесс вычисления сложной функции F^t с помощью отмеченного графа G^t. Строится два представления: статическое (все результаты промежуточных вычислений располагаются на графе) и динамическое (шаг за шагом, слой за слоем).

Пусть задана интерпретация терма t и определены значения всех переменных, входящих в t. Тогда для любого терма \tau, входящего в t, также задана интерпретация и определены значения всех функций F^\tau  (\tau \le t). Каждой вершине \tau, входящей в граф G_0^t, сопоставляется значение функции F^\tau - элемент D. При этом вершинам нулевого слоя соответствуют значения переменных и констант, а единственной вершине последнего (выходного) слоя - значение F^t. Будем называть элементы D, соответствующие вершинам, значениями этих вершин и обозначать их Z(\tau  ).

Для каждой вершины \tau, принадлежащей ненулевому слою, можно выписать уравнение функционирования, связывающее значения вершин. Пусть {\rm{p(}}\tau {\rm{) = }}f^\tau, f^\tau \in F_k и in(\tau ) - совокупность входящих в \tau ребер. Напомним, что совокупность меток ребер, оканчивающихся в \tau,

{\rm{\{P(}}\tau {\rm{'}}{\rm{,}}\tau {\rm{)|(}}\tau '{\rm{,}}\tau {\rm{)}}\in {\rm{in(\tau )\}}}

образует разбиение множества {1,2,...,k}.

Уравнение функционирования для вершины \tau, принадлежащей ненулевому слою, имеет вид

Z(\tau ) = f^\tau  (z_1 ,...,z_k ),{\rm{ }}z_i = Z(\tau ') ( 4)
при i \in P(\tau ',\tau ),{\rm{ }}(\tau ',\tau ) \in {\rm{in}}(\tau )

В силу уравнения функционирования (4), если для входящих в \tau ребер {\rm{(}}\tau '{\rm{,}}\tau {\rm{)}}\in {\rm{in(}}\tau {\rm{)}} известны значения Z(\tau ') и задана интерпретация символа {\rm{p(}}\tau {\rm{) = }}f^\tau - метки вершины, то можно найти значение вершины Z(\tau ). На основании этого (очевидного) замечания строится динамическое представление вычисления сложной функции.

С каждой вершиной графа \tau, принадлежащей ненулевому слою, ассоциируется автомат, вычисляющий функцию f^\tau  (z_1 ,...,z_k ), где f^\tau \in F_k - метка вершины \tau. Автоматы срабатывают по слоям в дискретные моменты времени (такты) - автоматы i -го слоя в i -й момент времени. В начальный момент сформированы значения вершин нулевого слоя - известны значения переменных и констант. Они поступают на входы автоматов первого слоя в соответствии с нумерацией аргументов. После i -го такта функционирования определены значения вершин, принадлежащих слоям S_0 ,...,S_i. На i+1 -м такте автоматы i+1 -го слоя вычисляют значения вершин i+1 -го слоя, получая входные сигналы с предыдущих слоев по правилу (4) - в соответствии с метками входящих ребер.