「深度学习」dropout 技术

一、工作原理

1. 正则化网络

dropout 将遍历网络的每一层,并设置消除神经网络中节点的概率。

    1. 每个节点保留/消除的概率为0.5:
    1. 消除节点:
    1. 得到一个规模更小的神经网络:

2. dropout 技术

最常用:反向随机失活 "Inverted dropout"

以三层网络 (l=3) 为例:

复制代码
keep-prob = 0.8     #保留某个隐藏单元的概率
#生成随机矩阵,每个单元对应值为1的概率是0.8,用于决定第三层哪些元素应该归零
d3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep-prob
#元素相乘,从第三层获取激活函数,过滤d3中所有等于0的元素
a3 = np.multiply(a3,d3)
a3 /= keep-prob   #dropout方法:修正,使得a3期望值不变

Inverted dropout 通过除以 keep-prob,确保激活值的期望值不变,使得测试阶段更加容易。

每次梯度下降归零的隐藏单元可能不一样。

3. 在测试阶段训练算法

  1. 将第0层激活函数标记为测试样本x

    a^{0} = x

  1. 在测试阶段不使用 dropout 技术,我们不希望输出结果随机。特别地:

    z^{1} = w^{1} a^{0} +b^{1}​

    a^{1} = g^{1}(z^{1})​

    z^{2} = w^{2} a^{1} +b^{2}​

    a^{2} = g^{2}(z^{2})​

    ...

    \widehat{y}

    目标:在测试阶段即使不执行 dropout,激活函数的预测结果也不会发生变化

二、理解 dropout

    1. 每次 dropout 会生成一个更小的神经网络。
    1. 收缩权重的平方范数:单元不能依赖任何特征 (该单元的任何特征都有可能被随机清除),故不会给任何一个输入加上过多的权重。
    1. 一般来说,某层的隐藏单元越多,该层的 keep-prob 越小;可以某些层用 dropout,某些层不用。

用途:防止过拟合,常用在输入数据不足的情况 (如计算机视觉)。

缺点:代价函数 J 不再被明确定义,结果难以复查。

三、其他正则化方法

1. 增加训练集

以图片为例,可将图片进行水平翻转/旋转/裁剪/放大/扭曲图片,可扩增算法数据。(但需要人工验证图片经过处理后仍是原物)

2. early stopping

运行梯度下降时,绘制训练误差或代价函数 J 的优化过程 + 验证集的误差

early stopping:在中间点停止迭代过程,即提早停止训练神经网络。

优点:只需要一次梯度下降,就可以找到 w 的较小值、中间值、较大值。

缺点:不能同时进行代价函数 J 的优化和 防止过拟合两个问题的解决。

3. L2 正则化

缺点:神经网络的训练时间更长,需要尝试很多次正则化参数 \lambda 的值,计算代价高。

相关推荐
吴佳浩16 分钟前
Run:ai 开源了,我把 GPU 编排摆回 AI 栈里看了一遍
人工智能
IT_Octopus2 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
LiuPig刘皮哥2 小时前
2026年开源3D陪玩对比:xiaoke.ai、AIRI、Open-LLM-VTuber、Amica 有什么、没有什么
人工智能·3d·开源
西柚小萌新2 小时前
【岗位面试】--成都博维数孪 - 工业 AI 解决方案顾问
人工智能·面试·职场和发展
Luminbox紫创测控3 小时前
车载LiDAR强光测试的实验设计方法与数据分析
人工智能·数据挖掘·数据分析·车载系统·安全性测试·太阳光模拟器
硅谷秋水4 小时前
CommitFlow:面向长时程机器人操作 VLA 执行的语义承诺验证与局部修正
机器学习·计算机视觉·语言模型·机器人
建筑工程企业管理系统4 小时前
工程进度统计管理系统自动化汇总数据,解决施工企业手工对账误差难题
大数据·人工智能·自动化
唠点键盘之外的4 小时前
27 存量系统接大模型:旁挂一个 AI 微服务,老架构一行不改
人工智能·微服务·架构
kaixin_啊啊4 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习