Изменения

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

Обсуждение участника:Mishenkoil

2628 байт убрано, 14:02, 9 мая 2022
инициализация Xavier
== Инициализация сети ==
Принцип выбора начальных значений настраиваемых параметров для преобразований, составляющих модель очень важен: установка всех параметров в 0 будет серьезным препятствием для обучения, так как ни один из параметров изначально не будет активен. Присваивать параметрам значения из интервала <tex>[-1, 1]</tex> — тоже обычно не лучший вариант — на самом деле, иногда (в зависимости от задачи и сложности модели) от правильной инициализации модели может зависеть, достигнет она высочайшей производительности или вообще не будет сходиться. Даже если задача не предполагает такой крайности, удачно выбранный способ инициализации настраиваемых параметров может значительно влиять на способность модели к обучению, так как он предустанавливает параметры модели с учетом функции потерь<ref>[https://habr.com/company/wunderfund/blog/315476/ Тонкая настройка нейронной сети, Habr]</ref>.===Инициализация случайными числами===
Всегда можно выбрать случайно начальное приближениеРассмотрим линейный нейрон:*<tex>y=w^Tx+b=\sum(w_i x_i)+b=\sum(y_i)+b</tex>Его дисперсия (считаем настраиваемые параметры и входные данные независимыми):*<tex>\mathrm{Var}[y_i]=\mathrm{Var}[w_i x_i]=\mathrm{E}[x_i]^2\mathrm{Var}[w_i]+\mathrm{E}[w_i]^2\mathrm{Var}[x_i]+\mathrm{Var}[w_i]\mathrm{Var}[x_i]</tex> ([https://en.wikipedia.org/wiki/Variance#Product_of_independent_variables см. дисперсия произведения])Если отнормировать входные данные и подобрать настраиваемые параметры, чтобы среднее было нулевым, получится:*<tex>(\mathrm{E}[x_i]=0, но лучше выбирать определённым образом\mathrm{E}[w_i]=0) \Rightarrow \mathrm{Var}[y_i]=\mathrm{Var}[w_i]\mathrm{Var}[x_i]</tex>Поскольку $x_i$ мы отнормировали, ниже приведены самые распространённые а $w_i$ из ниходного распределения, то все дисперсии одинаковые:*<tex>\mathrm{Var}[y]=\mathrm{Var}[\sum\limits_{i=1}^{n_{in}}[y_i]]=\sum\limits_{i=1}^{n_{in}}[w_i x_i]=n_{in} \mathrm{Var}[w_i]\mathrm{Var}[x_i]</tex>Отсюда видно, что дисперсия результата линейно зависит от дисперсии входных данных с коэффициентом $n_{in} \mathrm{Var}[w_i]$.
* Метод инициализации Завьера (Xavier) (иногда — метод Glorot’а)<refЕсли коэффициент будет $>[http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf Understanding the difficulty of training deep feedforward neural networks]</ref>. Основная идея этого метода — упростить прохождение сигнала через слой во время как прямого1$ это приведет к увеличению дисперсии с каждым новым преобразованием, так и обратного распространения ошибки для линейной функции (этот метод также хорошо работает для сигмоидной что может привести к ошибкам или насыщению функцииактивации, так как участок, где она ненасыщена, также имеет линейный характер)что негативно скажется на обучении сети. При вычислении параметров этот метод опирается на вероятностное распределение (равномерное или нормальное) с дисперсией, равной <tex>\mathrm{Var}(W) = {2 \over{n_{in} + n_{out}}}</tex>, где <tex>n_{in}</tex> и <tex>n_{out}</tex> — количества нейронов в предыдущем и последующем слоях соответственно;
* Если коэффициент будет $<1$ это приведет к снижению дисперсии с каждым новым преобразованием с около нулевым промежуточным представлением, что тоже негативно скажется на обучении сети. Поэтому для начальной инициализации настраиваемых параметров стоит использовать такое распределение, что $\mathrm{Var}[w_i]=\frac{1}{n_{in}}$, которое позволит сохранить дисперсию входных данных. ===Метод инициализации Ге Завьера (HeXavier) — вариация метода Завьера<ref>[http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf Understanding the difficulty of training deep feedforward neural networks]</ref>.=== Предыдущий подход хорошо работает, больше подходящая функции ReLUкогда размерность наших данных не изменяется после преобразований $(n_{in} == n_{out})$, компенсирующая тот факт, что эта функция возвращает нуль для половины области определенияно так бывает не всегда. А именно, в этом случае <tex>В качестве компромисса Xavier Glorot и Yoshua Bengio предлагают инициализировать параметры из распределения с дисперсией $\mathrm{Var}(W) [w_i]= \frac{2 }{n_{in}+n_{out}}$. Для равномерного распределения $U$ это будет:*<tex>w_i \sim U[-\frac{\sqrt{6}}{\sqrt{n_{in}+n_{out}}},\frac{\oversqrt{6}}{\sqrt{n_{in}+n_{out}}}]</tex> Этот способ инициализации хорошо подойдет для симметричных относительно нуля функций активации (гиперболический тангенс, сигмоид), для ReLU<ref>[https://arxiven.wikipedia.org/pdfwiki/1502.01852.pdf Delving Deep into RectifiersRectifier_(neural_networks) ReLU, Wikipedia]</ref>данный способ не подходит.
== Граф вычислений ==
[[Категория: Машинное обучение]]
[[Категория: Глубокое обучение]]
 
==Применение симметричной версии локальной леммы==
 
{{Задача
|definition=Пусть $G$ - граф, степени всех вершин которого не больше $d$, $P_i$ - непересекающиеся подмножества множества вершин графа $G$ такие, что <tex>|P_i| > 2e \cdot d</tex>. Тогда можно выбрать в каждом $P_i$ по вершине так, что никакие две соединенные ребром вершины не будут выбраны.
}}
 
'''Решение:'''<br>
Уменьшим при необходимости некоторые $P_i$ так, чтобы для всех $i$ выполнялось <tex>|P_i| = k</tex>, где <tex>k = 2ed + 1</tex>. Будем выбирать вершины <tex>x_i \in P_i</tex> случайно и независимо. Каждому ребру <tex>(u,v)</tex> графа $G$ сопоставим событие $A_{(u, v)}$, обозначающее, что оба конца $u$, $v$ этого ребра выбраны. Вероятность каждого такого события не больше, чем $1/k^2$. В случае, если концы ребра принадлежат одному и тому же $P_i$ или один из них не принадлежит ни одному $P_i$, вероятность такого события равна
$0$ и такие $A_{(u, v)}$ мы далее не рассматриваем. Для ребра $(u, v)$, для которого, скажем <tex>u \in P_1, v \in P_2</tex>, рассмотрим все ребра, выходящие из вершин множеств $P_1$ и $P_2$. Таких ребер, не считая ребра $(u, v)$, будет не более,
чем $2kd - 2$. Заметим, что событие $A_{(u, v)}$ не зависит от всех других событий типа <tex>A_{(u', v')}</tex>, где <tex>(u', v')</tex> - ребро, соединяющее вершины множеств, отличных от $P_1$ и $P_2$.<br> Таким образом, для применения симметричной версии локальной леммы достаточно проверить, что <tex>e(2kd − 1) / k^2 < 1</tex>, что имеет место.
 
== Источники информации ==
*[http://club.pdmi.ras.ru/oldsite/courses/07f_probmet/probmet3.pdf Конспект лекций Ф.В. Петрова {{---}} Локальная лемма Ласло Ловаса]
*[https://www.youtube.com/watch?v=upytqnd6iqs Лекция А.М.Райгородского в ШАД]
[[Категория: Дискретная математика и алгоритмы]]
[[Категория: Теория вероятности]]
50
правок

Навигация