Softmax
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

簡介

其實吧,一般在神經網路中用的最多的是sigmoid和tanh,當然也有用relu的。這是針對“是”和“否”的分類,但當進行多分類時,就要用到softmax 。

在logistic迴歸中,訓練樣本是:{(x(1),y(1)),…,(x(m),y(m))}\{(x^{(1)},y^{(1)}),…,(x^{(m)},y^{(m)})\},值得注意是,每個樣本x(i)∈R(n 1)x^{(i)}\in\Re^{(n 1)},當然了,其中x0=1x_0 = 1是對應的截距項。也就是說,每個樣本都是具有n 1維的向量,並且第1維都是為1(方便與引數θ\theta的第0維偏置b相乘)。

在logistic迴歸中,啟用函式是:

hθ(x)=11 exp(−θTx)

h_\theta(x) = \frac{1}{1 exp(-\theta^Tx)}
訓練θ\theta的最小化代價函式是:

J(θ)=−1m[∑i=1my(i)loghθ(x(i)) (1−y(i))log(1−hθ(x(x)))]

J(\theta) = -\frac{1}{m}\left[\sum_{i = 1}^my^{(i)}\log h_\theta(x^{(i)}) (1-y^{(i)})\log(1-h_\theta(x^{(x)}))\right]
其中,hθ(x)=11 exp(−θTx)h_\theta(x) = \frac{1}{1 exp(-\theta^Tx)}對應的圖形是:
這裡寫圖片描述
,那麼對應的對數影象是:
這裡寫圖片描述

我們要做的是分類,因此當然是想知道,當輸入x是,x分別屬於每一個類的概率,概率最大的那個就是我們認為的屬於的類
讓輸出為一個向量,並且有kk維,分別代表屬於ii類的概率。當然還要進行歸一化,讓輸出的向量元素的值和為1.

hθ(x(i))=⎡⎣⎢⎢⎢⎢⎢p(y(i)=1∣x(i);θ)p(y(i)=2∣x(i);θ)⋮p(y(i)=k∣x(i);θ)⎤⎦⎥⎥⎥⎥⎥=1∑kj=1eθTjx(i)⎡⎣⎢⎢⎢⎢⎢⎢eθT1x(i)eθT2x(i)⋮eθTkx(i)⎤⎦⎥⎥⎥⎥⎥⎥

h_{\theta}(x^{(i)})=\left[\begin{matrix}p(y^{(i)} = 1\mid x^{(i)};\theta) \\
p(y^{(i)} = 2\mid x^{(i)};\theta) \\
\vdots \\p(y^{(i)} = k\mid x^{(i)};\theta)\end{matrix}\right]=\frac{1}{\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}}\left[\begin{matrix}e^{\theta_1^Tx^{(i)}}\\e^{\theta_2^Tx^{(i)}}\\ \vdots\\ e^{\theta_k^Tx^{(i)}}\end{matrix}\right]

這裡的eθTix(i)e^{\theta_i^Tx^{(i)}}就是yiy_i,因此就是對輸出進行歸一化。

上面的公式真難打。。
可以看出,我們將hθ(x(i))h_{\theta}(x^{(i)})進行了變換,現在對於輸入x(i)x^{(i)},輸出的是一個向量了,並不是像sigmoid的一個0~1的數。值得注意的是:θi∈Rn 1\theta_i\in\Re^{n 1}是模型的引數。

softmax模型引數
softmax模型的引數是k個n 1維的θ\theta組成的矩陣,輸出的是向量。

θ=⎡⎣⎢⎢⎢⎢⎢θT1θT2⋮θTk⎤⎦⎥⎥⎥⎥⎥

\theta=\left[\begin{matrix}\theta_1^T\\\theta_2^T\\\vdots \\ \theta_k^T \end{matrix}\right]

代價函式

1{⋅}1\{\cdot\}是indicator function,表示{}內的表示式正確為1,否則為0.
代價函式是:

J(θ)=−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}logeθTjx(i)∑kl=1eθTlx(i)⎤⎦

J(\theta) = – \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right]

可以這樣理解,就是求另每個輸入屬於屬於每一類的概率,再求平均。
對比logistic的J(θ)J(\theta)

J(θ)=−1m[∑i=1m(1−y(i))log(1−hθ(x(i))) y(i)loghθ(x(i))]=−1m⎡⎣∑i=1m∑j=011{y(i)=j}logp(y(i)=j|x(i);θ)⎤⎦

J(\theta) = -\frac{1}{m} \left[ \sum_{i=1}^m (1-y^{(i)}) \log (1-h_\theta(x^{(i)})) y^{(i)} \log h_\theta(x^{(i)}) \right] \\
= – \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=0}^{1} 1\left\{y^{(i)} = j\right\} \log p(y^{(i)} = j | x^{(i)}; \theta) \right]

可以看出,形式非常相似,只是在累的標記的k個可能值進行了累加。
將x分類到類別 j 的概率為:

p(y(i)=j|x(i);θ)=eθTjx(i)∑kl=1eθTlx(i)

p(y^{(i)} = j | x^{(i)} ;\theta) = \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}} }

經過求導,得到梯度公式:

∇θjJ(θ)=−1m∑i=1m[x(i)(1{y(i)=j}−p(y(i)=j|x(i);θ))]

\nabla_{\theta_j} J(\theta) = – \frac{1}{m} \sum_{i=1}^{m}{ \left[ x^{(i)} \left( 1\{ y^{(i)} = j\} – p(y^{(i)} = j | x^{(i)}; \theta) \right) \right] }

∇θjJ(θ)\nabla_{\theta_j} J(\theta) 是一個向量,它的第ll個元素∂J(θ)∂θjl\frac{\partial J(\theta)}{\partial \theta_{jl}}是J(θ)J(\theta)對θj\theta_j的第ll個分量的偏導。
每次更新:θj:=θj−α∇θjJ(θ)\theta_j:= \theta_j – \alpha \nabla_{\theta_j} J(\theta),其中j∈[1,…,k]j\in[1,…,k]

權重衰減

雖然代價函式是上面形式,但是一般是新增一個權重衰減項λ2∑ki=1∑nj=0θ2ij\frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^{n} \theta_{ij}^2,衰減項主要是懲罰過大的引數。
此時:

J(θ)=−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}logeθTjx(i)∑kl=1eθTlx(i)⎤⎦ λ2∑i=1k∑j=0nθ2ij

J(\theta) = – \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }} \right]
\frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^n \theta_{ij}^2

,求導變成:

∇θjJ(θ)=−1m∑i=1m[x(i)(1{y(i)=j}−p(y(i)=j|x(i);θ))] λθj

\nabla_{\theta_j} J(\theta) = – \frac{1}{m} \sum_{i=1}^{m}{ \left[ x^{(i)} ( 1\{ y^{(i)} = j\} – p(y^{(i)} = j | x^{(i)}; \theta) ) \right] } \lambda \theta_j

相關文章

程式語言 最新文章