![](http://webcf.waybackmachine.org/web/20210516164549im_/https://habrastorage.org/getpro/habr/avatars/747/4e7/a8c/7474e7a8c45457d1750455e6ad61f050.jpg)
Матрица-Перематрица
![](https://webcf.waybackmachine.org/web/20210516164549im_/https://habrastorage.org/getpro/habr/upload_files/b94/797/212/b947972126c68cc727a970a6fb82210d.jpg)
Работа нейронной сети основана на манипуляциях с матрицами. Для обучения используются разнообразные методы, многие из которых выросли из метода градиентного спуска, где необходимо умение обращаться с матрицами, вычислять градиенты (производные по матрицам). Если заглянуть “под капот” нейронной сети, можно увидеть цепочки из матриц, выглядящие зачастую устрашающе. Проще говоря, “нас всех подстерегает матрица”. Пора познакомиться поближе.
Для этого сделаем следующие шаги:
рассмотрим манипуляции с матрицами : транспонирование, умножение, градиент;
построим игрушечную нейронную сеть;
познакомимся с методом обратного распространения ошибки с использованием метода градиентного спуска.
Все шаги сопровождаются примерами кода с использованием только NumPy . Вычисления, не выходящие, впрочем, за рамки элементарной математики, приведены подробно. За индексами придется внимательно следить, но не отчаивайтесь, просто представьте, что каждый индекс - винтик, который надо закрутить, следуя простым правилам, но не пропустить. Если вдруг не разберетесь, ничего страшного - одно из двух: либо сбой в матрице, либо одно из двух.