深度学习记录--正则化(regularization)

什么是正则化?

正则化(regularization)是一种实用的减少方差 (variance )的方法,也即避免过度拟合

几种正则化的方法

L2正则化

又被称为权重衰减(weight dacay)

在成本函数中加上正则项:

其中

由于在w的更新过程中会递减,即权重衰减

w递减的过程,实际上是w趋近于0的过程

在这个过程中,部分单元的影响逐渐减小(可以近似看作隐藏 ),最终成为深层神经网络(类似线性回归),从最开始的右图逐渐变为左图,即从high variance --> high bias

在变化的中间存在一个just right的状态,这个状态则是最优情况

缺点:

为了搜索合适的正则化参数lambda,需要进行大量验证计算,花费时间很长

dropout(随机失活)

dropout基本原理:将神经网络中的部分单元进行随机删除/失活 (将它们的影响降至几乎不存在),让原本的神经网络样本训练规模变小

常用方法:inverted dropout(反向随机失活)

设置一个概率参数keep_prob,在例子中设置为0.8,表示有0.2的概率让单元失活

设置bool矩阵d3,将a3矩阵与d3矩阵进行矩阵乘法 运算,然后a3/=keep_prob,保持未被失活单元的数据的完整性

代码实现:

python 复制代码
import numpy as np
a3=np.random.rand(3,3)
print("before dropout : \n",a3)
keep_prob=0.8
# print(a3.shape[0],a3.shape[1])
d3=np.random.rand(a3.shape[0],a3.shape[1])<keep_prob
# print("d3 = ",d3)
a3=np.multiply(a3,d3)
a3/=keep_prob
print("after dropout : \n",a3)

运行结果:

dropout合理性的解释

dropout会压缩权重(shrink weights),完成预防过拟合的外层正则化(类似L2正则化的功能),与L2正则化不同的是,dropout对不同的应用方式,会产生不同的效果

keep_prob的数值越小,dropout的效果越显著

对于某些层,若担心过拟合,可以设置更小的keep_prob参数值,而对于其他层,若无需使用dropout,则可以设置keep_prob=1

缺点

需要进行许多验证来得出不同的keep_prob参数值

同时,因为每次迭代部分节点都会被随机移除,J函数的定义无法被明确给出,难以对递减程度进行评估与复查

数据扩增data augmentation

当无法获得充足的数据时,又需要大量的数据时,则会选择这种方法:

对原有数据进行一定的处理,产生新的数据

缺点

需要额外的算法验证,对新数据判断是否合理

early stopping

只需运行一次梯度下降,找到w的较小值,中间值和较大值

在梯度下降过程中及时停止,得到较合理的dev set error和train set error

相关推荐
青瓷程序设计1 小时前
动物识别系统【最新版】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
F_D_Z1 小时前
数据集相关类代码回顾理解 | sns.distplot\%matplotlib inline\sns.scatterplot
python·深度学习·matplotlib
金智维科技官方2 小时前
RPA财务机器人为企业高质量发展注入动能
人工智能·机器人·rpa·财务
沫儿笙2 小时前
安川机器人tag焊接怎么节省保护气
人工智能·物联网·机器人
2501_941147422 小时前
人工智能赋能智慧教育互联网应用:智能学习与教育管理优化实践探索》
人工智能
阿龙AI日记2 小时前
详解Transformer04:Decoder的结构
人工智能·深度学习·自然语言处理
爱写代码的小朋友2 小时前
“数字镜像”与认知负能者:生成式AI个性化学习支持者的协同构建与伦理规制研究
人工智能
找方案3 小时前
新型智慧城市城市大数据应用解决方案
人工智能·智慧城市
K***72843 小时前
开源模型应用落地-工具使用篇-Spring AI-Function Call(八)
人工智能·spring·开源
Chat_zhanggong3454 小时前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法