1. 程式人生 > >深度學習基礎(一) —— softmax 及 logsoftmax

深度學習基礎(一) —— softmax 及 logsoftmax

               

softmax:重新定義了多層神經網路的輸出層(output layer),注意僅和輸出層有關係,和其他層無關。

  • softmax function,也稱為 normalized exponential(指數族分佈的觀點);

1. softmax

我們知道在神經網路的前饋(feedforward)的過程中,輸出層的輸入(input)為: 

在 softmax 的機制中,為獲得輸出層的輸出(也即最終的輸出),我們不是將 sigmoid 函式作用於其上, 

而是採用所謂的 softmax function:

因此:

  • (1)輸出層輸出之和為 1 

    因為輸出層的輸出之和為1,其中一項增加,其他所有項則會相應減少。

  • (2)輸出層全部輸出均為正: 而且 softmax 的機制,也保證了所有的輸出均為正值;

終上所述,softmax 層的輸出其實為一種概率分佈(probability distribution),因此對於一個多 label 的分類任務(比如手寫字元識別,0-9)而言, 對應於最終的分類結果為  的概率。

2. logsoftmax

將原始資料從 x ⇒ log (x),無疑會原始資料的值域進行一定的收縮。

進一步地,還可對原始資料進行進一步的預處理,

# 假設 x 是一個向量deflogsoftmax(x):    m = T.max(x)    exp_x = T.exp(x-m)    Z = T.sum(exp_x)    return x-m-T.log(Z)