cross entropy的直觀理解
對於工作想寫些紀錄,學習有一種特別有效的方式稱為「費曼技巧」,透過假裝教學來學習,寫寫文章也有這種效果。既然我是文組畢業,寫些文科生也能懂得機器學習是一個不錯的目標,順便累積作品(coding放在github)對未來職涯也有幫助,但小弟專業上還有待精進,有誤的地方再麻煩好心人指出,謝謝。
今天講得是工作遇到的基本觀念,cross entropy交叉熵,簡單講就是衡量要找出正確答案,不同的策略,所要消耗的成本。
可能你早就用過這個函數了,不就是個除了Mean squared error(MSE)的cost function嗎?原因有二,第一,在決策樹(DT)或邏輯斯(LR)常見的演算法中經常使用,深刻了解後才能對於演算法會有更好的掌握,第二,相對於MSE是對於輸出結果的評量,cross entropy交叉熵是針對機率的評量,側重的目標不同。寫作時主要參考的文章是來在怎样理解 Cross Entropy,此文Quora問答的翻譯,翻譯沒甚麼問題,但並非全文翻譯,有部份省略,原文對照能夠更精準。
一、理解cross entropy之前,先了解何謂entropy 熵
熵直觀上的理解代表一個狀況的混亂情況,情況越混亂,熵越大,如果有一枚作弊的硬幣,怎麼丟都是正面,那它的情況就很穩定,熵就等於零。
Quora的問答舉了一個例子,如果我有四個不同顏色的球(紅橙黃綠),每個抽到的機率都是1/4,其中一種最好的問法是,相問是不是紅球或橙球,分為兩組後,再問是否為紅球 及 是否為黃球,就能找出所有的球,由於問了兩道題目,1/4(機率) * 2道題目 * 4顆球 = 2,平均需要問兩道題目才能找出不同顏色的球,也就是說期望值為2,代表entropy。
逆推回來,一顆球抽到的機率是1/4,找出這顆球的題目數是log(底數2, 指數 1/(1/4))=2,需要問兩題才能找出,所以把所有的可能性 與 要問的問題數加總起來,就代表情況平均所需的問題數目,也就是期望值,公式如下,i代表可能的情況:
SUM(Pi*log(2為底, 1/Pi))
代表在最好的策略,所需要的問題數量(entropy),所以情況如果越複雜,需要問的問題越多,entropy也會增加。
二、cross entropy:目前策略所需的問題數量(成本)
剛才在算entropy,都隱含了最佳解的設定,但現實狀況下,並不會這麼幸運,於是有了cross entropy,在某一策略下,猜彩色球需要的問題數,可能有些人比較傻,一開始只問了是不是藍色,這樣就導致了需要更多題目才能得到結果,計算出的cross entropy就會比較大。
公式上變動不大,第一個Pi一樣,代表情況不變,每個彩色的球抽到機率跟原本設定的一樣,但log(2, 1/Pi)的Pi是你目前策略所假設的機率,它所代表的意義是策略所產生的問題數量,以Pi"表示你執行策略所設定的機率, 公式變為
SUM(Pi*log(2, 1/Pi"))
不好的執行策略,就是對於原本的機率Pi的錯誤假設,Pi與Pi"的差距很大,導致cross entropy很高。
三、 應用:分類問題
cross entropy一個常見的運用場景就是非題(二項分布),例如這個用戶會不會流失,狀況只有兩種,會流失與不會流失。可用下列數學式表達:
- 用y代表實際狀況,由於是二項分布,用1或0代表兩種狀況,y or (1 — y)
- 用y"與(1 — y") 代表策略執行時的機率,對於實際情況的似然函數(Likelihood ),就是熟悉的白努力分佈(Bernoulli distribution)機率分布的公式:
y"^ y * (1 — y") ^ (1 — y)
當y = 1會得到y",我們會想最大化 y",相對的,y = 0會得到(1 — y"),就是最大化(1 — y"),為了簡化運算,取log就變成:
y log y" + (1 — y)log (1 — y")
而最大化上面的公式,就等於加個負號的取最小化,就是我們要推導的cross entropy 另外種說法是 log loss 。
- y log y" — (1 — y)log (1 — y")
最後再舉個例子,假設我有三枚硬幣,分別為正正反,每次預測都是一個獨立的事件,所選用的策略推估正面的機率為90%, 80%, 10% 平均cross entropy就是
- -1/3 * (1 log 0.9 + 1 log 0.8 + (1–0) log 0.1 )
- 而最棒的策略當然是機率推估為 100%, 100%, 0% 此時cross entropy計算後為零。