反向传播的一些推导

全连接层(FC)

FC的输入为 x⃗  ,且 x⃗ Rn×1 .
权重矩阵为 W ,且WRn×m,其中 Wij 表示第 j 个神经元的第i个参数.
偏置为b⃗ ,且 b⃗ Rm×1 .
输出为 y⃗  ,且 y⃗ Rm×1 .
那么,前向传播(forward)的计算公式是:

y⃗ =WTx⃗ +b⃗ 

把向量和矩阵都具体化为标量,则有:

yi=jxjWji+bi

设损失函数为 L ,已知Ly⃗ ,求 Lx⃗  , LW , Lb⃗  .

1. Lb⃗ 

Lbi===jLyjyjbiLyiyibiLyi

因此:

Lb⃗ =Ly⃗ 

2. LW

LWij===kLykykWijLyjyjWijLyjxi

因此:

LW=x⃗ (Ly⃗ )T

3. Lx⃗ 

Lxi===jLyjyjxijLyjWijWiLy⃗ 

因此:

Lx⃗ =WLy⃗ 


Batch normalization(BN)

BN的输入为 x⃗  ,且 x⃗ Rn×1 ,表示一个batch_size为 n ,特征长度为1.
输出为 y⃗  ,且 y⃗ Rn×1 .
平均值 μB 和方差 σ2B 均为实数.
x⃗ ^Rn×1 .
γ β 均为实数.

前向传播(forward)的计算公式是:

μBσ2Bxi^yi====1mixi1mi(xiμB)2xiμBσ2B+ϵγxi^+β

设损失函数为 L ,已知Ly⃗ ,求 Lx⃗  , Lγ , Lβ .

1. μBxi σ2Bxi

μBxiσ2Bxi========1mjxjxi1m1mj(xjμB)2xi2mj(xjμB)(xjμB)xi2m(j(xjμB)xjxi+j(xjμB)μBxi)2m((xiμB)+1mj(xjμB))2m((xiμB)+1mjxjμB)2m(xiμB)

2. xj^xi

xj^xi==(xjμB)σ2B+ϵ+σ2B+ϵ(xjμB)(σ2B+ϵ)xi1m(mxjxi1σ2B+ϵxjμB(σ2B+ϵ)32)

3. Lβ

Lβ==iLyiyiβiLyi

4. Lγ

Lγ==iLyiyiγiLyixi^

因此:

Lγ=xi^TLy⃗ 

5. Lx⃗ 

Lxi===jLyjyjxijLyiyjxj^xj^xiγjLyixj^xi


卷积(conv)

设conv的输入是 X ,XRn×m×c1, n ,m, c1 分别为输入的高,宽,通道数.
conv的核kernel是 3×3 ,步长strides是 1×1 .
conv的权重是 W ,WR3×3×c1×c2.
conv的偏置是 b⃗  , b⃗ Rc2×1
conv的输出是 Y ,YRn×m×c2, c2 为输出的通道数(这里卷积采用same的padding模式).

那么,卷积的计算公式是:

Yi,j,k=(k1=1c1i1=13j1=13Wi1,j1,k1,kXi2,j2,k1)+bk

其中 i2=i+i11,j2=j+j11

设损失函数为 L ,已知LY,求 LX , LW , Lb⃗  .

1. Lb⃗ 

Lbk1===kc2i,jLYi,j,kYi,j,kbk1i,jLYi,j,k1Yi,j,k1bk1i,jLYi,j,k1

即:

Lbk=i,jLYi,j,k

2. LW

LWi1,j1,k1,k2===kc2i,jLYi,j,kYi,j,kWi1,j1,k1,k2i,jLYi,j,k2Yi,j,k2Wi1,j1,k1,k2i,jLYi,j,k2Xi2,j2,k1

即:

LWi1,j1,k1,k=i,jLYi,j,kXi2,j2,k1

其中, i2=i+i11,j2=j+j11

3. LX

