版权声明:转载注明出处 https://blog.csdn.net/J0Han/article/details/82935944
正则化缓解过拟合
正则化在损失函数中引入模型复杂度指标,利用给w参数加权值,弱化了训练数据的噪声(一般不正则化b)
loss = loss(y与y_) + REGULARIZER * loss(w)
- loss(y与y_)指的是模型中所有参数的损失函数,如:交叉熵,均方误差
- REGULARIZER指的是参数w在总loss中所占的比例,即正则化的权重
- loss(w)中的w就是需要正则化的参数
loss(w)有两种计算方法:
-
loss(w) = tf.contrib.layers.l1_regularizer(REGULARIZER)(w) 是L1正则化计算
-
loss(w) = tf.contrib.layers.l2_regularizer(REGULARIZER)(w) 是L2正则化计算
tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(regularizer)(w))
这段代码是指把计算好的所有w正则化的参数加在losses集合中
loss = cem + tf.add_n(tf.get_collection('losses'))
这段代码指的是把losses里的所有值相加再加上交叉熵构成了总损失函数loss