NLP 學習筆記(Log-linear Models)

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

          == all is based on the open course nlp on coursera.org week 7,week 8 lecture  ==

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

1.The Language Modeling Problem

        現在拋開我們之前講的馬爾科夫模型的假設,對於一門語言的定義,肯定不能簡單依賴於每個單詞的前兩個單詞,這是常識。比如英語中的動詞形態就和主語有關。那麼我會怎麼考慮一個語言模型呢,很可能是下面這樣一個情況:
             
      我們之前講的Trigram模型也可以用這樣的形式來表示:
               
      那麼我們要用我們增加的一些定義,一種naive的方法就是選取一些參數來生成模型:
           
    可以想象,這是很難駕馭的。但是我們可以用這樣的模型來理論上地表示一些例子。
    而下面要講的Log-Liner Model就可以加入這些信息,並使其可操作。

2.Log-linear models

     2.1 Define

      我們首先用對Language Model的描述來引入log-linear model,Log-linear model其實是可以引入到很多問題裏面的。
     這裏我先作如下定義:
            
     然後我們定義feature(參數),一個參數就是一個函數,把x,y映射到一個具體的值
       
      一般來講,我們設定一個參數值選擇爲binary的值,要麼爲1,要麼爲0
      然後假設我們有m個不同的參數,對於一組(x,y),我們就有一個長度爲m的參數值向量:
       
      比如在language model中我們有這樣一系列的參數:
         
在實際中,這些參數的數量是非常多的,爲了方便,我們常常用簡便的方式來表示一些類似的參數:
            
         其中N(u,v,w)把每一組u,v,w映射爲一個不同的整數,這一組參數的數量就是不同u,v,w的數量,其實這也就是trigram model的定義,只不過我們用另一種方式表達出來而已。

      2.2 Result

          這樣我們就得到了一組m個參數,同時我們再定義一個長度爲m的向量v,然後我們就可以把(x,y)映射爲一個“score”(得分)了:
         
          其實就是數學中的向量的點乘。

    2.3 Further Define

        我們接下來再進一步用log-linear model來表示我們的Language model:
        我們有一個X是input空間,Y是一個有限的詞語空間,我們使:
              
         這就是我們的log-linear模型下的語言模型了,注意e的指數其實就是我們上面所說的"score"
         爲什麼叫log linear 模型呢?我們對兩邊取log看一下:
           
         一目瞭然了是吧

    2.4 for other problem

          除了Language Model,log liner的方法還可以用到其他問題上,比如說tagging problem(這個問題的描述在之前的日誌有講:點擊打開)
          我們要做的是重新設計feature函數,以及改變一下 history的的定義(也就是上面的x),上面我們是使x=w1,w2…wi-1
          在tagging problem中我們使:
          
         這樣就是 tagging problem 的log linear模型了,所以說log linear可以應用於比較廣的範圍。下面我們會詳細講 Tagging Problem中的log-linear model

3.Maximum-Likelihood Estimation for Log-liner Model

    3.1 introduction

         下面介紹下怎麼從訓練數據中得到參數,選擇的方法叫做ML(最大似然估計)
         我們有的就是一系列的x和y
         首先選擇v:
            
         其中L(v)爲:
                
         它叫做似然函數。
         有了似然函數,我們就可以選擇一種叫做Gradient Ascent的方法,也就是求使L函數最大的v
         這個其實就是梯度上升,就是在L上對v求導,得到梯度,然後一步步用梯度趨近最大值(這其實和梯度下降是相似的,具體可以這裏的部分內容)
               
         然後我們每次迭代使v加上 (β乘以這個導數),β是學習時選擇的參數,叫做學習速率。

   3.2 Regularization

          如果L只是簡單地上面那種形式,算法很可能會過擬合,一些v會變成非常大來更好地增大似然函數,但這種增大是畸形的,叫做overfitting
          解決的方法很多,最簡單的一種就是加入regularization的部分,也就是:
          
          這樣的話如果v過大就會招致penalty
          那麼:
         


########下面的課程相對細講了log linear model對於Tagging和Parse問題的方案,我選簡單的寫一個=========
########其實模型都是相似的===============================================================

4、Log-Linear Models for History-based Parsing

4.1回顧下Log-Linear Taggers

          好吧,這段我懶了,沒有寫log linera tagger的內容,所以在這補充總結一下,其實也不是很複雜
          
          大概就是這樣的一個模型,可以看出其實就是2.4的內容。

4.2 History-Based Models

         有了tag以後,我們可能還會有需求去求的一個parse,也就是語法樹,一步步來。
         假設我們能夠將一顆樹表示爲一系列的decisions,假設爲m個,我們有:
           
         注意這裏的m不一定是句子的長度,我們可以做很多decision來表示句子樹的結構
        然後我們定義:
               表示這個句子
        那麼對於一棵樹的probability就是:
            
        Over------就這麼簡單,關鍵是我們要怎麼來設計我們的decision
        注意和4.1對比一下,我們如果把decision換成tag的內容,就變成了Tagger的問題

4.3Ratnaparkhi's Parser:

       再繼續我們的內容之前,先放一個例子在這,好繼續描述:
         
     下面主要講的是一個叫做Ratnaparkhi的人的model,好吧,又是一個90後的model……
     他的模型主要分三層:

1. Part-of-speech tags 

                        這部分就是簡單的tag的model,每個decision就是一個tag的選擇
                         
                      

2. Chunks   

                     Chunks其實就是短語部分的模型:
                        
                      也就是上面那一排tag,其正式點的定義就是:所有兒子都是 Part-of-speech tags的節點
                      如何表示它的decision呢?我們用SART和JOIN來表示
                    
                      一目瞭然?再加上第一層的模型,現在我們的decision已經有2*n個了:
                     
                         

 3. Remaining structure

                      Remaining structure,我們看一下這顆tree還有什麼remaining了呢?更高層的樹的結構
                      我們將用Check來在第二層的基礎上來表示這棵樹:Check=NO 或者 YES
                      首先我們跑一次第二層,Check一直設置爲NO,不增加什麼操作,直到:
                               
                        我們設置Check=YES,那麼發生奇蹟的時刻到了,看到沒,一組Start和Join消失了,取而代之的是一個Chunk:PP
                              
                        我們再繼續,CHECK繼續爲NO:
                             
                    看到沒,在選擇Check爲YES的時候就把上一個start的部分合併成一個符號!!!
                   這樣繼續到最後,我們就得到了最終的decision:
                       

4.4 Applying a Log-Linear Model

                其實比較簡單,就是di作爲輸入,而<d1…di-1,S>作爲history
                     
                其中A表示所有可能的action(decision)
                那麼現在還有一個最大的問題,怎麼設計我們的 f ?!!
               Ratnaparkhi的模型中主要還是關聯了decision的部分,我們同樣可以對decision進行trigram或者bigram模型的設計,這是和以前的定義一樣的,然後將各部分混雜起來就會得到很多的f了。

4.5 Search Problem

            在POS tagging問題中我們能夠使用Viterbi algorithm的原因是我們有如下假設:
          
            但是現在的decision可能依靠之前的任意一個decision,動態規劃是沒轍了。。。。
            這一部分會在下一週的課程講到。^_^
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章