==============================================================
== 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,動態規劃是沒轍了。。。。
這一部分會在下一週的課程講到。^_^