神经网络模型训练

Posted btschang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络模型训练相关的知识,希望对你有一定的参考价值。

神经网络的超参数有:

1. 学习率

2. 迭代次数 iteration

3. 隐藏层数 L

4. 激活函数

5. momentum

6. mini batch

7. 正则化参数

……

 

 

1. 看training集的误差 考虑 1.是否需要加深网络 2.加长训练时间 3.尝试更先进的optimize算法 4.更合适的新网络架构

2. 看testing集的误差(判断是否过拟合)考虑1.采用更多数据训练(数据增强flp,rotation) 2.正则化(使用测试集来尝试不同的正则化参数,寻找最好的参数lamd)3.更合适的网络架构

 

 

1.为什么L2正则化可以减少过拟合:1. lamda大,导致w小,简化了网络 2.w小,输出z 小,激活函数接近线性,网络简化

2. 关于inverted dropout 在某一层中,以概率p保留部分a值,而将(1-p)的a值清为0,最后对得到的a值做rescale操作 即a=a/p

 

技术图片 

对dropout的理解:由于每次训练时,每一层消除的单元是不同的,在cost function的约束下,dropout倾向于不依赖某一个节点(因为该节点很有可能在下一次训练中消除),所以dropout会将将权重压缩,均匀地分配给该层的每一个unit,即每一层的权重w的L2范数||w||2变小了。这和L2正则化的原理是相似的。

 

关于梯度消失和梯度爆炸:

技术图片

sigmoid 函数和他的导数,导数最大不会超过0.2 因此会发生梯度消失问题,对于tahn() 也是一样

技术图片

tanh()和他的导数图,导数最大也不会超过1,也会发生梯度消失问题

技术图片

 

深度网络的退化问题 https://blog.csdn.net/u014665013/article/details/81985082

退化问题,网络层数增加,但是在训练集上的准确率却饱和甚至下降了。这个不能解释为overfitting,因为overfit应该表现为在训练集上表现更好才对。退化问题说明了深度网络不能很简单地被很好地优化。

技术图片

技术图片

以上是关于神经网络模型训练的主要内容,如果未能解决你的问题,请参考以下文章

pytorch(网络模型训练)

模型训练技巧

用 C 语言训练的神经网络模型?

pytorch(网络模型训练)

pytorch(网络模型训练)

神经网络模型训练