Typesetting math: 100%

理解dropout

dropout#

dropout指的是在神经网络层中,随即删掉一定比例的神经元,让它们不发挥传递作用,使网络模型变得稀疏的一种模型方法。

网络中的神经元以概率p,变为0,以q的概率保留,其中q=1p

为什么使用dropout#

众所周知,深度学习一直有那么几个很让人头疼的问题,其中就有模型过拟合训练时间长。而dropout就是对抗这两个问题的方法。

尤其是对于过拟合,所有的复杂模型在经过长时间训练后,基本都有可能出现过拟合,这时候模型就很难泛化,对于复杂的没见过的数据很难判断。而过拟合很大程度上因为模型的神经元之间通过不恰当的复杂连接依赖性太高,降低了本身的泛化能力。

一个解决方法是多训练几个模型,做平均求结果。但是这种方法依然要训练大量的参数,时间上还是降不下来。

ensemble#

dropout选择随机保留一部分神经元,保留下来的神经元在这次train中去协同适应,而由于每次都是随机的,所以这些神经元之间的固定关系就减少了,相比于之前的模型出现过拟合的情况就会好很多。

现在可以理解成我们能够产生2n种模型,其中n是神经元数量。这些模型能够起到结果平均的效果,而我们总共要训练的参数却没有成倍增长,相当于不同模型权值是共享的,减少了模型的协同作用,不同的ensemble方式让模型更加多样化。

motivation#

有一个很形象的比喻,这个观点可以直观地帮助理解为什么dropout可以发挥较好的效果。

dropout的动机与性别在自然界的出现相关。自然界的繁殖有有性繁殖和无性繁殖,常见的动物都采用有性繁殖,而很多低等的微生物会无性繁殖。无性繁殖会从母体的细胞中继承绝大多数的遗传基因,少部分靠变异,母体中的有利于生存的遗传基因会直接传递给后代,然而大自然最后还是选择了有性繁殖。

因为组合对生命进化起着更为关键的作用,即上一节说的ensemble。有性繁殖的组合方式让高等生命有更大的几率生存下来,而且能够更好地适应环境的变化,所以微生物的生存环境基本不会变化,只在很固定的范围内生存,而动物却能不停移动。

模型变化#

train#

引入dropout后,模型有下面这样的变化。

test#

测试时,我们让所有的参与dropout的参数都用期望计算。在p概率下保留的期望E=(1p)×0+px

rj(l)Bernoulli(p)y~(l)=r(l)y(l)zi(l+1)=wi(l+1)y~(l)+bi(l)yi(l+1)=activate(zi(l+1))

测试时,参数缩放。

wtest(l)p×wtrain(l)

posted @   TABball  阅读(820)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示
CONTENTS