Редактирование: Проблемы нейронных сетей
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | + | Нейронные сети считаются универсальными моделями в машинном обучении, поскольку позволяют решать широкий класс задач. Однако, при их использовании могут возникать различные проблемы. | |
− | = | + | = Проблема взрывающегося (затухающего) градиента в нейронных сетях = |
== Определение == | == Определение == | ||
Строка 15: | Строка 15: | ||
== Причины == | == Причины == | ||
− | [[Файл:SigmoidDerivative.png|upright=1.0|thumb|Рисунок 1 | + | [[Файл:SigmoidDerivative.png|upright=1.0|thumb|Рисунок 1: График сигмоиды и ее производной<ref>[https://towardsdatascience.com/derivative-of-the-sigmoid-function-536880cf918e towardsdatascience.com {{---}} Derivative of the sigmoid function]</ref>]] |
Такая проблема может возникнуть при использовании нейронных сетях классической [[Практики реализации нейронных сетей#Функции активации | функцией активации]] ''(англ. activation function)'' сигмоиды ''(англ. sigmoid)'': | Такая проблема может возникнуть при использовании нейронных сетях классической [[Практики реализации нейронных сетей#Функции активации | функцией активации]] ''(англ. activation function)'' сигмоиды ''(англ. sigmoid)'': | ||
Строка 22: | Строка 22: | ||
Эта функция часто используется, поскольку множество ее возможных значений {{---}} отрезок $[0, 1]$ {{---}} совпадает с возможными значениями вероятностной меры, что делает более удобным ее предсказание. Также график сигмоиды соответствует многим естественным процессам, показывающим рост с малых значений, который ускоряется с течением времени, и достигающим своего предела<ref>[https://en.wikipedia.org/wiki/Sigmoid_function#Applications wikipedia.org {{---}} Sigmoid function, Applications]</ref> (например, рост популяции). | Эта функция часто используется, поскольку множество ее возможных значений {{---}} отрезок $[0, 1]$ {{---}} совпадает с возможными значениями вероятностной меры, что делает более удобным ее предсказание. Также график сигмоиды соответствует многим естественным процессам, показывающим рост с малых значений, который ускоряется с течением времени, и достигающим своего предела<ref>[https://en.wikipedia.org/wiki/Sigmoid_function#Applications wikipedia.org {{---}} Sigmoid function, Applications]</ref> (например, рост популяции). | ||
− | Пусть сеть состоит из подряд идущих нейронов с функцией активации $\sigma(x)$; функция потерть ''(англ. loss function)'' $L(y) = MSE(y, \hat{y}) = (y - \hat{y})^2$ ''(англ. MSE {{---}} | + | Пусть сеть состоит из подряд идущих нейронов с функцией активации $\sigma(x)$; функция потерть ''(англ. loss function)'' $L(y) = MSE(y, \hat{y}) = (y - \hat{y})^2$ ''(англ. MSE {{---}} Mean Square Error)''; $u_d$ {{---}} значение, поступающее на вход нейрону на слое $d$; $w_d$ {{---}} вес нейрона на слое $d$; $y$ {{---}} выход из последнего слоя. Оценим частные производные по весам такой нейронной сети на каждом слое. Оценка для производной сигмоиды видна из рисунка 1. |
$\frac{\partial(L(y))}{\partial(w_d)} = \frac{\partial(L(y))}{\partial(y)} \cdot \frac{\partial(y)}{\partial(w_d)} = 2 (y - \hat{y}) \cdot \sigma'(w_d u_d) u_d \leq 2 (y - \hat{y}) \cdot \frac{1}{4} u_d$ | $\frac{\partial(L(y))}{\partial(w_d)} = \frac{\partial(L(y))}{\partial(y)} \cdot \frac{\partial(y)}{\partial(w_d)} = 2 (y - \hat{y}) \cdot \sigma'(w_d u_d) u_d \leq 2 (y - \hat{y}) \cdot \frac{1}{4} u_d$ | ||
Строка 58: | Строка 58: | ||
=== Использование другой функции активации === | === Использование другой функции активации === | ||
− | [[Файл:SigmoidTanhReLUSoftplus.png|upright=1.0|thumb|Рисунок 2 | + | [[Файл:SigmoidTanhReLUSoftplus.png|upright=1.0|thumb|Рисунок 2: Графики функций активации: sigmoid, tanh, ReLU, softplus]] |
Как уже упоминалось выше, подверженность нейронной сети проблемам взрывающегося или затухающего градиента во многом зависит от свойств используемых [[Практики реализации нейронных сетей#Функции активации | функций активации]]. Поэтому правильный их подбор важен для предотвращения описываемых проблем. | Как уже упоминалось выше, подверженность нейронной сети проблемам взрывающегося или затухающего градиента во многом зависит от свойств используемых [[Практики реализации нейронных сетей#Функции активации | функций активации]]. Поэтому правильный их подбор важен для предотвращения описываемых проблем. | ||
Строка 97: | Строка 97: | ||
=== Использование Residual blocks === | === Использование Residual blocks === | ||
− | [[Файл:Residual.png|upright=1.0|thumb|Рисунок 3 | + | [[Файл:Residual.png|upright=1.0|thumb|Рисунок 3: Устройство residual block<ref>[https://en.wikipedia.org/wiki/Residual_neural_network wikipedia.org {{---}} Residual neural network]</ref>]] |
В данной конструкции вывод нейрона подается как следующему нейрону, так и нейрону на расстоянии 2-3 слоев впереди, который суммирует его с выходом предшествующего нейрона, а функция активации в нем {{---}} ReLU (см. рисунок 3). Такая связка называется shortcut. Это позволяет при обратном распространении ошибки значениям градиента в слоях быть более чувствительным к градиенту в слоях, с которыми связаны с помощью shortcut, то есть расположенными несколько дальше следующего слоя. | В данной конструкции вывод нейрона подается как следующему нейрону, так и нейрону на расстоянии 2-3 слоев впереди, который суммирует его с выходом предшествующего нейрона, а функция активации в нем {{---}} ReLU (см. рисунок 3). Такая связка называется shortcut. Это позволяет при обратном распространении ошибки значениям градиента в слоях быть более чувствительным к градиенту в слоях, с которыми связаны с помощью shortcut, то есть расположенными несколько дальше следующего слоя. | ||
=== Регуляризация весов === | === Регуляризация весов === | ||
− | + | Регуляризация заключается в том, что слишком большие значения весов будут увеличивать функцию потерь. Таким образом, в процессе обучения нейронная сеть помимо оптимизации ответа будет также минимизировать веса, не позволяя становиться им слишком большими. | |
=== Обрезание градиента === | === Обрезание градиента === | ||
Строка 112: | Строка 112: | ||
= См. также = | = См. также = | ||
− | |||
* [[:Обратное распространение ошибки]] | * [[:Обратное распространение ошибки]] | ||
* [[:Регуляризация]] | * [[:Регуляризация]] |