Предположим, у нас есть следующая трехслойная нейронная сеть:
Входной слой: 2 нейрона
Скрытый слой: 3 нейрона
Выходной слой: 2 нейрона
Предполагая, что в качестве функции активации используется сигмовидная функция, она определяется следующим образом:
σ ( x ) знак равно 1 1 + e - x \sigma(x) = \frac{1}{1+e^{-x}}σ ( х )"="1+е− х1
Теперь давайте выведем формулу для каждого шага алгоритма обратного распространения.
Шаг 1: прямое распространение
Для выборки x \mathbf{x}x прямой проход рассчитывается следующим образом:
z 1 знак равно ш 1 ⊤ Икс + б 1 z_1 = \mathbf{w}_1 ^{\top}\mathbf{x} + \mathbf{b}_1г1"="ж1⊤Икс+б1
h 1 = σ ( z 1 ) h_1 = \ sigma (z_1)час1"="с ( г1)
z 2 знак равно ш 2 ⊤ час 1 + б 2 z_2 = \ mathbf {w} _2 ^ {\ top} \ mathbf {h} _1 + \ mathbf {b} _2г2"="ж2⊤час1+б2
h 2 = σ ( z 2 ) h_2 = \ sigma (z_2)час2"="с ( г2)
Среди них w 1 \mathbf{w}_1ж1和w 2 \mathbf{w}_2ж2матрица весов, b 1 \mathbf{b}_1б1和b 2 \mathbf{b}_2б2- вектор смещения, σ ( ⋅ ) \sigma(\cdot)σ ( ⋅ ) — сигмовидная функция.
Шаг 2: Рассчитайте ошибку
Предположим, что мы хотим минимизировать квадрат функции потерь:
L знак равно 1 2 ∑ я знак равно 1 м ( y ^ я - yi ) 2 L = \ frac {1} {2} \ sum_ {i = 1} ^ {m} (\ шляпа {y} _i - y_i) ^ 2л"="21я = 1∑м(у^я−уя)2
Из них ммm - размер выборки,y ^ i \hat{y}_iу^ясумма yi y_iуяII _Прогнозируемые и истинные значения i выборок. Для этого примераm = 1 m=1м"="1。
Следовательно, мы можем вычислить член ошибки δ 2 \delta_2 выходного слояг2:
δ 2 знак равно ( y ^ - y ) ⋅ σ ′ ( z 2 ) знак равно ( y ^ - y ) ⋅ час 2 ⋅ ( 1 - час 2 ) \ delta_2 = (\ hat {y} - y) \ cdot \ sigma' (z_2) = (\шляпа{y} - y) \cdot h_2 \cdot (1 - h_2)г2"="(у^−у )⋅п′ (г2)"="(у^−у )⋅час2⋅( 1−час2)
где у ^ \ шляпа {у}у^прогнозируемое значение, ггy - действительное значение,σ ′ ( ⋅ ) \sigma'(\cdot)п′ (⋅)представляет собой производную сигмовидной функции.
Шаг 3: Обратное распространение
Далее нам нужно вычислить член ошибки δ \delta каждого слоя с помощью алгоритма обратного распространенияд .
Для скрытого слоя мы можем использовать следующую формулу для расчета:
δ 1 знак равно W 2 δ 2 ⋅ σ ′ ( z 1 ) знак равно W 2 δ 2 ⋅ час 1 ⋅ ( 1 - час 1 ) \ delta_1 = \ mathbf {W} _2 \ delta_2 \ cdot \ sigma '(z_1) = \ mathbf{W}_2 \delta_2 \cdot h_1 \cdot (1 - h_1)г1"="Вт2г2⋅п′ (г1)"="Вт2г2⋅час1⋅( 1−час1)
где W 2 \mathbf{W}_2Вт2является частью матрицы весов после удаления члена смещения.
Шаг 4: Рассчитайте градиент
Наконец, мы можем использовать член ошибки δ \deltaδ вычисляет градиенты и обновляет параметры. В частности, мы можем вычислить градиенты весов и смещений, используя следующую формулу:
∂ L ∂ ш 2 знак равно час 1 δ 2 \ гидроразрыва {\ парциальное L} {\ парциальное \ mathbf {w} _2} = \ mathbf {h} _1 \ delta_2∂ ш2∂ л"="час1г2
∂ L ∂ б 2 знак равно δ 2 \ гидроразрыва {\ парциальное L} {\ парциальное \ mathbf {b} _2} = \ delta_2∂ б2∂ л"="г2
∂ L ∂ ш 1 знак равно Икс δ 1 \ гидроразрыва {\ парциальное L} {\ парциальное \ mathbf {w} _1} = \ mathbf {x} \ delta_1∂ ш1∂ л"="х д1
∂ L ∂ б 1 знак равно δ 1 \ гидроразрыва {\ парциальное L} {\ парциальное \ mathbf {b} _1} = \ delta_1∂ б1∂ л"="г1
где ч 1 \mathbf{h}_1час1и х \mathbf{х}x - выход скрытого слоя и вход входного слоя соответственно,δ 1 \delta_1г1和δ 2 \delta_2г2является термином ошибки.
Наконец, мы можем обновить веса и смещения, используя градиентный спуск или другие алгоритмы оптимизации.