实习日记~

Z学长论fast-rcnn对L1,L2的损失的选择~~

2017-12-05  本文已影响0人  飞翔的小瓜瓜

1.一个样本反向传播的过程:

首先,一个样本通过网络得到一个损失

它在网络的传播过程中会记录下他经过每一层之后的计算结果

当然,损失值也是这些结果之一

接下来就开始反向传播了

记住一个规则,每一层的梯度更新值和两个因素有关(梯度就是偏导数)

第一,网络前向传播过程中在这一层计算后得到的值   第二:这一层的下一层的梯度值

第一融合第二得到本层的梯度值

最后得到一个梯度值,然后干啥?

得到梯度值就可以更新参数了啊

参数 = 参数 - 学习率*梯度值

2.那么如果一个batch有200张图片,应该怎么反传呢?请开始你的演讲

一个图片网络梯度更新一次,那么200张图片作为一个batch呢?

也是更新一次!

为什么是一次,他在每一层都会有200个计算副本,都会有200个梯度,他会把他们加起来取平均

用平均值去更新梯度~更新网络

3.那么为什么要避免极端值

第一个原因:

在一个batch中,我们希望每个样本都起到作用,L2使用的二次函数的增长很可怕,如果有几个极端值,那么batch中其他的样本就起不到作用了

为什么起不到作用?很简单,取平均啊~~取平均啊~~~

第二个原因~

你知道学习率大了网络会发散,对吗?为什么会发叁?

因为梯度更新的幅度太大了

我们再看这个式子:参数 = 参数 - 学习率*梯度值

大声告诉我,梯度更新幅度除了与学习率有关还和什么有关!

是下一层梯度值和本层前向传播的结果值啊

【本层前向传播咋可能有损失值!!!难道你中间层还有lable??? 没有lable哪里来的损失】

那么如果l2损失遇到极端值,最后一层的损失会很大。然而它参与梯度计算

同样会导致发散~

4.那为啥还要有L2损失,既然他这么不好

一个原因!

平滑~容易求导~

上一篇下一篇

猜你喜欢

热点阅读