1700508429
1700508430
1700508431
交叉熵损失函数:
1700508432
1700508433
1700508434
1700508435
1700508436
在寻求损失函数极小化的过程中,目前工业领域应用效果比较好的方法就是通过梯度下降或者随机梯度下降的方式来寻找极小值。对每个wij求偏导,会得到如下矩阵。
1700508437
1700508438
1700508439
1700508440
1700508441
每次通过更新wij进行迭代,经过多次迭代找到极小值的wij。
1700508442
1700508443
1700508444
1700508445
1700508446
1700508447
1700508448
1700508449
其中,η是学习率,即更新时移动的步长基数;和分别对矩阵中的第i行第j列的w和b求偏导数。这种更新方式会使Loss函数优化过程在最初斜率较大的部分移动更新幅度较大,而在临近极小值的部分自动将更新幅度调小。至于每个wij究竟应该移动多少,我们通过推导相对容易的平方损失函数来看一看。这里的“C”代表“Cost”,与“Loss”同义。根据链式法则,有
1700508450
1700508451
1700508452
1700508453
1700508454
则对最后一层上任意一个神经元的w0,都有
1700508455
1700508456
1700508457
1700508458
1700508459
1700508460
别忘了,这里还有一个激励函数。
1700508461
1700508462
同理,对最后一层上任意一个神经元的b,都有
1700508463
1700508464
1700508465
1700508466
1700508467
对最后一层来说,它的前一层的任意一个神经元的输出都是其函数的输入,那么对于其前一层的任意一个神经元的w1和b1来说,仍然可以用链式法则来推导。
1700508468
1700508469
通常这种损失函数得到的值非常大(可能是几百万,上亿也毫不奇怪),尤其是在几百万维的图片识别训练中——这与它的定义有关。在它逐步减小的过程中,通过判断损失函数值超过某个值来决定终止通常是很不明智的,原因有如下两个。
1700508470
1700508471
第一,在这个收敛过程中,损失值的大小没有具体的物理解释,所以无法通过指定一个“较小”的损失值来确保召回率和准确率。
1700508472
1700508473
第二,如果通过不断的收敛,最终使损失函数的值减小为0,通常也会产生严重的过拟合现象,这种现象在模式识别中会显得格外严重。
1700508474
1700508475
所以,在训练过程中,通常会把整个训练集按一定的比例分配,一部分作为训练集,另一部分作为验证集。例如,按4∶1的比例分配,其中80%的样本用来做训练,20%的样本用来做验证(抑或其他比例,70%的样本用来做训练,30%的样本用来做验证)。训练过程是:在用80%的样本做训练的同时,不断用当前迭代产生的wij矩阵去对20%的样本做分类,直到分类结果中召回率和准确率没有明显的提高为止,否则就会看到一个现象——随着训练时间的延长(Epoch增多),验证集中的损失函数值反而会增加(召回率和准确率会下降)。此外需要注意,样本的数量要足够多(因为样本数量太少本身就非常容易造成过拟合)。
1700508476
1700508478
11.9.4 非线性分类
[
上一页 ]
[ :1.700508429e+09 ]
[
下一页 ]