pytorch-学习笔记-反向传播

又到了一周一次的总结时间,还是老生长谈的话题,我首先来总结一下本周学习的内容,主要包括一下几点:
损失函数和反向传播
网络模型的保存和修改
Sequential函数
模型训练实战
本篇主要总结损失函数和反向传播,其他的会在接下来的文章中总结。
什么是损失函数?它的作用是啥呢?
简单的来讲损失函数就是预测值与目标之间的差的平方,作用是用来衡量预测值与目标之间的误差,它们的差值越小代表模型效果越好。
那么反向传播又是什么呢?
首先一张32x32的图片会被首先处理成1x1024,然后对应的每个像素都有一个权重,放入对应的1024个神经元里面,(所谓的机器学习就是找到特定的权重和偏执,从而是损失loss函数最小),我们要求的是损失函数的下降梯度,这个下降梯度告诉我们如何改变参数才能让loss下降最快,让loss的值变得最小,梯度向量每一项得大小向我们传达得信息是Loss对于每个参数得敏感度,先看一下Loss
pytorch-学习笔记-反向传播_第1张图片
上边这是一个像素的简单描述,实际情况可以一次类推的,我们让Loss变小可以有三种方法,一种是A变大,一种是W变大,另外一种是b变大,但是实际上我们只能改变W和b的值,这是两个参数,A是激活值我们是没有办法直接操作的,只有通过权重和偏置来改变。实际情况是梯度下降并不只看每个参数是增大还是该减小。(权重的增大会使连接变得更强)。
增大激活值A:如果正权重连接得神经元值很大,那么负权重连接得神经元更小,那么目标神经元就会得到更强烈得激发(我们得目标是要使目标激活值变大,其余得表小),我们把目标神经元的期待值和其他输出神经元的期待值全部加起来作为如何改变倒数第二层神经元的指示。这就是反向传播的理念了。
把所有的期待的项全部加起来,得到一串数,这串数是倒数第二层改变的变化量,
重复过程,得到倒数第二层的激活值相关参数,可以一直循环到第一层,这只是一个图片的训练过程,所以要对其他所有训练样本同样训练一边;
pytorch-学习笔记-反向传播_第2张图片
总结:反向传播算法算的是单个样本项怎样修改权重与偏执,不仅仅是说每个参数是变大还是变小,还包括变化的比例是多大,这样才能把损失函数降到最低,反向传播依赖的是链式法则,我们要算出倒数第二层损失函数对激活值的敏感度

你可能感兴趣的:(pytorch学习笔记)