tensorflow框架基础之优化(二)
防止过拟合 当神经网络得到的是一个过拟合模型时,这个模型基本是没什么应用价值的,因为它的泛化性能非常不好( 泛化即是,机器学习模型学习到的概念在它处于学习的过程中时模型没有遇见过的样本时候的表现,简单理解为预测能力 ),对一些”异常”数据过分的估计,而忽视了问题的整体规律。 为避免过拟合,常采用的方式是添加正则化项,正则化 通过限制权重大小,使得模型不能任意拟合训练数据中的随机噪声 。一般有两种正则化方式: L1正则化 R ( w ) = ∥ w ∥ 1 = ∑ i | w i | L2正则化 R ( w ) = ∥ w ∥ 2 2 = ∑ i | w i | 2 两种方式的区别参考 L1、L2范数的比较 当然,正则化也可以是多种方式的组合,如 R ( w ) = ∑ i α | w i | + ( 1 − α ) w 2 i 所以,损失函数转换成 J ( θ ) + λ R ( w ) ,在tensorflow中实现正则项 weights = tf.constant([[ 1 , 2 ],[ 3 , 4 ]]) lambda = 0.2 # L1范数,regu=(|1|+|2|+|3|+|4|)*0.2 regu1 = tf.contrib.layers.l1_regularizer( lambda )(weights) # L2范数(TF会将L2的结果除2,使得求导的结果更简洁