Изменения

Перейти к: навигация, поиск

Настройка глубокой сети

1218 байт добавлено, 22:01, 24 января 2019
Граф вычислений
Граф вычислений — это ориентированный граф, узлы которого соответствуют операциям или переменным. Переменные могут передавать свое значение в операции, а операции могут передавать свои результаты в другие операции. Таким образом, каждый узел в графе определяет функцию переменных.
Значения, которые вводятся в узлы и выходят из узлов, называются тензорами (т.е. многомерными массивами). Forward pass — то есть мы последовательно передаем информацию На рисунке 1 представлен граф вычислений для функции <tex>f(a,b)=(a+b)*(b+1)</tex>. В нейронах сетях функций имеют больше аргументов и сложнее, но смысл операций остаётся прежним. Процесс передачи значений от входных нейронов к выходнымназывается прямым распространеним (от англ. Forward pass). После чего мы вычисляем ошибку обработанных сетью данных на выходном нейроне и , основываясь на ней её значении, делаем обратную передачу, которая (Back propagation)[https://en.wikipedia.org/wiki/Backpropagation]. Back propagation заключается в том, чтобы последовательно менять веса нейронной сети, начиная с весов выходного нейрона. Значение Значения весов будут меняться в ту сторонууменьшения ошибки. [[Файл: Graph_compilation.jpg|400px|thumb|Рис.2. Граф вычислений для функции <tex>f(x,y, которая даст нам наилучший результатz)=(x+y)*z</tex>.Зелёные цифры — значения вычислений по ходу выполнения операций графа, красные — значения производной выходной функции по текущей переменной в точке <tex>(x_0=-2, y_0=5, z_0=-4)</tex>]]
[[Файл: Graph_compilation.jpg|500px|thumb|Рис.2. Граф вычислений для функции <tex>f(x,y,z)=(x+y)*z</tex>. Зелёные цифры — значения вычислений по ходу выполнения операций графа, красные — значения производной выходной функции по текущей переменной в точке <tex>(x_0=-2, y_0=5, z_0=-4)</tex>]]
Преимуществом такого представления функции является простота вычисления производных. Используя следующие правила вычисления частных производных: <tex>q=x+y:\frac{\partial q}{\partial x}=1, \frac{\partial q}{\partial y}=1;</tex>
<tex>q=xy:\frac{\partial q}{\partial x}=y, \frac{\partial q}{\partial y}=x;</tex>
<tex>\frac{\partial f}{\partial x}=\frac{\partial f}{\partial q}\frac{\partial q}{\partial y}</tex>.  Рассмотрим граф вычислений на рисунке 2 с поданными на вход значениями <tex>(x_0=-2, y_0=5, z_0=-4)</tex>. Подсчёт производных по графу вычислений производим от значения функции к значениям независимых переменных-входов.
#<tex>\frac{\partial f}{\partial f} = 1</tex>
#<tex>\frac{\partial f}{\partial q} = z_0 = -4</tex>, <tex>\frac{\partial f}{\partial z} = q_0 = 3</tex>
#<tex>\frac{\partial f}{\partial x} = \frac{\partial f}{\partial q}\frac{\partial q}{\partial x} = -4</tex>, <tex>\frac{\partial f}{\partial y} = \frac{\partial f}{\partial q}\frac{\partial q}{\partial y} = -4</tex>
 [[Файл: Schematic-diagram-of-a-general-back-propagation-neural-network.png|400px|thumb|Рис.3. Архитекутра нейронной сети: <tex>x_{N_i}</tex> — входные значения, <tex>y_{N_i}</tex> — выходные с сети значения, <tex>w</tex> — матрица весов, изменяющая с помощью линейной комбинации значения предыдущего слоя]]  Зная производные, можно искать параметры матрицы весов <tex>w</tex> (числа, на которые умножаются входные для этого слоя значения) с помощью градиентного спуска сдвигаемся
в сторону градиента (при максимизации) или обратную ему
(при минимизации) <tex>w:=w-\eta\nabla_w f</tex>, или его модификаций [http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D0%BF%D1%83%D1%81%D0%BA%D0%B0].
26
правок

Навигация