Введение:

Математика всех пугает. Ха-ха, я знаю.
Алгоритм обратного распространения действительно сложен для понимания, не так ли?
В старших классах я прочитал много книг. Ага, я не опечатался, много книг по физике. Несмотря на то, что эти знания потом так и не пригодились, они дали мне один важный опыт в чтении.
«Почти каждая книга — дерьмо, бессмысленная, пустая трата времени»
Почему? Когда вы много читаете, вы обнаружите, что каждая книга написана по-своему. Иногда в одном и том же контексте встречаются даже разные уравнения.
Вернемся к обратному распространению. Если у вас уже есть некоторые базовые идеи в матричном исчислении, обратное распространение действительно простое. Я бы обвинил того, кто не созрел для написания книг: «Одной паршивой овцы достаточно, чтобы испортить все стадо». Да, так и есть, на книгах можно заработать, но душу людям от чтения твоего хлама не вылечишь.

Настоящая работа:
вернуться к обратному распространению. В чем идея этого алгоритма?

Алгоритм.
Обратное распространение — это алгоритм динамического программирования, разработчикам программного обеспечения должно быть знакомо это название. Динамическое программирование — это метод программирования, при котором следующая итерация будет иметь некоторые результаты предыдущей. Вместо того, чтобы выполнять вычисления с самого начала, мы можем использовать предыдущие результаты для ускорения вычислений.

Задача по математике:
Итак, каков алгоритм? Обратное распространение основано на градиентном спуске, методе оптимизации.
Предположим, что y является функцией от w1, w2, …, wn. Тогда для каждой точки в nD-пространстве w1, w2, …, wn существует соответствующее значение y(w). Градиент в nD-пространстве определяется как функция для каждой точки в этом пространстве, в которой есть соответствующий вектор. Это поле уже упоминалось в школьной физике, когда мы изучали электромагнитное поле.
В этом nD-пространстве y строит гиперповерхность (которая имеет n-1 степень свободы), в каждой точке этой гиперповерхности градиент представляет уклон поверхности. Теперь вы поняли идею градиентного спуска, когда у нас есть вектор наклона или градиент, мы можем переместить точку в более низкое место.

Ваша работа:
Вернемся к обратному распространению, учитывая полносвязную нейронную сеть, мы не будем напрямую вычислять градиент функции потерь для всех весов, следим за динамикой метод программирования, мы будем вычислять градиент слой за слоем.
Пусть v1 и v2 — 2 последовательных слоя, или v1 — вектор m измерений, v2 — вектор n измерений. У нас есть v2 = act(M*v1 + b), где act — функция активации, M — (n*m) весовая матрица, b — (n,) вектор смещения. ручка и бумага, то делать работу. Писать математические обозначения здесь гораздо труднее.
В любом случае, вы поняли идею, верно?

Конец:
Наконец, математические исследования — это такая область, которая требует много усилий и энергии. Но заниматься математикой легко, просто заткнись и считай.