PPC的C/C++和人工智能学习笔记
每一篇学习笔记,都只是为了更好地掌握和理解

深度学习(4)-最优化和反向传播

回顾一下,得分函数,Softmax损失函数,SVM损失函数,Full Loss公式:

前面所有的学习,就是为了得到一个合理的(能正确反映分类情况)LOSS值,那么回归到我们的目的,我们是要机器学习,机器分类,也就是要找到最好的W权重数据,如何根据LOSS值来让机器自动调整W权重数据到最优化是今天要讨论的内容。

最优化,就是要让W权重的调整会使得LOSS值不断变小。

 

粗暴的想法:既然要找到好的W权重参数,那么我把所有的W权重参数穷举出来,然后分别计算他们的LOSS值,直接找出LOSS值最小的那组权重参数。方法可以是,一个一个慢慢变,也可以随机生成,但是实际上W参数因为实在太多了,计算量是无穷的(比如前面说的32×32的彩色图片,一组权重参数就有3072个参数,假设每个参数只有1万种变化,那么穷举的话就是1万的3072次方)。要找出一个合适的最优化方法。

其实,我们找LOSS最小值的过程,可以想象成我们在一座大山里面,要找到最低的山谷处(LOSS值最小),而上面比方的3072个权重参数,就相当于3072个方向了。

我们想办法,每次调整W权重,只调整它的一个参数(比如3072个里面,保持3071个不动,只变化1个),调整的幅度也很小,看看调整的结果是不是引起LOSS值变小了,就这样一小步一小步的尝试着走,是不是就可以找到这个LOSS最小值呢?

 

梯度的概念:

梯度就是求导,我们这里是说,在某个方向上的变化,会引起LOSS值变化的多少,我们希望能沿着LOSS值下降的方向前进,也就是沿着梯度下降的方向前进。

我们在训练的时候,计算LOSS值,一般不是每1张输入计算1个LOSS值,而是一批一批来计算平均值的,一批是多少,定义为BachSize,一般是2的整数倍,比如取32,64,128等等。(作用是不能因为某个样本都去更新梯度值)

学习率:每次调整W权重的大小,太大的话,很可能会错过最优值,太小既慢又容易陷入局部低点,要选取合适的值。

学习笔记未经允许不得转载:PPC的C/C++和人工智能学习笔记 » 深度学习(4)-最优化和反向传播

分享到:更多 ()

评论 抢沙发

评论前必须登录!