监督性区分性分层训练
遇见的 问题: 假如训练20层的网络,直接堆积网络,由于网络过于深入,每一层都会有误差(并且是小于1的值),这样可能会在回传的时候会导致梯度消失(连续累✖️越来越小),无法收敛,那么是如何训练的呢(很多情况都是由于初始数值不好导致)。
解决方法:1. 进行分层训练,首先先抽7层隐层,然后后边直接接入一个到输出层的线性变换,先用部分数据训练这样的7层网络结构。
2. 等到网络不再震荡之后再加7层隐层,使用训练数据训练14层网络,最后再加6层,训练。(一般20%-30%的数据进行训练)
3. 最终使用全部数据+20层网络进行训练最终的结果
核心思想:由于网络过于深直接训练不好训练,因此使用类似refine的机制(如果直接使用开源模型例如imagenet、resnet等,可以直接进心refine)
加入残差
3. 中间加入损失函数
**函数尽量不要使用sigmoid,尽量使用relu。
解释:sigmoid函数会有两个饱和区(y的数值接近于1或者-1的时候,在饱和区的梯度接近于0,或者很小,很容易导致模型无法收敛)