LXi2,j2,k1==kc2i,jLYi,j,kYi,j,kXi2,j2,k1kc2i,jLYi,j,kWi1,j1,k1,k

其中, i2=i+i11,j2=j+j11


激活函数

relu

relu(x)relu(x)=={x0x>0x0{10x>0x<0

于是:
Lxi==Lyiyixi{Lyi0xi>0xi<0

sigmoid

sigmoid(x)sigmoid(x)==11+exex(1+ex)2

于是:
Lxi==LyiyixiLyiexi(1+exi)2

tanh

tanh(x)tanh(x)==exexex+ex4(ex+ex)2

于是:
Lxi==LyiyixiLyi4(ex+ex)2

softmax

softmax(xi)softmax(xi)xisoftmax(xj)xi======exijexjexijexjxiexijexjexiexi(jexj)2exi(jexj1)(jexj)2exjkexkxiexj(kexk)2

于是:
Lxi===jLyjyjxijiLyjexj(kexk)2+Lyiexi(kexk1)(kexk)2LyiexikexkjLyjexj(kexk)2

selu

selu(x)selu(x)λα====λ{xα(ex1)x>0x0λ{1αexx>0x<01.05070098735548049341933498529461.6732632423543772848170429916717

于是:
Lxi==LyiyixiλLyi{1αexxi>0xi<0

最大池化(max-pooling)

设Max-pooling的输入是 X ,XRn×m( n ,m均为偶数).
Max-pooling的核kernel和步长strides是 2×2 .
Max-pooling的输出是 Y ,YRn2×m2.

那么,最大池化的计算公式是:

Yi,j=max(X2i,2j,X2i,2j+1,X2i,2j+1,X2i+1,2j+1)

其偏导数为:

Yi,jXa,b={10Xa,b=max(X2i,2j,X2i,2j+1,X2i,2j+1,X2i+1,2j+1)else

设损失函数为 L ,已知LYi,j,求 LXa,b ,其中 a[2i,2i+1],b[2j,2j+1] .

LXa,b===i,jLYi,jYi,jXa,bLYi,jYi,jXa,b{LYi,j0Xa,b=max(X2i,2j,X2i,2j+1,X2i,2j+1,X2i+1,2j+1)else

平均池化(avg-pooling)

设Avg-pooling的输入是 X ,XRn×m( n ,m均为偶数).
Avg-pooling的核kernel和步长strides是 2×2 .
Avg-pooling的输出是 Y ,YRn2×m2.

那么,平均池化的计算公式是:

Yi,j=14(X2i,2j+X2i,2j+1+X2i,2j+1+X2i+1,2j+1)

其偏导数为:

Yi,jXa,b=14

设损失函数为 L ,已知LYi,j,求 LXa,b ,其中 a[2i,2i+1],b[2j,2j+1] .

LXa,b===i,jLYi,jYi,jXa,bLYi,jYi,jXa,b14LYi,j

dropout

dropout(x)dropout(x)=={xkp0keepdrop{1kp0keepdrop

其中, kp 是保留的比例.

于是:

Lxi==Lyiyixi{1kpLyi0keepdrop

clip

clip(x;a,b)clip(x;a,b)==axbx<aaxbx>b010x<aaxbx>b

于是:

Lxi==Lyiyixi0Lyi0x<aaxbx>b


损失函数

softmax+交叉熵

设softmax的输入为 x⃗  , x⃗ Rn×1 .
设softmax的输出为 y⃗  , y⃗ Rn×1 .
设onehot后的标签为 l⃗  , l⃗ Rn×1 .
设标签为 k .
设交叉熵为E,则:

E==l⃗ log(y⃗ )log(yk)

则:

EykEyi==1yk0ik

因此:

ExiExk=======jEyjyjxiEykykxi1ykexk(lexl)2jEyjyjxkEykykxk1ykexk(lexl1)(lexl)21ykexklexl+1ykexk(lexl)2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值