正则化和规则化区别

原地址:http://blog.csdn.net/niuwei22007/article/details/49228095可以查看更多文章

通过前几篇的介绍,网络已经选择好了优化器、目标函数、模型以及激活函数。并且给权值选择了初始化方法。那么接下来就是训练。训练过程后会出现什么问题呢?过拟合!而有效解决过拟合的方法就是加入规则项。具体的规则化请见http://blog.csdn.net/niuwei22007/article/details/48929935中对于规则化的介绍。

一、如何使用规则化项

        规则化项是一个对于权值参数的惩罚项。它包含在代价函数中。

        在Keras的Dense Layer、TimeDistributedDense Layer、MaxoutDense Layer、Convolution1D Layer和Convolution2D Layer中有一个统一的API用来应用规则化项。

        上面这些层有3个关键的参数:

W_regularizer:实例化于 keras.regularizers.WeightRegularizer(对权值规则化)
b_regularizer:实例化于keras.regularizers.WeightRegularizer (对偏置规则化)
activity_regularizer:实例化于keras.regularizers.ActivityRegularizer  (对激活值规则化,也就是权值与矩阵点乘以后的输出规则化)
        这里对W和b的规则化用的同一个类,因为他们的实现方式基本差不多。然而日常使用的时候,很少对b进行规则化。即使对b规则化了,结果只有一点点的改善。因此经常使用的是对W的规则化。

        使用示例代码如下:

from keras.regularizers import l2, activity_l2
model.add(Dense(64, input_dim=64, W_regularizer=l2(0.01), activity_regularizer=activity_l2(0.01)))
二、可用的规则化项

        可用的规则化项类有2个,一个是WeightRegularizer,可以实例化W和b规则化项;另外一个是ActivityRegularizer,可以实例化activity_regularizer。

keras.regularizers.WeightRegularizer(l1=0., l2=0.)
keras.regularizers.ActivityRegularizer(l1=0., l2=0.)
        其中,这里的预置了l1和l2两种规则化项,也是最常用的两种。L1和 l2代表什么意思呢?如何推导计算的?移步这里。

三、快捷函数

        在keras.regularizers中有几个快捷函数可以使用:

l1(l=0.01):只使用L1权值规则化,比如LASSO算法
l2(l=0.02):只使用L2 权值规则化,比如常用的权值衰减算法和Ridge算法。
l1l2(l1=0.01, l2=0.02):同时使用 L1L2规则化项,比如ElasticNet
activity_l1(l = 0.01):L1activity规则化
activity_l2(l = 0.02):L2activity 规则化
activity_l1l2(l1=0.01,l2=0.02):L1+L2activity规则化 

 除了规则化外,Keras还有一个约束限制功能。函数可以设置在训练网络到最优时对网络参数的约束。这个约束就是限制参数值的取值范围。比如最大值是多少,不允许为负值等。这一部分比较简单,内容很少。

一、如何使用约束限制

        在Keras的Dense Layer、TimeDistributedDense Layer、MaxoutDense Layer、Convolution1D Layer和Convolution2D Layer中有一个统一的API用来使用约束。

        2个关键的参数:

W_constraint:约束主要的权值矩阵
b_constraint:约束偏置值
        使用示例代码如下:

from keras.constraintsimport maxnorm
model.add(Dense(64, W_constraint =maxnorm(2))) #限制权值的各个参数不能大于2


二、可用的约束限制

maxnorm(m=2): 最大值约束
nonneg(): 不允许负值
unitnorm(): 归一化 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值