Использование производных в нейронных сетях для учебного процесса называется обратным распространением . Этот метод использует градиентный спуск , чтобы найти оптимальный набор параметров модели, чтобы минимизировать функцию потерь. В вашем примере вы должны использовать производную сигмоида, потому что это активация, которую используют ваши отдельные нейроны.
Функция потерь
Суть машинного обучения состоит в том, чтобы оптимизировать функцию стоимости так, чтобы мы могли либо минимизировать, либо максимизировать некоторую целевую функцию. Обычно это называется функцией потерь или затрат. Обычно мы хотим минимизировать эту функцию. Функция стоимости, , связывает некоторое наказание на основе возникающих ошибок при передаче данных через вашу модель как функцию параметров модели.C
Давайте посмотрим на пример, где мы пытаемся пометить, содержит ли изображение кошку или собаку. Если у нас есть идеальная модель, мы можем дать модели фотографию, и она скажет нам, кошка это или собака. Однако ни одна модель не идеальна, и она будет ошибаться.
Когда мы тренируем нашу модель, чтобы иметь возможность выводить значение из входных данных, мы хотим минимизировать количество ошибок, которые она допускает. Таким образом, мы используем тренировочный набор, эти данные содержат много изображений собак и кошек, и у нас есть метка правдивости, связанная с этим изображением. Каждый раз, когда мы проводим обучающую итерацию модели, мы рассчитываем стоимость (количество ошибок) модели. Мы хотим минимизировать эту стоимость.
Существует множество функций стоимости, каждая из которых служит своей цели. Общая функция стоимости, которая используется, является квадратичной стоимостью, которая определяется как
C=1N∑Ni=0(y^−y)2 .
Это квадрат разницы между предсказанной меткой и меткой наземной правды для изображений, которые мы изучали. Мы хотим минимизировать это каким-то образом.N
Минимизация потерь
Действительно, большинство машинного обучения - это просто семейство платформ, которые способны определять распределение путем минимизации некоторой функции стоимости. Вопрос, который мы можем задать: «Как мы можем минимизировать функцию»?
Давайте минимизировать следующую функцию
y=x2−4x+6 .
Если мы построим это, то увидим, что при существует минимум . Чтобы сделать это аналитически, мы можем взять производную этой функции какx=2
dydx=2x−4=0
x=2 .
Однако зачастую поиск глобального минимума аналитически невозможен. Поэтому вместо этого мы используем некоторые методы оптимизации. Здесь также существует много разных способов, таких как: Ньютон-Рафсон, поиск по сетке и т. Д. Среди них градиентный спуск . Это техника, используемая нейронными сетями.
Градиентный спуск
Давайте используем известную аналогию, чтобы понять это. Представьте себе проблему минимизации 2D. Это равносильно горному походу в пустыню. Вы хотите вернуться в деревню, которая, как вы знаете, находится в самой низкой точке. Даже если вы не знаете основных направлений деревни. Все, что вам нужно сделать, это постоянно идти по крутому пути вниз, и вы в конечном итоге доберетесь до деревни. Таким образом, мы будем спускаться по поверхности в зависимости от крутизны склона.
Давайте возьмем нашу функцию
y=x2−4x+6
мы определим для которого минимизирован. Алгоритм градиентного спуска сначала говорит, что мы выберем случайное значение для . Начнем с . Тогда алгоритм будет делать следующее итеративно, пока мы не достигнем сходимости.у х х = 8xYИксх = 8
Иксn e w= хо л г- νdYdИкс
где - это скорость обучения, мы можем установить любое значение, которое нам понравится. Однако есть разумный способ выбрать это. Слишком большой, и мы никогда не достигнем нашего минимального значения, а слишком большой, мы потратим слишком много времени, прежде чем попадем туда. Это аналогично размеру ступеней, которые вы хотите спуститься по крутому склону. Маленькие шаги, и ты умрешь на горе, ты никогда не спустишься. Слишком большой шаг, и вы рискуете застрелить деревню и оказаться на другой стороне горы. Производная - это средство, с помощью которого мы движемся по этому склону к нашему минимуму.ν
dYdИкс= 2 х - 4
ν= 0,1
Итерация 1:
x n e w = 6,8 - 0,1 ( 2 * 6,8 - 4 ) = 5,84 x n e w = 5,84 - 0,1 ( 2 * 5,84 - 4 ) = 5,07 x n e w = 5,07 - 0,1Иксn e w= 8 - 0,1 ( 2 * 8 - 4 ) = 6,8
Иксn e w= 6,8 - 0,1 ( 2 * 6,8 - 4 ) = 5,84
Иксn e w= 5,84 - 0,1 ( 2 * 5,84 - 4 ) = 5,07
x n e w = 4,45 - 0,1 ( 2 * 4,45 - 4 ) = 3,96 x n e w = 3,96 - 0,1 ( 2 * 3,96 - 4 ) = 3,57 x n e w = 3,57 - 0,1 ( 2 * 3,57 - 4 )Иксn e w= 5,07 - 0,1 ( 2 * 5,07 - 4 ) = 4,45
Иксn e w=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
x n e w = 3,25 - 0,1 ( 2 * 3,25 - 4 ) = 3,00 x n e w = 3,00 - 0,1 ( 2 * 3,00 - 4 ) = 2,80 x n e w = 2,80 - 0,1 ( 2 * 2,80 - 4) ) = 2,64 x n e w =xnew=3.57−0.1(2∗3.57−4)=3.25
xnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
x n e w = 2,51 - 0,1 ( 2 * 2,51 - 4 ) = 2,41 x n e w = 2,41 - 0,1 ( 2 * 2,41 - 4 ) = 2,32 x n e w = 2,32 - 0,1 ( 2 * 2,32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnew=2.41−0.1(2∗2.41−4)=2.32
x n e w = 2,26 - 0,1 ( 2 ∗ 2,26 - 4 ) = 2,21 x n e w = 2,21 - 0,1 ( 2 ∗ 2,21 - 4 ) = 2,16 x n e w = 2,16 - 0,1 ( 2 ∗ 2,16 - 4 ) = 2,13 x nxnew=2.32−0.1(2∗2.32−4)=2.26
xnew=2.26−0.1(2∗2.26−4)=2.21
xnew=2.21−0.1(2∗2.21−4)=2.16
xnew=2.16−0.1(2∗2.16−4)=2.13
x n e w =2,10-0,1(2*2,10-4)=2,08 x n e w =2,08-0,1(2*2,08-4)=2,06 x n e w =2,06-0,1(xnew=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
x n e w = 2,05 - 0,1 ( 2 * 2,05 - 4 ) = 2,04 x n e w = 2,04 - 0,1 ( 2 * 2,04 - 4 ) = 2,03 x n e w = 2,03 - 0,1 ( 2 * 2,03 - 4 ) =xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
x n e w = 2,02 - 0,1 ( 2 * 2,02 - 4 ) = 2,02 x n e w = 2,02 - 0,1 ( 2 * 2,02 - 4 ) = 2,01 x n e w = 2,01 - 0,1 ( 2 * 2,01 - 4 ) = 2,01 x n e w = 2,01xnew=2.03−0.1(2∗2.03−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
x n e w = 2,01 - 0,1 ( 2 * 2,01 - 4 ) = 2,00 x n e w = 2,00 - 0,1 ( 2 * 2,00 - 4 ) = 2,00 x n e w = 2,00 - 0,1 ( 2 * 2,00 -xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
И мы видим, что алгоритм сходится при ! Мы нашли минимум.x=2
Применяется к нейронным сетям
Первые нейронные сети имели только один нейрон, который принимал некоторые входные данные и затем предоставлял выходные данные . Общей используемой функцией является сигмовидная функцияxy^
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
где - связанный вес для каждого входа и мы имеем смещение . Затем мы хотим минимизировать нашу функцию стоимостиwxb
C=12N∑Ni=0(y^−y)2 .
Как тренировать нейронную сеть?
Мы будем использовать градиентный спуск для обучения веса , основанный на выходе сигмовидной функции , и мы будем использовать некоторые функции стоимости и поезд на пакетах данных размера .CN
C=12N∑Ni(y^−y)2
y^ - это прогнозируемый класс, полученный из сигмоидальной функции, а - метка истинности земли. Мы будем использовать градиентный спуск, чтобы минимизировать функцию стоимости по отношению к весам . Чтобы облегчить жизнь, мы разделим производную следующим образомyw
∂C∂w=∂C∂y^∂y^∂w .
∂C∂y^=y^−y
и мы имеем, что а производная сигмоидальной функции - таким образом, мы имеем,y^=σ(wTx)∂σ(z)∂z=σ(z)(1−σ(z))
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b)) .
Таким образом, мы можем затем обновить вес через градиентный спуск как
wnew=wold−η∂C∂w
где - скорость обучения.η