交叉熵函数
交叉熵函數
第一章 機器學習是什么
第二章 深度學習是什么
第三章 前饋神經網絡
第四章 卷積神經網絡
第五章 交叉熵函數
文章目錄
- 交叉熵函數
- 信息熵
- 交叉熵
信息熵
說到交叉嫡就要說一下“信息嫡”這個概念,信息嫡如果要用平民語言說得盡可能直白的話,我覺得可以說成是信息的雜亂程度或者意外程度的量化描述。
信息熵的公式如下:
解釋:前面的x我們當成一個向量吧,就是若干個x把每個可能項產生的概率乘以該可能性的信息量,然后各項做加和。
為了說得清信息熵還是具體舉例吧,比如中國乒乓球隊和巴西乒乓球隊比賽。
假設中國乒乓球隊和巴西乒乓球隊歷史交手共64次,其中中國隊獲勝63次,63/64是賽前大家普遍認可的中國隊獲勝的概率——這個是先驗概率。那么這次“中國隊獲勝”這個消息的信息量有多大呢?
“巴西隊獲勝”的信息量有多大呢?
所以,中國乒乓球隊和巴西乒乓球隊比賽的結果,這一信息的信息嫡約為:
交叉熵
如果信息嫡的概念理解沒有問題的話,那么交叉嫡的概念也就會好理解一些了,先給表達式。
從損失函數(交叉嫡損失函數)的形式上來看,會不會覺得比較眼熟?是的,看上去好像在做邏輯回歸,因為對于每一種分類都是伯努利分布,要么“是”要么“不是”,當然對于它們中每一個來說表達形式會看著多少有些同源。
對于最后一層SOFTMAX的每一個輸出節點來說,都是上面這個樣子,有多個x輸入的向量,有節點上的w矩陣跟它做內積,加上偏置b,再把結果通過Sigmoid函數輸出一個0到1之間的概率值。
Sigmoid函數是一個很有趣的函數,當把它對它的自變量z求導的時候會得到自身o(z)和1-o(z)的乘積。不要覺得奇怪,它的導數就是這個結果。然后一步一步做純數學推導:
根據鏈式法則,我們還是能得到這樣一個偏導值。偏導數能幫到我們的就是求出在凸優化時每個待定系數在更新中所移動的大小。我們只說一點好了,請注意這個地方我們如何理解:
在整個訓練進行的過程中,我們是把樣本向量和標簽向量同時放人模型的。在放入的時候自然樣本沒有特殊理由的情況下都是會將期望的分類維度設置成1,其余的維度設置成0,用這樣的形式來標記分類標簽向量。也就是上面說的這個yi。而在擬合的過程中會有這樣一個事實,那就是說當y為0的時候,由于y, In a失效而( 1-yi) ln ( 1-a)這一項是有效的,所以ln ( 1-a)的大小就是損失值了。這個就很好理解了,本來不應該分成這一類,但是1-a卻成為了分作這一類的概率,ln(1-a)是負數。
從函數yi-ln ( 1-x)的圖像上也能看出來,α越接近1產生的負值的絕對值就越大,也可以解釋成擬合所產生的分類概率與實際應該產生的分類概率分歧越大。反之,a越接近0則產生比較小損失值越小。同理,當yi為1的時候,( 1-y) ln ( 1-a)失效而yiIn a有效,此時產生很類似的情況,α越接近1則損失值越小,a越接近0損失值越大。E里面所包括的內容加和一定是一個負數,而在前面加了-二后則會變成正數,正數越大損失值也就越大。
在整個訓練的過程中,實際在每個樣本進行擬合的時候都會產生這樣一個效果,那就是諸如這樣一對一對的目標分類向量值和擬合分類向量值之間的差值:
看到這里大概知道“交叉嫡”是什么概念了吧?就是一種當前擬合出來的模型分類所產生的信息嫡和這種“客觀上”的信息嫡的差距。
首先,在你創造的這個“小世界”(就是這個網絡)里,比如你放進去10000張圖片做訓練,分成4類,不論這四類是比較平均的還是某一類比較多,從統計上都會產生一個信息嫡,也就是隨便來一張圖片即便不通過這個網絡也會有一個先驗概率產生。這個概率就是基于這些圖片“天然”分布的一個統計比例,這就和我們在不知道任何其他前提的情況下看到有個骰子扔到空中,當它落地的時候擲到1的概率是;或者在一個蘋果手機市場占有率為70%的地區,隨便在街上找到一個人問他的手機是什么品牌,回答為蘋果手機的概率為70%是完全一樣的情況。根據這種針對“客觀世界”的統計產生的分類的“信息嫡”就是分類目標的嫡,而在擬合過程中產生的嫡實際上跟這個嫡值是有差距的,這個差距就是在使用交叉嫡損失函數的情況下所定義的嫡的差距,那么優化的方向就是向著調整待定系數減小“嫡差”的方向去運動?,F在好理解了吧?而且通過觀察你也可以發現這個差值越大導數也就越大,學習的效率也就越高,這當然也是一個非常好的性質。通過訓練不斷調整眾多卷積核中w的大小,來決定一個合適的特征提取的量化值,這就是卷積網絡訓練的基本原理了。
ending!!!
本文參考文獻:《白話講深度學習與Tensorflow》高揚、衛崢 著
總結
- 上一篇: Java程序设计编程题目
- 下一篇: 彻底理解DDS(信号发生器)的fpga实