一些矩阵向量求导的例子


全部公式的推导基于 矩阵求导公式 d Y = t r ( ( ∂ Y ∂ X ) T d X ) dY= tr( (\frac{\partial Y}{\partial X})^T dX) dY=tr((XY)TdX) 和 矩阵求导的微分法,属于标量对矩阵/向量的求导法则范畴

1.(单样本)多元logistic回归–softmax回归(一)

二元 logistic 和多元 logistic 的区别,参数是向量 w w w 还是矩阵 W W W
l = − y T log ⁡ ( s o f t m a x ( W x ) ) , 求 ∂ l ∂ W l =-\boldsymbol y^T \log (softmax (W \boldsymbol x)),求\frac{\partial l}{\partial W} l=yTlog(softmax(Wx))Wl
其中:
s o f t m a x ( a ) = exp ⁡ ( a ) 1 T exp ⁡ ( a ) = exp ⁡ ( a ) ∑ exp ⁡ ( a ) , 分 母 是 个 标 量 log ⁡ u c = log ⁡ ( u ) − 1 log ⁡ ( c ) , c 是 标 量 , u 是 向 量 , 向 量 1 和 u 同 型 , 实 质 是 对 向 量 的 逐 元 素 运 算 y T 1 = 1 , 是 向 量 的 内 积 1 T ( u ⊙ v ) = u T v , 哈 达 玛 积 转 换 为 向 量 内 积 \begin{aligned} & softmax(\boldsymbol a) = \frac{\exp(\boldsymbol a)}{\mathbf 1^T \exp(\boldsymbol a)} = \frac{\exp(\boldsymbol a)}{\sum_{\exp(\boldsymbol a)}} ,分母是个标量\\ & \log\frac{\boldsymbol u}{c} = \log(\boldsymbol u) - \mathbf 1 \log(c),c是标量,\boldsymbol u是向量,向量\mathbf 1和\boldsymbol u同型,实质是对向量的逐元素运算\\ & \boldsymbol y^T \mathbf 1=1,是向量的内积\\ & \mathbf 1^T (\boldsymbol u \odot \boldsymbol v) = \boldsymbol u^T \boldsymbol v ,哈达玛积转换为向量内积 \end{aligned}\\ softmax(a)=1Texp(a)exp(a)=exp(a)exp(a)logcu=log(u)1log(c)cu1uyT1=11T(uv)=uTv
对损失 l l l 的变换:
l = − y T log ⁡ exp ⁡ ( W x ) 1 T exp ⁡ ( W x ) = − y T [ log ⁡ ( exp ⁡ ( W x ) ) − 1 log ⁡ ( 1 T exp ⁡ ( W x ) ) ] = − y T log ⁡ ( exp ⁡ ( W x ) ) + y T 1 log ⁡ ( 1 T exp ⁡ ( W x ) ) = − y T W x + log ⁡ ( 1 T exp ⁡ ( W x ) ) \begin{aligned} l & = -\boldsymbol y^T \log\frac{\exp (W \boldsymbol x)}{\mathbf 1^T \exp(W \boldsymbol x)}\\ & = -\boldsymbol y^T \Big[\log (\exp (W \boldsymbol x)) - \mathbf 1 \log (\mathbf 1^T \exp (W \boldsymbol x)) \Big]\\ & = -\boldsymbol y^T \log (\exp (W \boldsymbol x)) + \boldsymbol y^T \mathbf 1 \log (\mathbf 1^T \exp (W \boldsymbol x))\\ & = -\boldsymbol y^T W \boldsymbol x+\log (\mathbf 1^T \exp (W \boldsymbol x))\\ \end{aligned} l=yTlog1Texp(Wx)exp(Wx)=yT[log(exp(Wx))1log(1Texp(Wx))]=yTlog(exp(Wx))+yT1log(1Texp(Wx))=yTWx+log(1Texp(Wx))
因为 l l l 是标量,所以 t r ( l ) = l , d t r ( l ) = t r ( d l ) tr(l)=l,d tr(l) = tr(dl) tr(l)=ldtr(l)=tr(dl),对 W W W进行微分:
d l = − y T d ( W ) x + d [ 1 T exp ⁡ ( W x ) ] 1 T exp ⁡ ( W x ) , 分 母 是 标 量 = − y T d W x + 1 T d [ exp ⁡ ( W x ) ] 1 T exp ⁡ ( W x ) = − y T d W x + 1 T ( exp ⁡ ( W x ) ⊙ ( d W x ) ) 1 T exp ⁡ ( W x ) = − y T d W x + exp ⁡ ( W x ) T ( d W x ) 1 T exp ⁡ ( W x ) , 哈 达 玛 积 转 换 为 向 量 内 积 \begin{aligned} dl & = -\boldsymbol y^T d (W) \boldsymbol x + \frac{d\Big[\mathbf 1^T \exp (W \boldsymbol x) \Big]} {\mathbf 1^T \exp (W \boldsymbol x)},分母是标量\\ & = -\boldsymbol y^T d W \boldsymbol x + \frac{\mathbf 1^T d[\exp (W \boldsymbol x)] } {\mathbf 1^T \exp (W \boldsymbol x)}\\ & = -\boldsymbol y^T d W \boldsymbol x + \frac{\mathbf 1^T (\exp (W \boldsymbol x) \odot(d W \boldsymbol x))} {\mathbf 1^T \exp (W \boldsymbol x)}\\ & = -\boldsymbol y^T d W \boldsymbol x + \frac{\exp (W \boldsymbol x)^T (d W \boldsymbol x)} {\mathbf 1^T \exp (W \boldsymbol x)},哈达玛积转换为向量内积\\ \end{aligned} dl=yTd(W)x+1Texp(Wx)d[1Texp(Wx)]=yTdWx+1Texp(Wx)1Td[exp(Wx)]=yTdWx+1Texp(Wx)1T(exp(Wx)(dWx))=yTdWx+1Texp(Wx)exp(Wx)T(dWx)
微分的迹变换:
d l = t r ( − y T d W x + exp ⁡ ( W x ) T ( d W x ) 1 T exp ⁡ ( W x ) ) = t r ( − y T d W x ) + t r ( exp ⁡ ( W x ) T ( d W x ) 1 T exp ⁡ ( W x ) ) = t r ( − x y T d W ) + t r ( s o f t m a x ( W x ) T ( d W x ) ) = t r ( − x y T d W ) + t r ( x s o f t m a x ( W x ) T d W ) = t r ( x [ s o f t m a x ( W x ) T − y T ] d W ) = t r ( ( ∂ l ∂ W ) T d W ) \begin{aligned} dl & = tr \Big(-\boldsymbol y^T d W \boldsymbol x + \frac{\exp (W \boldsymbol x)^T (d W \boldsymbol x)} {\mathbf 1^T \exp (W \boldsymbol x)} \Big)\\ & = tr (-\boldsymbol y^T d W \boldsymbol x ) + tr \Big( \frac{\exp (W \boldsymbol x)^T (d W \boldsymbol x)} {\mathbf 1^T \exp (W \boldsymbol x)} \Big)\\ & = tr(- \boldsymbol x \boldsymbol y^T d W) + tr\Big (softmax(W \boldsymbol x)^T(dW \boldsymbol x) \Big)\\ & = tr(- \boldsymbol x \boldsymbol y^T d W) + tr\Big ( \boldsymbol xsoftmax(W \boldsymbol x)^T dW \Big)\\ & = tr\Big ( \boldsymbol x[softmax(W \boldsymbol x)^T - \boldsymbol y^T]dW \Big)\\ & = tr\Big( (\frac{\partial l}{\partial W} )^T dW \Big) \end{aligned} dl=tr(yTdWx+1Texp(Wx)exp(Wx)T(dWx))=tr(yTdWx)+tr(1Texp(Wx)exp(Wx)T(dWx))=tr(xyTdW)+tr(softmax(Wx)T(dWx))=tr(xyTdW)+tr(xsoftmax(Wx)TdW)=tr(x[softmax(Wx)TyT]dW)=tr((Wl)TdW)
所以 ∂ l ∂ W = ( x [ s o f t m a x ( W x ) T − y T ] ) T = [ s o f t m a x ( W x ) − y ] x T \frac{\partial l}{\partial W} = \Big ( \boldsymbol x[softmax(W \boldsymbol x)^T - \boldsymbol y^T] \Big)^T = [softmax(W \boldsymbol x)- \boldsymbol y] \boldsymbol x^T Wl=(x[softmax(Wx)TyT])T=[softmax(Wx)y]xT

