(Tensorflow之七)L1_regularizer与L2_regularizer正则化

一、源码

import tensorflow as tf

a = tf.constant([2.0,3.0,4.0])
b = tf.contrib.layers.l1_regularizer(1.0)(a)
c = tf.contrib.layers.l2_regularizer(1.0)(a)
with tf.Session() as sess:
    print(sess.run(a))
    #输出L1 正则化,计算方法(|2.0|+|3.0|+|4.0|)*1 = 9
    print(sess.run(b))
    #输出L2 正则化(2^2+3^2+4^2)*1/2 = 14.5
    print(sess.run(c))

输出结果

[ 2.  3.  4.]
9.0
14.5

二、计算方法

2.1 L1的计算公式

设张量a

L(a)=||a||=i=0n|ai|

2.2 L2的计算公式

设张量a

L(a)=||a||22=ni=0ai22

三 、l1/l2_regularizer正则化的运用

通常,会将正则化的结果当作Loss函数的一部分,而正则计算的一般是权重w与偏置值b
例:Loss = cross_entropy + L(w)+L(b)
优化Loss函数,即是优化w,b张量中各元素的绝对值之和或者平方和。
而为什么要优化w,b的绝对值之和或者平方和呢。
简而言之,就是要降低模型的复杂度,防止过拟合
可以这么简单理解模型复杂度,对于n维的张量,其中为零元素越多,或者元素值越小,那么其模型复杂度越小。反之亦然。

四、l1/l2_regularizer正则化过拟合原理

拟合曲线
如上图所示拟合曲线
(1)图一的拟合较为简单,不能很好的反应出变化关系
(2)图二的拟合较好,可以很好的表达变化关系
(3)图三的拟合较为复杂,常用不能很好的预测以后的变化趋势)
当训练量较少时,一些随机、错误因素也会占有较高的比重,从而导致错误的变化趋势预估。那么减少这些值也具有较大的意义,可以将这些随机、错误因素理解图中为高阶的元素( θ3 , θ4 )。
可使用l1/l2_regularizer优化权重w=( θ1 , θ2 θ3 ,…., θn
w值越小,或者w中非零的元素越少,越不会发生过拟合。

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值