2021-06-24 08:48:33
Рассмотрим алгоритм обратного распространения ошибки. По моему мнению, в интернете информация на эту тему либо слишком сложна для восприятия (дифференциальное исчисление), либо всё сводится к примеру использования конкретных функций, что не даёт общей картины.
В этом небольшом посте постараемся поэтапно представить алгоритм back propagation:
1) Инициализировать матрицу весов W маленькими случайными значениями (к примеру, в интервале от -0,1 до +0,1).
2) Повторить цикл обучения (п.3-7) необходимое количество раз (пока выполняются заданные условия).
3) Подать вектор X на вход сети и подсчитать выходы O(k) каждого слоя (это прямое распространение).
Для первого слоя: O(k) = f(W(k) * X + B(k)).
Для последующих слоёв: O(k) = f(W(k) * O(k-1) + B(k)).
X - Входной вектор;
O(k) - Посчитанные выходы k-ого слоя;
O(k-1) - Посчитанные выходы слоя (k-1);
W(k) - Матрица весов k-ого слоя;
B(k) - Вектор смещений k-ого слоя;
f - Функция активации k-ого слоя. К примеру, f(O(k)) = tanh(O(k)).
4) Для выходного слоя вычислить ошибку обучения: q(k) = f'(O(k)) * F'(O(k), Y).
В формуле перемножаются производные двух функций: целевой и активации.
q(k) - Вектор ошибок k-ого слоя;
O(k) - Посчитанные в п.3 выходы k-ого слоя;
Y - Выходной эталонный (правильный) вектор для обучения;
f - Функция активации последнего слоя.
F - Целевая функция ошибки. К примеру, F(O(k), Y) = 0,5*(O(k) - Y)*(O(k) - Y).
5) Для каждого слоя, начиная с предпоследнего: q(k) = f'(O(k)) * q(k+1) * W(k+1).
В формуле перемножаются: производная функции активации, вектор ошибок предыдущего слоя и веса.
q(k) - Вектор ошибок k-ого слоя;
O(k) - Посчитанные в п.3 выходы k-ого слоя;
q(k+1) - Вектор ошибок слоя (k+1);
W(k+1) - Матрица весов слоя (k+1);
f - Функция активации k-ого слоя.
6) Рассчитать изменение весов: dW(k) = t * q(k) * O(k-1).
Рассчитать изменение смещений: dB(k) = t * q(k).
dW(k) - Матрица изменения весов для k-ого слоя;
dB(k) - Вектор изменения смещений для k-ого слоя;
t - Коэффициент скорости обучения. Находится в пределах от 0 до 1;
q(k) - Вектор ошибок k-ого слоя;
O(k-1) - Посчитанные в п.3 выходы слоя (k-1).
7) Применить сделанные изменения для весов: W(k) = W(k) + dW(k).
Применить сделанные изменения для смещений: B(k) = B(k) + dB(k).
W(k) - Матрица весов k-ого слоя;
B(k) - Вектор смещений k-ого слоя;
dW(k) - Матрица изменения весов для k-ого слоя;
dB(k) - Вектор изменения смещений для k-ого слоя.
Стоит отметить, что все операции выполняются над матрицами и векторами:
t - Это число;
X, Y, O(k), q(k), B(k), dB(k) - Это векторы;
W(k), dW(k) - Это матрицы.
Итак, подведём итог. Весь алгоритм обратного распространения для соответствующего примера обучения заключается в последовательном применении формул:
O(k) = f(W(k) * X + B(k)); O(k) = f(W(k) * O(k-1) + B(k))
q(k) = f'(O(k)) * F'(O(k), Y); q(k) = f'(O(k)) * q(k+1) * W(k+1)
dW(k) = t * q(k) * O(k-1); dB(k) = t * q(k)
W(k) = W(k) + dW(k); B(k) = B(k) + dB(k).
#machinelearnin
Источник ВК
138 views05:48