1. 程式人生 > >【深度學習】Softmax迴歸(一)概念和原理

【深度學習】Softmax迴歸(一)概念和原理

文章目錄

概述

在前面的三篇文章中:

介紹了線性迴歸的基本原理,自己動手使用Python從0開始做了實現,同時也藉助MXNet深度學習框架進行了實現,並在一個公開資料集和一個模擬資料集上進行了實驗。

在機器學習問題中,我們通常將對連續值處理的模型叫做迴歸模型,對離散值處理的模型叫做分類模型。可以看到,線性迴歸正是適用於輸出為連續值的情況。在某些場景中,模型的輸出可能是諸如瓜的類別、影象類別等的離散值。比如輸入一張包含西瓜或哈密瓜的圖片,我們需要輸出圖片中包含哪種瓜,我們一般使用離散的值來描述這種類別,比如0代表西瓜,1代表哈密瓜。

這時我們可以採用分類模型來進行處理,比如Softmax線性分類模型(也稱Softmax迴歸)。筆者也正通過《動手學深度學習》這本線上書籍學習Softmax模型,藉此將學習筆記和心得記錄與此,希望可以和大家相互交流。

Softmax

Softmox迴歸模型

我們以上文提到的瓜的類別問題為例:

  • 假設輸入圖片的大小為 2 2 2*2 ,即包含4個畫素,每個畫素是一個特徵;
  • 假設需要判斷圖片中是哪種型別的瓜,以 y
    1 = 1 y_1=1
    代表西瓜, y 2 = 2 y_2=2 代表哈密瓜, y 3 = 3 y_3=3 代表木瓜;

Softmax和線性迴歸一樣,均對輸入特徵做線性疊加。與線性迴歸不同的是,Softmax輸出值的個數等同於樣本中的類別數,所以我們得到( o n o_n 表示模型的輸出):

{   o 1 = x 1 w 11 + x 2 w 21 + x 3 w 31 + x 4 w 41 + b 1   o 2 = x 1 w 12 + x 2 w 22 + x 3 w 32 + x 4 w 42 + b 2   o 3 = x 1 w 13 + x 2 w 23 + x 3 w 33 + x 4 w 43 + b 3 \left \{ \begin{array}{c} \ o_1=x_1w_{11}+x_2w_{21}+x_3w_{31}+x_4w_{41}+b_1 \\ \\ \ o_2=x_1w_{12}+x_2w_{22}+x_3w_{32}+x_4w_{42}+b_2 \\ \\ \ o_3=x_1w_{13}+x_2w_{23}+x_3w_{33}+x_4w_{43}+b_3 \end{array} \right.

Softmax和線性迴歸一樣,也可以看做是單層神經網路,並且輸出層也是全連線層,因為 o n o_n 依賴於所有的輸入 x n x_n 。畫出上述模型的神經網路結構如下:

在這裡插入圖片描述

向量形式

為了方便計算,我們將上述模型寫成向量形式。令:
x = [ x 1 x 2 x 3 x 4 ] , W = [ w 11 w 12 w 13 w 21 w 22 w 23 w 31 w 32 w 33 w 41 w 42 w 43 ] , b = [ b 1 b 2 b 3 ] , o = [ o 1 o 2 o 3 ] \boldsymbol x= \begin{bmatrix} x_1 & x_2 & x_3 & x_4 \\ \end{bmatrix} , \boldsymbol W= \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \\ w_{31} & w_{32} & w_{33} \\ w_{41} & w_{42} & w_{43} \\ \end{bmatrix} , \boldsymbol b= \begin{bmatrix} b_1 & b_2 & b_3 \\ \end{bmatrix} , \boldsymbol o= \begin{bmatrix} o_1 & o_2 & o_3 \\ \end{bmatrix}