1. 程式人生 > >F1 score | why softmax | loglikehood & cross-entropy

F1 score | why softmax | loglikehood & cross-entropy

F1 score | why softmax | loglikehood & cross-entropy

最近找工作面試涉及到了很多研一時候學習的基礎知識,很多都忘記了,重新整理一下相關的問題,更側重和NLP相關的一些知識。

F1 score

  • accuracy
  • precision
  • recall
  • f1 score

一位同學面試的時候設計被問到,機器翻譯中的BLEU的計算,是以上中的哪一個?
首先,我們瞭解一下BLEU的計算方法(有一些改進,這裡只說大概的思路):
BLEU 會統計譯文中n-gram在reference中出現的次數,作為分子;
譯文中N-gram的個數作為分母;
其實我們來了解以上四個東西的含義:

1 0
1(ground true) TP TN
0(ground false) FP FN

so, we define this:
a

c c u r a c y = T P + F N
T P + T N + F P + F N
表示模型對整個樣本分類正確的能力
p r e c i s i o n = T P T P + F P 表示模型認為正確的當中,有多少是真正正確的
r e c a l l = T P T P + F P 表示樣本中正確的有多少被模型認為是正確的

那麼,根據以上的定義,首先BLEU的分母,是模型認為正確的項(解碼每次出來V個詞,選擇概率最大的,認為是正確的,但其實未必選擇的是正確的!)
分子項表示的是reference和模型都認為是正確的項;
故,BLEU是precision;

why softmax

這個問題,感覺困擾了我很久。
其實模型輸出的就是一個分佈,最開始以為softmax就是做一個歸一化,後來想想,其作用遠不止於此(感慨數學的美妙啊)。
根據名字來看,soft max,就是說可以不是最大的哪一個…
比如翻譯裡面,其實不一定非得選擇最大的哪一個,其次大的,說明語義可能相似。
那麼為啥softmax可以做到這一點,其實大家自己手動推一下就會發現,如果softmax之前是0-1之間的小數,那麼softmax之後,分佈概率差會減少…
另外,還有一些優點:
1。 softmax做分類任務,其損失函式可以直接定義為交叉熵;
2。計算梯度比較方便,因為softmax導數是概率-1;

loglikehood & cross-entropy

關於loglikehood和cross-entropy到底是什麼關係,感覺大家一直對此是模模糊糊的。先放出目前自己的結論:
在分類問題上,兩者形式上是等價的,負的似然跟交叉熵一致,但是考慮的角度不同。

根據定義來看,cross-entropy公式定義的是真實概率分佈( p ( x ) )和模型預測的概率分佈( q ( x ) )之間的關係, H ( p , q ) = p l o g q
直觀上來看,其實表示了預測結果和真實結果的差異度;如果是0,說明百分百是正確的,所以交叉熵是越小越好。
而最大似然的出發點是從樣本,如果模型的引數能擬合樣本,那麼predict label應該和true label的一致,也就是說predict 隱含著模型引數擬合樣本的能力;
loglikehood希望能獲取所有樣本特徵,所以是每個樣本正確分類的乘積形式,取對數之後就是log累加;
對每個樣本的正確分類概率,假設是獨立同分布的話,那麼其實就是伯努利分佈;
相關推導也不難,就不再寫了..

從結構化預測,或者是從機器翻譯(生成任務)的角度來剖析:
我們每次產生token的時候,其實做了一個假設,就是真實分佈是一個詞表大小的one-hot的分佈,模型預測的其實是一個softmax的分佈,然後交叉熵計算的其實是這兩個分佈的差距。
這裡其實就有點…嗯就是損失定義有些無法解釋。