解读keras中的正则化(regularization)问题
短信预约 -IT技能 免费直播动态提醒
keras中正则化(regularization)
keras内置3种正则化方法
keras.regularizers.l1(lambda)
keras.regularizers.l2(lambda)
keras.regularizers.l1_l2(l1=lambda1, l2=lambda2)
目前我的理解是lambda越大,对参数的约束就越强,也就是惩罚力度越大。
其中L1正则化方法,是对|w|进行惩罚,使得w趋近0
而L2正则化方法,是对w2进行惩罚,使得w尽可能小
Dense,Conv1D,Conv2D,Conv3D有统一的正则化API,见keras中文文档。
3个正则化关键字
1. kernel_regularizer
对权值进行正则化,大多数情况下使用这个
2. bias_regularizer
限制bias的大小,使得输入和输出接近
3. activity_regularizer
对输出进行正则化,使得输出尽量小
keras中添加正则化
正则项
正则项在优化过程中层的参数或层的激活值添加惩罚项,这些惩罚项将与损失函数一起作为网络的最终优化目标
惩罚项基于层进行惩罚,目前惩罚项的接口与层有关,但Dense, Conv1D, Conv2D, Conv3D具有共同的接口。
这些层有三个关键字参数以施加正则项:
kernel_regularizer
:施加在权重上的正则项,为keras.regularizer.Regularizer对象bias_regularizer
:施加在偏置向量上的正则项,为keras.regularizer.Regularizer对象activity_regularizer
:施加在输出上的正则项,为keras.regularizer.Regularizer对象
例子
from keras import regularizers
model.add(Dense(64, input_dim=64,
kernel_regularizer=regularizers.l2(0.01),
activity_regularizer=regularizers.l1(0.01)))
可用正则项
keras.regularizers.l1(0.)
keras.regularizers.l2(0.)
keras.regularizers.l1_l2(0.)
开发新的正则项
任何以权重矩阵作为输入并返回单个数值的函数均可以作为正则项,示例:
from keras import backend as K
def l1_reg(weight_matrix):
return 0.01 * K.sum(K.abs(weight_matrix))
model.add(Dense(64, input_dim=64,
kernel_regularizer=l1_reg)
可参考源代码keras/regularizer.py
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341