前言
这几天一直在看B站王木头的视频,仔细阐述了我最初认识神经网络的遇到的但是好像没人在意的问题,讲得非常棒。
矩阵的求导运算
对于机器学习或者是说深度学习来讲,所有的优化模型的求解都是通过求导数来进行的。 先来回忆一下标量的求导 标量 y 对 n 维列向量 x=(x1,x2,?,xn)T 求导,其结果还是一个 n 维列向量。 标量 y 对 n 维行向量 xT=(x1,x2,?,xn) 求导,其结果还是一个 n 维行向量。 形状规则:标量 y 对向量 x 的每个元素求导,然后将各个求导结果按向量 x 的形状排列。 原文地址:https://www.cnblogs.com/yanghh/p/13756471.html
向量链式法则
标量求导转换到向量尤其要注意形状。 L2归一化:将一组数变成0-1之间。pytorch调用的函数是F.normalize。 几种范数的解释 l0-Norm, l1-Norm, l2-Norm, … , l-infinity Norm
自动求导代码实现
在我们计算y 关于 x 的梯度之前,我们需要一个地方存储它, 现在我们来计算 y 通过调用反向传播函数来自动计算 y 关于 x 每个分量的梯度 现在我们计算 x 的另一个函数
深度学习中 ,我们的目的往往不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和 将某些计算移动到记录的计算图之外 即使构建函数的计算图需要通过Python控制流(例如,条件、循环或任意函数调用),我们仍然可以计算得到的变量的梯度
|