给损失函数加正则化项

减小过拟合途径

(1)增大数据集;
(2)减少变量个数,去掉不重要变量;
(3)正则化:保留所有变量,但减小特征变量的数量级。这种处理方法更合适,因为实际所有变量对结果都有一定贡献,只是有些变量对结果的影响很小。
正规化背后的思路:这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。

给损失函数加正则化项

给损失函数加上正则化项可防止模型过拟合。正则化方法有两种:

(1)L1正则化:

使用L1正则化的模型又叫做Lasso Regularization(Lasso回归),直接在原来的损失函数基础上加上权重参数的绝对值的倍数,如公式1所示:
公式1:L1正则化

(2)L2正则化

使用L2正则化的模型又叫做岭回归(ridge regression),直接在原来的损失函数基础上加上权重参数的平方的倍数,如公式2所示:
公式2:L2正则化
lasso 可以用来做 feature selection,而 ridge 不行。或者说,lasso 更容易使得权重变为 0,而 ridge 更容易使得权重接近 0。(具体可参考这篇文章:https://blog.csdn.net/red_stone1/article/details/80755144)

TensorFlow中正则化的实现

TensorFlow中对相应参数进行正则化的函数如下:
tf.contrib.layers.l1_regularizer(regularizer)(w) (L1正则化)
tf.contrib.layers.l2_regularizer(regularizer)(w) (L2正则化)
以上两个参数往往配合tf.add_to_collection()和tf.add_n()两个函数使用,如下所示:
tf.add_to_collection(‘losses’, tf.contrib.layers.l1_regularizer(regularizer)(w))或
tf.add_to_collection(‘losses’, tf.contrib.layers.l2_regularizer(regularizer)(w))
其中,tf.add_to_collection(“list_name”, element),函数有两个参数,分别是列表名和元素,其作用是将元素element添加到list_name所指的列表中。
而tf.add_n(list_name)函数有一个参数,即列表名,其作用是将列表元素相加并返回。
因此,得到损失函数中正则化项的语句包括以下(以L2正则化为例):
tf.add_to_collection(‘losses’, tf.contrib.layers.l2_regularizer(regularizer)(w))
L2_err=tf.add_n(losses)
loss=cem或其它损失函数+L2_err

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值