Telegram: @ninachely
Сегодня будем больше говорить об оптимизации, но сначала небольшой кусок теории.
У нас есть полносвязные нейронные сети (линейные слои, активации и прочие теги). А насколько хорошо работают они работают? Насколько сложные функции мы сможем приближать с их помощью?
(Cybenko, 1989)
Пусть
Тогда $\forall \varepsilon > 0, \, \forall f \,\exists \, n \in \mathbb{N},\, c, \,v_i, \,b_i \in \mathbb{R}, \, w_i \in \mathbb{R}^d$ такие, что
$$ \underset{x \in [0,1]^d}{\sup} |f(x)-g(x)| \leqslant \varepsilon $$
<aside> 💡 Смысл UAT: $\forall \, \varepsilon > 0$ мы сможем любую непрерывную функцию на $[0, 1]^d$ равномерно приблизить конечной двухслойной нейронной сетью с ошибкой, не превосходящей $\varepsilon$
</aside>
<aside> 💡 UAT не конструктивна😢
</aside>
обучение с помощью градиентного спуска (training with GD)
переобучение (overfitting)
есть связи между всеми координатами $\Rightarrow$ у нас есть очень большая вариативность в настройке весов $\Rightarrow$ большой простор для переобучения
ширина
нам гарантируется, что существует конечная ширина $n$, которая “решает” теорему, но на практике эта величина может оказаться очень большой
на практике, глубокие нейронные сети работают лучше (скажем, на практике 3-4-слойные работают лучше 2-слойных)