\qquad

2.(单样本)带有一个隐藏层的神经网络–softmax回归(二)

z p , 1 ( 1 ) = W p , n ( 1 ) x n , 1 + b p , 1 ( 1 ) a p , 1 ( 1 ) = h ( z ( 1 ) ) z q , 1 ( 2 ) = W q , p ( 2 ) a ( 1 ) + b q , 1 ( 2 ) a q , 1 ( 2 ) = g ( z ( 2 ) ) l = l ( W ( 1 ) , W ( 2 ) , b ( 1 ) , b ( 2 ) ) = − y T ln ⁡ a ( 2 ) \begin{aligned} \boldsymbol{z}_{p,1}^{(1)} & = & W_{p,n}^{(1)} \boldsymbol{x}_{n,1} + \boldsymbol{b}_{p,1}^{(1)}\\ \boldsymbol{a}_{p,1}^{(1)} & = & h(\boldsymbol{z}^{(1)}) \\ \boldsymbol{z}_{q,1}^{(2)} & = & W_{q,p}^{(2)}\boldsymbol{a}^{(1)} + \boldsymbol{b}_{q,1}^{(2)} \\ \boldsymbol{a}_{q,1}^{(2)} & = & g(\boldsymbol{z}^{(2)}) \\ l= l(W^{(1)},W^{(2)},b^{(1)}, b^{(2)}) & = & -\boldsymbol{y}^T \ln \boldsymbol{a}^{(2)} \\ \end{aligned} zp,1(1)ap,1(1)zq,1(2)aq,1(2)l=l(W(1),W(2),b(1),b(2))=====Wp,n(1)xn,1+bp,1(1)h(z(1))Wq,p(2)a(1)+bq,1(2)g(z(2))yTlna(2)
x n , 1 \boldsymbol{x}_{n,1} xn,1 为输入的单个样本,有 n n n 个特征,最后输出 q q q 个类别的预测概率, n , p , q n,p,q n,p,q 分别为输入层、隐藏层、输出层的神经元个数, h 、 g h、g hg 分别为两个激活函数,Latex 公式的第二个&是右对齐

