50
правок
Изменения
правки x3
Инициализация {{---}} это процесс установки настраиваемых параметров для нашей глубокой сети. Выбор правильного метода инициализации важен для качества обучения нашей модели. Также это позволяет сократить время сходимости и минимизировать функцию потерь. Установка параметров в 0 Поэтому важно уметь выбрать правильный метод инициализации. ===Наивная инициализация=== Если задать все параметры нулевыми или константное значение может привести константными значениями, это приведёт к тому, что наша сеть вообще либо совсем не обучится, либо абсолютно все нейроны будут вести себя одинаково {{---}} совсем не будет то, что мы хотим получить. Глубокая сеть должна обучаться. Поэтому важно уметь выбрать правильный метод инициализацииразным признакам.
===Инициализация случайными числами===
*<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]=\mathrmmathbb{E}[x_i]^2\mathrm{Var}[w_i]+\mathrmmathbb{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>(\mathrmmathbb{E}[x_i]=0, \mathrmmathbb{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>
Поскольку ReLU несимметричная функция $f(x) = max(0, x)$, мы уже не можем утверждать, что среднее значение входных данных в каждом преобразовании будет нулевым:
*<tex>(\mathrmmathbb{E}[x_i] \neq 0, \mathrmmathbb{E}[w_i]=0)</tex><br><tex>\Rightarrow \mathrm{Var}[y_i]=\mathrmmathbb{E}[x_i]^2\mathrm{Var}[w_i] + \mathrm{Var}[w_i]\mathrm{Var}[x_i]=\mathrm{Var}[w_i](\mathrmmathbb{E}[x_i]^2 + \mathrm{Var}[x_i])=\mathrm{Var}[w_i]\mathrmmathbb{E}[x_i^2]</tex><br><tex>\Rightarrow \mathrm{Var}[y]=n_{in}\mathrm{Var}[w_i]\mathrmmathbb{E}[x_i^2]</tex>
Поэтому мы будем пытаться контролировать дисперсию не между слоями, а между входами ReLU. Пусть представление на входе было получено после применения данной функции активации к предыдущему представлению $y_{prev}$:
*<tex>x=\mathrm{ReLU}(y_{prev})</tex>
Тогда с учётом поведения ReLU и того, что $\mathrm{E}(y_{prev})=0$, можно сказать, что:
*<tex>\mathrmmathbb{E}[x_i^2]=\frac{1}{2}\mathrm{Var}[
y_{prev}]</tex><br><tex>\Rightarrow \mathrm{Var}[y]=\frac{1}{2}n_{in}\mathrm{Var}[w_i]\mathrm{Var}[y_{prev}]</tex>
Получается, что при использовании ReLU, нужно инициализировать параметры из распределения с дисперсией $\mathrm{Var}[w_i]=\frac{2}{n_{in}}$. Для нормального распределения $\mathcal N$ это будет:
*<tex>w_i \sim \mathcal N(0,\frac{2}{n_{in}})</tex>