1. 程式人生 > 其它 >深度學習中的Softmax函式

深度學習中的Softmax函式

深度學習中的Softmax函式

1. 迴歸與分類

在深度學習中,有迴歸和分類這兩類問題。迴歸問題預測的是一個連續值,比如預測房價;而分類問題輸出的是多個值,輸出i就代表將結果預測為i的置信度。

​ 分類問題

​ 迴歸問題

2. 對類別進行編碼

\[\pmb{y}=[y_1,y_2,...,y_n]^T \newline y_i=\left\{ \begin{matrix} 1 \ if \ i=y \\ 0 \ otherwise \end{matrix} \right. \]

比如,一共有5個類別,那麼第一個類別的編碼就是[1,0,0,0,0],第二個類別是[0,1,0,0,0],以此類推。假設現在神經網路得到的各個類別的預測值分別是 o1

, o2, o3, 那麼就選擇置信度最大的值作為預測值:

\[\hat{y}=\underset {i}{argmax} \ o_i \]

一個好的分類網路應該要讓正確類別獲得的置信度遠遠大於其他類別。

3. 指數化和歸一化

我們希望輸出的每個類別的置信度能夠表示成概率的形式(代表結果匹配某一類別的概率),這就要求每一個類別得到的“分數”和為1且非負。可以使用以下這一公式將置信度轉換為概率:

\[\pmb{\hat y}=softmax(\pmb o) \] \[\hat {y}_i=\frac{exp(o_i)}{\sum_k exp(o_k)} \]

那麼自然就需要將概率\(\pmb{y}\)

\(\hat y\)之間的區別作為損失函式。

4. 交叉熵損失函式

如何衡量兩個概率之間的差別呢?一般我們用交叉熵來做這件事。交叉熵的定義:

\[H(\pmb p,\pmb q)= \underset {i} \sum -p_i log(q_i) \]

其中,\(p_i\)\(q_i\)代表了兩個不同的概率。

那麼將\(y_i\)\(\hat y_i\)代入上式,就可以得到這兩個概率向量之間的區別,將其作為損失函式,如下所示:

\[l(\pmb y, \pmb{\hat y})= - \sum_i y_i log \hat y_i = -log \hat y_y \]
  • 因此,Softmax迴歸是一個多類別的分類模型

  • 使用Softmax操作子可以得到每個類的預測置信度

  • 使用交叉熵來度量預測和標號的區別

5. 參考

https://www.bilibili.com/video/BV1K64y1Q7wu?p=1