深度學習理論基礎11 輸出層的設計

2021-09-06 06:18:50 字數 1389 閱讀 5066

首先,繼續上節的話題。softmax()函式。

這只就是softmax函式了。其中a代表輸出層的輸入資料,ak代表第k個輸入。

如果你覺得又難理解又難記,其實可以拆成3步來理解:

1.把所有的輸入計算成序列[e**(a1),e**(a2),e**(a3)...e**(an)],用np的廣播功能一行就能搞定

2.計算得到上面的結果之和sum

3.第k個輸入的softmax之值即為 e**(ak)/sum

是不是用python語言比數學語言好理解多了?下面是python實現,感受下。

def softmax(a):

exp_a = np.exp(a)

sum_exp_a = np.sum(exp_a)

y = exp_a / sum_exp_a

return y

但是這個函式還有乙個瑕疵,如果np.exp方法的引數過大,會出現很大很大很大的數,

畢竟指數**不是鬧著玩的。

所以下面是改進版本

def softmax(a):

c = np.max(a)

exp_a = np.exp(a - c) # 溢位對策

sum_exp_a = np.sum(exp_a)

y = exp_a / sum_exp_a

return y

括號裡減掉乙個c難道不影響結果嗎?不要著急懵,非數學精英請跟隨我的證明。

如果理解依然有困難。可以這麼想,e**(a+c)=e**a乘以e**c   

既然分子和分母同時乘以e**c了,它們有什麼理由不相同呢?

所以,括號裡的部分,只要分子和分母加的是同乙個東西,就不影響結果。

softmax()的結果在0~1之間。所以把softmax()的輸出稱為概率。

softmax()是單調遞增的:

也就是說如果輸入資料本來就是最大的,經過softmax()計算之後還是最大。

如果輸入資料本來排行老二,經過softmax()計算之後還是排行老二。

所以神經網路在'推理'的過程可以省略softmax()。

'推理'是指用學到的模型對未知的資料進行分類,

也稱為神經網路的前向傳播(forward propagation)。

在輸出層使用softmax函式是因為它和神經網路的學習有關係,這部分的內容在後面博文裡。

--------結語--------

下集預告:手寫數字識別。

深度學習理論基礎1 Numpy

夜夢,語文老師勒令我寫一篇 深度學習入門 基於python的理論與實現 讀後感。我不敢懈怠,立即翻出我的膝上型電腦,開始寫作文。numpy 簡介 是乙個python第三方模組 處理陣列,矩陣,多維陣列十分便捷 底層用c語言實現,高效 numpy陣列的加減乘除運算 np arr np.array 1,...

深度學習理論基礎14 數值微分

先來看乙個導數的公式 其中h是趨近無限小的數。導數表示x方向的微小變化導致f x 的值在多大程度發生變化。如果用 幫助你的理解,這個 是這樣的 def numerical diff f,x h 10e 50 return f x h f x h 現在你大約了解了導數是怎麼回事 學渣才不知道的吧,喂!...

深度學習的理論基礎

在 1989 年提出通用近似定理以來,至少我們有了最基本的乙個理論基礎,即神經網路有潛力解決各種複雜的現實問題。mit 教授 tomaso poggio 曾在他的系列研究中 1 表示深度學習理論研究可以分為三大類 表徵問題 representation 為什麼深層網路比淺層網路的表達能力更好?最優化...