NLP 學習筆記 06 (Brown Clustering && Global Linear Models)

=================================================================

== all is based on the open course nlp on coursera.org week 9,week 10 lecture  ==

=================================================================

這是nlp課程最後兩週的內容了,感覺機器學習和nlp等方向是非常想通的,一如既往!下一步大概會系統地看大部頭和paper,增強編碼實現能力!

第十週的內容主要是GLMs分別在tagging和 Parsing上面的應用,我就不羅嗦了

1.Brown Clustering

1.1 Introduction

      布朗聚類是一種針對詞彙的聚類方法,Input是一系列的文章或者句子,Output有兩種
      第一種是:一系列的詞組,具體多少個類看你之前的設定:
            
      第二種是:每個詞都有一長串的二進制碼,用類似霍夫曼編碼的方式對每個詞進行編碼
               
        可以顯而易見的是,前綴相似度更高的詞就越相近
        什麼樣的詞彙相似呢?一個直覺的想法就是:相似的詞出現在相似的位置。
        更精確的說法就是:相似詞的前驅詞和後繼詞的分佈相似,也就是它前面的詞和後面的詞出現得是相似的。

 1.2 Formulation

         假設我們現在有一個分類器,可以把每個詞分配到一個類裏面,一共有k個類:

         

         整個模型如下:

         

          w1……wn是一條語料的詞,w0是一個特殊的開始符號

          e,q和我們之前學習的是一樣的,不過是從詞彙換成了分類而已

  1.3 The Brown Clustering

        我們現在來看整個布朗分類的模型:

          

        可以看到最重要的東西就是分類器C,怎麼衡量C的好壞呢:

          

        其中:G是一個常數

               

                   其中:n()是在分類器C的基礎下的計數的函數,統計分類在語料庫中出現的次數,和以前的count類似

        如何得到C呢,課程介紹了兩種方法:

         方法1.

                一開始我們把每一個詞單獨分配到一個類中,假設有|V|=n個,記住我們的目標是找到k個分類

                我們進行n-k次合併,每次把兩個類合併到一起,每次合併貪心地選擇能最大程度增加Quality(C)的兩個類

                這個naive算法的複雜度是多少呢?(n-k)*n*n*n^2,大概是O(N^5),即使是能優化到三次方複雜度,對於太大的 |V| 依然很不現實            

         方法2.

                 開始設置一個參數m,比如m=1000,我們按照詞彙出現的頻率對其進行排序
                 然後把頻率最高的m個詞各自分到一個類中,對於第m+1到|V|個詞進行循環:
                               1.對當前詞新建一個類,我們現在又m+1個類了
                               2.從這m+1個類中貪心選擇最好的兩個類合併(和方法1一個意思),現在我們剩下m個類
                 最後我們再做m-1詞合併,就得到了我們一開始說的一串01編碼所對應的樹,可以轉化爲響應編碼

2. Global Linear Models (GLMs)

2.1 Introduction

           到目前爲止,我們所有的模型都是這樣一個過程:把問題結構派生成一系列的組合(或者說decision),比如我們之前討論過的基於歷史的方法 (Log-linear Models),每個decision關係到一個概率,最後的模型是把所有decision的概率乘起來,這其中有兩種方式:
      
          這裏就不再詳述了,這在以前的筆記有記錄的。
          現在我們將進入到一種新的模型:Global Linear Models。
          以前我們把總的結構拆分成一個個decision,而GLMs則是用一些feature來考慮整體的結構,而不是孤立地拆分組合。
          現在看看GLMs都是由什麼組成的:

          :一個feature function : f  (和以前類似,但是我們還沒有具體定義,這裏先擱置)
         :一個函數 GEN(x)   :x是一個輸入,GEN函數生成一系列的候選結果
          :一個向量 v                :和以前是一樣
          
          其實可以看到,GMLs和Log-Linear的最大區別就在於feature function的選擇上,下面我們考慮一下feature function的選擇

2.2 Features

             我們之前說過,GLMs是用一些feature來考慮整體的結構,而不是孤立地拆分組合,那麼怎麼才能考慮整體的結構呢?
          一個直觀的理解就是把拆分的feature組合起來就是整體了
          基於這個思想,我們用更下一層的參數組合成我們要的feature function,比如:
          
          表示方框內的結構在語法樹上出現的次數,如果我們有多個這樣的參數對應不同的結構,那麼我們最終可以組成一個f:
         
          
           除此之外,另一個比較重要的部分是GEN函數,如果對於一個輸入要生成所有的候選結果,我們知道這個集合是非常大的,一個一般的想法就是使用基於歷史的模型(之前的模型)選出前多少個最好的候選答案。

2.3 Together

           最後,我們的總的東西就是:
   

2.4 the Perceptron Algorithm    

           最後一個問題,我們的v向量怎麼求呢?直接上算法吧
        
           很簡單的算法,你可以看到對v進行變動的那一行公式,如果到目前爲止的算法生成的結果和目標結果yi一致,v其實是不變的,如果不一致,v就會朝着目標結果的方向進行變化。
           除了這個Perceptron算法之外,也可以用最大似然等方法,只是複雜度會高很多
=========================================================
到此爲止吧,具體的應用就不講了,雖然感覺爛尾了
========================================================

發佈了85 篇原創文章 · 獲贊 1102 · 訪問量 175萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章