【485】deep learning 防止 overfitting 的方法
- 获取更多的训练数据
- 减小网络的容量(层数,神经元数量)
- 添加权重正则化(l1 和 l2)
- 添加 dropout
添加正则化来防止 overfitting
一种常见的降低 overfitting 的方法就是强制让模型权重只能取较小的值,从而限制模型的复杂度,这使得权重值的分布更加规则(regular)。
- 添加 L2 权重正则化
- 添加 L1 权重正则化
- 添加 L1 和 L2 权重正则化
1 2 3 4 5 6 7 8 9 10 11 12 | from keras import regularizers model = models.Sequential() model.add(layers.Dense( 8 , kernel_regularizer = regularizers.l2( 0.001 ), activation = 'tanh' , input_shape = ( 10000 ,))) ... or kernel_regularizer = regularizers.l1( 0.001 ) kernel_regularizer = regularizers.l1_l2(l1 = 0.001 , l2 = 0.001 ) |
添加 dropout 正则化
对某一层使用 dropout,就是在训练过程中随机将该层的一些输出特征舍弃(设置为 0)。
dropout 比率(dropout rate)是被设为 0 的特征所占的比例,通常在 0.2~0.5 范围内。测试时没有单元被舍弃,而该层的输出值需要按照 dropout 比率缩小,因为这时比训练时有更多的单元被激活,需要加以平衡。
灵感:from Hinton。银行的防欺诈系统就是,办理业务有很多人,每个人负责某一项工作,这样他们想要欺诈银行就需要很多人合作,只要其中一两个人不合作,这个事情就无法完成,就类似于权重值,他们会有些“阴谋”,将他们有些值设置为 0,就可以打乱这种“阴谋”。
keras 里面添加 dropout 层如下:
1 2 3 4 5 6 7 8 | model = models.Sequential() model.add(layers.Dense( 16 , activation = 'relu' , input_shape = ( 10000 ,))) model.add(layers.Dropout( 0.5 ) model.add(layers.Dense( 16 , activation = 'relu' )) model.add(layers.Dropout( 0.5 ) model.add(layers.Dense( 16 , activation = 'relu' )) model.add(layers.Dropout( 0.5 ) ... |
分类:
AI Related
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)