3D机器学习(5):梯度下降法学习

1.三种激活函数

  • torch.sigmoi=F.sigmoid
    3D机器学习(5):梯度下降法学习
  • torch.tannh=F.tanh
    3D机器学习(5):梯度下降法学习
  • torch.relu=Frelu
    3D机器学习(5):梯度下降法学习

2.典型的loss函数:mean squire error

  • MSE=mean squire error=均方差:∑(y-y预测 )^2,这里norm会开根号,所以需要平方回去。F.mse_loss(y,y预测)函数可建立此类loss函数。
    3D机器学习(5):梯度下降法学习
  • 当需要求导时,需要提前对变量申明,因为默认是无需求导的,否则会报错:reuqire_gred=true
    3D机器学习(5):梯度下降法学习
    上图表示对loss函数mse求w的偏导,输出结果是一个数:2
    3D机器学习(5):梯度下降法学习

3.梯度下降法公式推倒

  • Softmax激活函数,归一化,适用于多分类问题。并不是按比例缩放,而是会把原来大的放的更大,
    3D机器学习(5):梯度下降法学习
    对softmax函数求导
    3D机器学习(5):梯度下降法学习

  • 1层单输出感知机的梯度推倒
    其中E=error=loss函数,使用的均方差方法计算。
    σ表示sigma激活函数,求和输出的x需要乘上σ才表示预测值,这里把x*σ=O。
    t表示target,是实际值,因此E=(o-t)^2,这里的1/2可以忽略,仅仅是为了消去求导后增加的2倍。
    对E求单个权值w的梯度,结果=(o-t)O(1-o)x,可以看出,求出的梯度形式非常简单。
    3D机器学习(5):梯度下降法学习
    推导出梯度后,使用更新公式,就可以更新w权值了。

  • N输出单层感知机的梯度推倒
    E=error=loss函数,继续使用的均方差方法计算。
    对E求单个权值wi的梯度,用函数autograd.grad(E,[wi])表示,仅Ok包含w,t不包含w,所以对Ok=x*σ求导,这里再分解成先对σ求导,再对x求导。
    3D机器学习(5):梯度下降法学习

  • 单输出多层的链式法则求导,梯度推倒:
    这里为了求得grad(E,[w1]),即中间插入了一个w2,则可分解为三个求导:grad(E,[w1])= grad(E,[O2]) *grad(O2,[O1]) *grad(O1,[x])。灰色的点表示x。
    3D机器学习(5):梯度下降法学习

  • 多输出多层梯度推倒:
    3D机器学习(5):梯度下降法学习
    先算倒数第一层的倒数,答案如下所示,并其中很长的多项式把简写为δ。
    3D机器学习(5):梯度下降法学习
    计算结果如下红色框
    3D机器学习(5):梯度下降法学习
    进一步缩写为最下行公式。可以看出,结果由三个部分组成。也可以简写为:梯度=Oi*δj
    3D机器学习(5):梯度下降法学习
    3D机器学习(5):梯度下降法学习

Torch.Optim.Adam([x],lr=0,001)可直接调用迭代函数

  • 到了这里,我们对DeepLearning就有了一个非常深刻的认识,而不是停留在函数拟合,函数拟合仅仅是非常肤浅的视角,从反向传播角度看,这其实是一个函数优化的问题。尽管实际做的时候不需要自己推到而是直接用封装好的函数,但是你会觉得心里有底,有信心看一些原理性的paper。
上一篇:Pytorch实现两层神经网络


下一篇:data和deach的区别