26
правок
Изменения
Нет описания правки
== Граф вычислений ==
Глубокие сети являются особенной формой графа вычиcлений.
[[Файл: Graph_comptree-def.png|400px450px|thumb|Рис.1. Граф вычислений для функции <tex>f(a,b)=(a+b)*(b+1)</tex>]]
Граф вычислений — это ориентированный граф, узлы которого соответствуют операциям или переменным. Переменные могут передавать свое значение в операции, а операции могут передавать свои результаты в другие операции. Таким образом, каждый узел в графе определяет функцию переменных.
Процесс передачи значений от входных нейронов к выходным называется прямым распространеним (от англ. Forward pass). После чего мы вычисляем ошибку обработанных сетью данных на выходном нейроне и, основываясь на её значении, делаем обратную передачу ошибки ([[Обратное распространение ошибки|Back propagation]]). Обратное распространение ошибки заключается в том, чтобы последовательно менять веса нейронной сети, начиная с весов выходного нейрона. Значения весов будут меняться в сторону уменьшения ошибки.
[[Файл: Graph_compilationC_graph.jpgpng|400px|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>x_{n_{in}}</tex> — входные значения, <tex>y_{n_{out}}</tex> — выходные с сети значения, <tex>w</tex> — матрица весов, изменяющая с помощью линейной комбинации значения предыдущего слоя.
Зная производные, можно искать матрицы весов <tex>w</tex> (числа, на которые умножаются входные для этого слоя значения) с помощью [[Настройка глубокой сети#Способы настройки параметров|градиентного спуска]] сдвигаемся
== Способы настройки параметров ==
[[File:basins.png|450px|thumb|right|Рисунок Рис.3. Сравение мотификаций метода градиентного спуска на ландшафте "бассейны и стены"<ref>[https://habr.com/post/318970/ Методы оптимизации нейронных сетей, Habr]</ref>.]][[File:wolby.png|450px|thumb|right|Рисунок Рис.4. Сравение мотификаций метода градиентного спуска на "шатком" ландшафте<ref>[https://habr.com/post/318970/ Методы оптимизации нейронных сетей, Habr]</ref>.]]
Ниже представлены различные вариации градиентного спуска (более подробное сравнение, применительно к данной задаче <ref>[https://habr.com/post/318970/ Методы оптимизации нейронных сетей, Habr]</ref>). Градиентный спуск — итеративный алгоритм поиска минимума или максимума функции, метриками качества алгоритма этого семейства методов являются скорость сходимости и сходимость в глобальный оптимум. Методы имеют различные преимущества на различных функциях. Так например на рисунке 3 из локального минимума метод adam и метод Нестерова не могут достигнуть глобального, а в случае "шаткого" ландшафта (рисунок 4) эти методы сходятся быстрее.