【cs231n】SVM与Softmax的梯度下降

文章目录


在cs231n课程的线性分类中讲了SVM和Softmax两种分类方法,但是没有给出梯度的具体计算过程,本文着重记录一下两个算法的梯度计算。

SVM

SVM的损失函数的计算过程如下:

  1. 首先计算Score: S = X W S = XW S=XW,其中S(N,C),W(D,C),X(N,D),矩阵S中得每一行即代表该训练样本在每一类别上得到的分数。 [ S 00 S 01 ⋯ S 0 C S 10 S 11 ⋯ S 1 C ⋮ ⋮ S i j ⋮ S N 0 S N 1 ⋯ S N C ] = [ ⋯ X 0 ⋯ ⋯ X 1 ⋯ ⋯ ⋯ X N ⋯ ] [ ⋮ ⋮ ⋮ W 0 W 1 ⋮ W C ⋮ ⋮ ⋮ ] \left[ \begin{matrix} S_{00} & S_{01} & \cdots&S_{0C} \\ S_{10} &S_{11} & \cdots &S_{1C} \\ \vdots& \vdots &S_{ij} & \vdots\\ S_{N0} &S_{N1} &\cdots &S_{NC} \end{matrix} \right] = \left[ \begin{matrix} \cdots &X_0 & \cdots \\ \cdots & X_1 & \cdots \\ &\cdots & \\ \cdots &X_N & \cdots \end{matrix} \right]\left[ \begin{matrix} \vdots & \vdots& &\vdots \\ W_{0} & W_{1} & \vdots &W_{C} \\ \vdots & \vdots &&\vdots \end{matrix} \right] S00S10SN0S01S11SN1SijS0CS1CSNC=X0X1XNW0W1WC
  2. 然后根据下式计算损失函数L L = 1 N ∑ i L i + λ ∑ k ∑ l W k , l 2 = 1 N ∑ i ∑ j ≠ y i [ max ⁡ ( 0 , S i j − S i y i + Δ ) ] + λ ∑ k ∑ l W k , l 2 L =\frac { 1 } { N } \sum _ { i } L_i+ \lambda \sum _ { k } \sum _ { l } W _ { k , l } ^ { 2 }= \frac { 1 } { N } \sum _ { i } \sum _ { j \neq y _ { i } } \left[ \max \left( 0 , S_ {i j } - S_ {i y _ { i } } + \Delta \right) \right] + \lambda \sum _ { k } \sum _ { l } W _ { k , l } ^ { 2 } L=N1iLi+λklWk,l2=N1ij̸=yi[max(0,SijSiyi+Δ)]+λklWk,l2

那么损失函数L对W求导可得: ∂ L ∂ W = ∂ L ∂ S ∂ S ∂ W = X T ∂ L ∂ S \frac { \partial L } { \partial W } = \frac { \partial L } { \partial S } \frac { \partial S } { \partial W } = X ^ { T } \frac { \partial L } { \partial S } WL=SLWS=XTSL那么只要求出 ∂ L ∂ S \frac { \partial L } { \partial S } SL就可以求出最终的倒数,由于损失函数为一个实数,根据矩阵的求导法则,可以得到 ( ∂ L ∂ S ) i j = ∂ L ∂ S i j (\frac { \partial L } { \partial S })_{ij} = \frac { \partial L } { \partial S_{ij} } (SL)ij=SijL,即 ∂ L ∂ S = [ ∂ L ∂ S 00 ∂ L ∂ S 01 ⋯ ∂ L ∂ S 0 C ∂ L ∂ S 10 ∂ L ∂ S 11 ⋯ ∂ L ∂ S 1 C ⋮ ⋮ ∂ L ∂ S i j ⋮ ∂ L ∂ S N 0 ∂ L ∂ S N 1 ⋯ ∂ L ∂ S N C ] \frac { \partial L } { \partial S }=\left[ \begin{matrix} \frac { \partial L } { \partial S_{00} } & \frac { \partial L } { \partial S_{01} } & \cdots&\frac { \partial L } { \partial S_{0C} } \\ \frac { \partial L } { \partial S_{10} } &\frac { \partial L } { \partial S_{11} } & \cdots &\frac { \partial L } { \partial S_{1C} }\\ \vdots& \vdots &\frac { \partial L } { \partial S_{ij} }& \vdots\\ \frac { \partial L } { \partial S_{N0} } &\frac { \partial L } { \partial S_{N1} } &\cdots &\frac { \partial L } { \partial S_{NC} } \end{matrix} \right] SL=S00LS10

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值