dropout的forward过程及backward反向传播过程

本文详细介绍了Dropout在深度学习中的作用,通过在训练过程中随机忽略部分神经元来防止过拟合。在前向传播中,Dropout根据随机生成的mask对输入进行下采样。训练时,为保持期望一致,Dropout后的结果会被缩放。在反向传播时,计算损失对输入的梯度时需考虑Dropout的影响。该方法有助于提高模型的泛化能力。
摘要由CSDN通过智能技术生成
forward过程

假设以概率 p p p丢弃 K K K维输入向量 x = [ x 1 , x 2 , , , x K ] x=[x_1, x_2, ,, x_K] x=[x1,x2,,,xK]的某些值。
那么经过dropout之后的向量定义为 d d d,有
x ′ = d r o p o u t ( x ) x' = dropout(x) x=dropout(x)
这个过程相当于生成一个随机的 K K K维的mask,这个mask的生成过程如下:

r = r a n d ( K ) = [ r 1 , r 2 , , , r K ] , 其 中 0 < r i < 1 。 m a s k = { 0      r i < p 1      r i ≥ p r = rand(K) = [r_1, r_2, ,,r_K], 其中0<r_i <1。 \\ mask = \left\{ \begin{aligned} 0 \ \ \ \ r_i < p \\ 1 \ \ \ \ r_i \ge p \end{aligned} \right. r=rand(K)=[r1,r2,,,rK]0<ri<1mask={0    ri<p1    rip
然后 x x x m a s k mask mask做对应元素点乘(这个操作记为 @ @ @)。也就是
x ′ = d r o p o u t ( x ) = x @ m a s k x' = dropout(x) = x@mask x=dropout(x)=x@mask
这样的设计的dropout会出现一些问题。在训练的时候,dropout工作, x x x经过dropout之后的期望为
E [ x ] = p ∗ 0 + ( 1 − p ) ∗ x = ( 1 − p ) x E[x] = p*0 + (1-p)*x = (1-p)x E[x]=p0+(1p)x=(1p)x
在测试的时候,dropout是不工作的,此时 x x x的期望是 x x x。这样导致训练和测试的期望不一样,模型会不稳定。为了让训练时候 x x x的期望和测试时一直,一种做法是在训练时将dropout后的结果除以 1 − p 1-p 1p。这时也就相当于将mask变为:
r = r a n d ( K ) = [ r 1 , r 2 , , , r K ] , 其 中 0 < r i < 1 。 m a s k = { 0      r i < p 1 1 − p      r i ≥ p r = rand(K) = [r_1, r_2, ,,r_K], 其中0<r_i <1。 \\ mask = \left\{ \begin{aligned} 0 \ \ \ \ r_i < p \\ {1 \over 1-p} \ \ \ \ r_i \ge p \end{aligned} \right. r=rand(K)=[r1,r2,,,rK]0<ri<1mask=0    ri<p1p1    rip

backward

假设模型forward之后的loss是 l l l,如何求反向传播时 l l l x x x的梯度?
x = [ x 1 , x 2 , . . . , x K ] x ′ = d r o p o u t ( x ) = x @ m a s k l = f o r w a r d ( x ′ ) x = [x_1, x_2, ..., x_K] \\ x' = dropout(x) = x@mask \\ l = forward(x') x=[x1,x2,...,xK]x=dropout(x)=x@maskl=forward(x)
那么 d l d x = d l d x ′ d x ′ d x {dl \over dx} = {dl \over dx'}{dx' \over dx} dxdl=dxdldxdx
其中
d x ′ d x = { 0      r i < p 1 1 − p      r i ≥ p {dx' \over dx} = \left\{ \begin{aligned} 0 \ \ \ \ r_i < p \\ {1 \over 1-p} \ \ \ \ r_i \ge p \end{aligned} \right. dxdx=0    ri<p1p1    rip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值