∂ l ∂ W ( 1 ) 、 ∂ l ∂ b ( 1 ) 、 ∂ l ∂ W ( 2 ) 、 ∂ l ∂ b ( 2 ) \frac{\partial l}{\partial W^{(1)}}、\frac{\partial l}{\partial \boldsymbol b^{(1)}}、\frac{\partial l}{\partial W^{(2)}}、\frac{\partial l}{\partial \boldsymbol b^{(2)}} W(1)lb(1)lW(2)lb(2)l

2.1 误差反向传播到倒数第一层,求第一个误差 δ ( 2 ) \boldsymbol \delta^{(2)} δ(2)

δ ( 2 ) = ∂ l ∂ z ( 2 ) \boldsymbol \delta^{(2)} = \frac{\partial l}{\partial \boldsymbol z^{(2)}} δ(2)=z(2)l
a ( 2 ) \boldsymbol{a}^{(2)} a(2) 求微分:
d l = − y T d ( ln ⁡ a ( 2 ) )   激 活 函 数 h 不 确 定 , l o g 的 对 象 是 向 量 , 不 会 求 微 分 ! ! dl = -\boldsymbol{y}^T d(\ln \boldsymbol{a}^{(2)}) \ 激活函数h不确定,log的对象是向量,不会求微分!! dl=yTd(lna(2)) hlog
若确定 g g g 为softmax激活函数,神经网络为softmax回归的两层网络实现(多变换一次),则根据上个问题的求解,
l = − y T log ⁡ s o f t m a x ( z ( 2 ) ) = − y T log ⁡ exp ⁡ ( z ( 2 ) ) 1 T exp ⁡ ( z ( 2 ) ) = − y T [ log ⁡ ( exp ⁡ ( z ( 2 ) ) ) − 1 log ⁡ ( 1 T exp ⁡ ( z ( 2 ) ) ) ] = − y T log ⁡ ( exp ⁡ ( z ( 2 ) ) ) + y T 1 log ⁡ ( 1 T exp ⁡ ( z ( 2 ) ) ) = − y T z ( 2 ) + log ⁡ ( 1 T exp ⁡ ( z ( 2 ) ) ) , 参 见 多 元 l o g i s t i c ( 一 ) 的 l 的 推 导 \begin{aligned} l &= -\boldsymbol{y}^T \log softmax(\boldsymbol z^{(2)}) \\ &= -\boldsymbol{y}^T \log \frac{\exp(\boldsymbol z^{(2)})}{\mathbf 1^T \exp(\boldsymbol z^{(2)})} \\ & = -\boldsymbol y^T \Big[\log (\exp (\boldsymbol z^{(2)})) - \mathbf 1 \log (\mathbf 1^T \exp (\boldsymbol z^{(2)})) \Big] \\ & = -\boldsymbol y^T \log (\exp (\boldsymbol z^{(2)})) + \boldsymbol y^T \mathbf 1 \log (\mathbf 1^T \exp (\boldsymbol z^{(2)})) \\ &= -\boldsymbol y^T \boldsymbol z^{(2)} + \log (\mathbf 1^T \exp (\boldsymbol z^{(2)})),参见多元logistic(一)的l的推导\\ \end{aligned} l=yTlogsoftmax(z(2))=yTlog1Texp(z(2))exp(z(2))=yT[log(exp(z(2)))1log(1Texp(z(2)))]=yTlog(exp(z(2)))+yT1log(1Texp(z(2)))=yTz(2)+log(1Texp(z(2)))logisticl
要求 ∂ l ∂ z ( 2 ) \frac{\partial l}{\partial \boldsymbol z^{(2)}} z(2)l ,先对 z ( 2 ) \boldsymbol z^{(2)} z(2) 求微分:
d l = t r ( − y d z ( 2 ) + 1 T ( exp ⁡ ( z ( 2 ) ) ⊙ d z ( 2 ) ) 1 T exp ⁡ ( z ( 2 ) ) ) = t r ( − y T d z ( 2 ) + exp ⁡ ( z ( 2 ) ) T d z ( 2 ) 1 T exp ⁡ ( z ( 2 ) ) ) = t r ( − y T d z ( 2 ) ) + t r ( s o f t m a x ( z ( 2 ) ) T d z ( 2 ) ) = t r ( ( s o f t m a x ( z ( 2 ) ) T − y T ) d z ( 2 ) ) \begin{aligned} dl &= tr(- \boldsymbol y d \boldsymbol z^{(2)} + \frac{\mathbf 1^T (\exp (\boldsymbol z^{(2)}) \odot d \boldsymbol z^{(2)}) } {\mathbf 1^T \exp (\boldsymbol z^{(2)})} ) \\ &= tr(-\boldsymbol{y}^T d \boldsymbol z^{(2)} + \frac{\exp (\boldsymbol z^{(2)})^T d \boldsymbol z^{(2)} } {\mathbf 1^T \exp (\boldsymbol z^{(2)})} ) \\ &= tr(-\boldsymbol{y}^T d \boldsymbol z^{(2)}) + tr(softmax(\boldsymbol z^{(2)})^T d \boldsymbol z^{(2)}) \\ &= tr \Big((softmax(\boldsymbol z^{(2)})^T - \boldsymbol{y}^T) d \boldsymbol z^{(2)} \Big) \\ \end{aligned} dl=tr(ydz(2)+1Texp(z(2))1T(exp(z(2))dz(2)))=tr(yTdz(2)+1Texp(z(2))exp(z(2))Tdz(2))=tr(yTdz(2))+tr(softmax(z(2))Tdz(2))=tr((softmax(z(2))TyT)dz(2))
所以
δ ( 2 ) = ∂ l ∂ z ( 2 ) = ( s o f t m a x ( z ( 2 ) ) T − y T ) T = s o f t m a x ( z ( 2 ) ) − y \begin{aligned} \boldsymbol \delta^{(2)} = \frac{\partial l}{\partial \boldsymbol z^{(2)}} & = (softmax(\boldsymbol z^{(2)})^T - \boldsymbol{y}^T)^T \\ & = softmax(\boldsymbol z^{(2)}) - \boldsymbol{y}\\ \end{aligned} δ(2)=z(2)l=(softmax(z(2))TyT)T=softmax(z(2))y
其中, s o f t m a x ( z ( 2 ) ) T = ( s o f t m a x z ( 2 ) ) T softmax(\boldsymbol z^{(2)})^T = (softmax\boldsymbol z^{(2)})^T softmax(z(2))T=(softmaxz(2))T

接下来使用复合法则,通过 ∂ l ∂ z ( 2 ) \frac{\partial l}{\partial \boldsymbol z^{(2)}} z(2)l ∂ l ∂ W ( 2 ) \frac{\partial l}{\partial W^{(2)}} W(2)l
d l = t r ( ( s o f t m a x ( z ( 2 ) ) T − y T ) d z ( 2 ) ) ,

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值