Andrew Ng Deep Learning Tutorial中Softmax分类器梯度求导过程

Andrew Ng的deep learning tutorial 中 Softmax分类器求梯度的过程省略了,他直接给出

Δθ(k)J(θ)=i=1mx(i)((y(i)=k)exp(θ(k)Tx(i)Kj=1exp(θ(j)x(i)))(*)

但一眼无法看出结果,所以自己求了一下,几次算错。网上查的时候也有人很少有人推导或推错。折腾一下终于知道怎么推了。推导过程如下:
J(θ)=i=1mk=1K{y(i)=k}logexp(θ(k)x(i))Kj=1exp(θ(j)x(i))(1)

P(y(i)=k|x(i);θ)=exp(θ(k)x(i))Kj=1exp(θ(j)x(i))(2)

(2)(1)J(θ)=i=1mj=0K(y(i)=j)θ(j)x(i)logp=1Kexp(θ(p)Tx(i))

jI.j=k
J(θ)=i=1mθ(k)x(i)logp=1Kexp(θ(p)Tx(i))J(θ)θ(k)=i=1mx(i)(1P(y(i)=k|x(i);θ))(3)

II:jk使j=qJ(θ)=i=1mθ(q)x(i)logp=1Kexp(θ(p)Tx(i))
J(θ)θ(k)=i=1mx(i)(P(y(i)=k|x(i);θ))(4)
.
综合式(3)(4)可得出结果式(*) 。附上andrew ng softmax回归的链接 http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/。

你可能感兴趣的:(ML,分类,深度学习)