斯坦福大學-自然語言處理入門 筆記 第十一課 最大熵模型與判別模型(2)

一、最大熵模型

1、模型介紹

  • 基本思想:我們希望數據是均勻分佈的,除非我們有其他的限制條件讓給我們相信數據不是均勻分佈的。均勻分佈代表高熵(high entropy)。所以,最大熵模型的基本思想就是我們要找的分佈是滿足我們限制條件下,同時熵最高的分佈。
  • 熵:表示分佈的不確定性的度量。就算公式如下:
  • 舉例而言:拋一枚硬幣的熵如下圖,橫軸表示拋到正面的概率
    在這裏插入圖片描述
  • 特徵限制:放到實際場景來考慮這個問題的話,我們所找的分佈是在滿足特徵限制的情況下的最大熵分佈。特徵限制公式如下:
    • 添加特徵限制會導致:得到的分佈有更低的最大熵,但是提升它對數據的最大似然(likelihood);使得分佈離均勻分佈更遠,但是會更接近數據的實際分佈。

2、例子介紹

  • 例子1:拋硬幣問題,限制一是:P(拋正面)+P(拋反面)=1,限制二:P(拋正面)=0.3
  • 例子2:已知一段文本中的元素的詞性以及對應的頻率,這個是我們的數據。基於此我們來尋找最大熵模型。

3、凸性

  • 凸的定義,滿足如下公式的函數就表示該函數有凸性,凸性保證函數只有一個單獨的全局最大值。
  • 基於凸的推導可得:有限制條件的熵是凸函數
    • -xlog(x)是凸函數;因爲凸函數的和也是凸函數,所以-∑xlog(x)是凸函數;限制條件是一個線性子空間,也是凸函數;所以有限制的熵就是凸函數。因此指數模型的最大似然也是凸的。

二、最大熵模型中的特徵重疊(overlap)

1、特徵重疊(overlap)

  • 正如我們在之前論述的那樣( Introduction to NLP by Chris & Dan翻譯 第八課 最大熵模型與判別模型 的第五節),重複的特徵對最大熵模型沒有影響,但是會對樸素貝葉斯產生影響。可以看到下面的例子中,兩個特徵都是A=2/3,對估計的結果沒有影響。
    在這裏插入圖片描述
    從下面的例子中,我們也可以看到:Grace和<G這兩個特徵(用箭頭指的特徵)存在着一定程度的重疊,因此特徵Grace的權重就接近於0。
    在這裏插入圖片描述

2、特徵交互(interaction)

  • 如果想在最大熵模型中構建特徵交互項,我們就需要直接加入交互項特徵。例子如下:
    在這裏插入圖片描述
    在這裏插入圖片描述

3、特徵選擇

  • 邏輯迴歸中的交互特徵選擇是用貪婪逐步搜索(greedy stepwise search)
  • 但是隨着本身的特徵增長,可能有效的交互特徵是指數型增長的,所以這種選擇只在有4-8個特徵的時候是有效的。
  • 在自然語言處理中,我們經常會使用到成百上千的特徵,所以我們不能使用這樣的選擇方法。
  • 一般而言,交叉項是基於語言直覺(linguistic intuitions)直接選擇的。

三、條件和聯合指數模型的關聯

  • 對聯合模型P(X)和條件模型P(C|D)而言,我們可以認爲C×D是一個複雜的X,其中
    • C比較小:2-100個種類
    • D非常巨大:文檔空間是很巨大的
  • 我們構建模型P(C,D),基於此我們計算特徵的期望
  • D是無限的,但是就我們的數據而言,d是有限的。所以我們可以在這個模型 中加入一個特徵,並且對它進行限制以匹配我們的實證數據。
  • 這樣大部分的P(c,d)就是0,這樣我們就可以把期望改寫成
  • 這個改寫的途徑就是把P(c,d)改寫成下面的公式,也就是包含P(c|d)的模式
  • 因此,實際上這兩個模型的關聯在於,條件模型實際上就是有邊界限制的聯合模型(這個限制是對觀察到的數據分佈的匹配)。

四、最大熵模型的平滑

1、爲什麼要進行平滑?

  • 特徵很多:NLP最大熵模型有超過一百萬的特徵,即使對這些參數進行簡單的存儲都會導致很大的內存負擔。
  • 稀疏很多:很容易導致過擬合,很多在訓練的時候用到的特徵可能在測試的時候不會再出現了。
  • 優化問題:特徵的權重可能是無窮大,迭代去需要花很多時間才能到無窮大
  • 舉例而言
    在這裏插入圖片描述
    在這裏插入圖片描述
    在上面的第三種情況中,會出現λ無窮大的情況,導致優化過程會非常漫長;並且它假設一直會出現正面,本身就沒意義。

2、平滑方法一:早停(early stopping)

  • 在進行幾輪的迭代之後,停止優化。
    • λ值就不會無窮大(但是會很大)
    • 優化不會無窮無盡地進行下去了
    • 經常被用在早期的最大熵模型中

3、平滑方法二:先驗(priors( MAP))

  • 設定存在一個先驗期望:參數值不會很大。這樣我們就可以利用先驗(priors)來平衡實證導致的無窮大的參數,使其平滑。
  • 實現方法:把優化目標改爲最大後驗似然
  • 先驗(prior)項:高斯/二次/L2先驗
    • 基本思想:先驗期望是每個參數都遵循平均數爲μ方差爲σ²的高斯分佈。如果參數離他們的平均先驗值(通常μ=0)很遠的話就會對他們進行懲罰。

      對於σ²而言,它的作用是調節參數離開μ的容易程度,如果很小的話,會使得參數更容易接近0。一開始的時候,比較合適的值是σ²=1/2,後期可以再調整。
      在這裏插入圖片描述
      我們可以把高斯先驗的優化目標寫爲:

      它的導數是:
    • 高斯先驗犧牲了一部分的期望匹配來獲得更小的參數。也就是那些有更多數據符合的特徵會有更高的權重。如下面的訓練數據所示,符合NNP特徵的數據比符合IN NNP特徵的數據多,因此NNP特徵的權重也更高。同時正確率也會提升。
      -
  • 例子:詞性標註
    在這裏插入圖片描述
  • 關於稱呼:在貝葉斯語境中我們一般稱之爲prior或者MAP估計。人們更常見的稱呼是正則,高斯先驗對應的稱呼是L₂正則。但是實際上這幾種稱呼對應的方法在數學上沒有區別。

4、平滑方法三:虛構數據(virtual data)

  • 基本思想:平滑數據而不是平滑參數。這個方法和生成模型的加一平滑非常相似。
  • 主要的問題是當特徵很多的時候,虛構數據會非常困難。
  • 例子如下:

5、平滑方法四:計數切斷(count cutoff)

  • 主要的想法就是直接把那些實證計數比較少的特徵丟掉
    • 非常弱和不直接的平滑方法
    • 相當於把這些特徵的權重改爲0
    • 相當於加入了一個平均值爲0方差爲0的高斯先驗
    • 丟掉的那些計數很少的特徵確實大部分是需要平滑的 ,同時它也降低了模型的規模加速了估計,但是和平滑相比它會傷害一定的準確性。
  • 我們認爲儘量不要使用計數切斷,除非是基於內存的原因。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章