【NLP】Day 9: 又是國王皇后的例子啦!Word2Vec、N-Gram

「模型有什麼盲點,反映其創造者的判斷,也反映創造這重視哪些東西。雖然模型據說是公正的,他們其實反映某些人的目標和意識形態。」
凱西・歐尼爾《大數據的傲慢與偏見》

我們前面提到了語言模型(Language modeling),是以統計機率的角度來看待語言(是否合理?我可能要先打個問號),所以為了要進行統計,過去通常會將語言以數值的方式呈現。昨天提到了幾種方法,首先是詞袋,只是有幾個缺點,第一是維度災難,太高的維度會給予電腦太高的負擔;第二是資料太稀疏,模型無法判別出資料的差異。所以自然語言處理專家後續又再發展出了幾種方法來改善這些缺點,像是昨天介紹的TF-IDF,以及今天要介紹的N-Gram以及Word2Vec。

不過什麼叫做以機率的角度來看待語言,我們可以先來看看以下例子:

1
2
3
4
"""
1. 魯夫說他想要成為海賊王
2. 說海賊王成為想要魯夫他
"""

今天在我們所說的那些自然語言中,第一句出現的機率絕對會比第二句高吧?也就是說,為了要「預測」後面會出現什麼句子或是詞語,或是在進行語音辨識、拼字矯正、文字校正這些較不清楚的資料輸入時,每個詞出現的機率在這時就變得特別重要。而N-Gram就是建立在這個基礎之上所訓練而成的模型方法。

N-Gram

N-gram代表由N個字所組成的字串,一個字叫unigram,兩個字叫bigram,三個字叫trigram。以前面海賊王的句子為例,bigram在例句一中,就會以 魯夫/夫說/說他… 的形式呈現,並賦予每一個bigram可能的出現機率。這種方式相較於最近頂尖流行的神經網路、BERT,是一個相對單純的建模方式外,也是了解語言建模基礎概念的重要基礎工具。以下我們將以bigram為例,來為您介紹N-gram的概念。

Bigram在這邊要做的,就是計算以前面的字為前提之下,後面的字會出現的機率是多少。比如說,今天我們有「海」這個字,後面是「賊」的機率是多少,因為前面是「海」的時候,後面接的也有可能是「洋」、「底」、「馬」。這該怎麼進行計算呢?

各位可千萬不要被這些數學符號嚇到了,其實就是我們高中所學的條件機率!同樣是以前面「海」為例的話,分母其實就是所有以「海」為開頭的詞語,其出現次數;至於分子就是我們要計算的「海賊」,其出現的次數。那假如今天要建立一個簡單的bigram模型,該怎麼做?讓我們來看看以下例子,有個簡易的範例語料庫:

1
2
3
<s>魯夫是海賊王</s>
<s>魯夫戴草帽</s>
<s>索隆砍敵人</s>

要計算這些bigram機率的話,可以這麼計算:

1
P(魯|<s>)= 2/3 P(夫|魯)= 2/2 P(是|夫)= 1/2

這邊就不把所有計算都列出來的,相信聰明的各位一定可以舉一反三吧!

透過這種方式所訓練出來的模型,就可以得到其訓練資料中的機率分配,而透過這些機率分配,就可以做到很多事情,比如說今天我們要運用這個模型來自動生成句子,那模型就可以從這些機率分配中抽出具有較高機率出現的字,也就比較不可能產生機率較低的字。

特性及優缺點

  1. n越大,模型出來的效果越好(但相對的運算消耗量也越大)
  2. 內容高度依賴訓練資料集,所以測試的資料跟訓練的資料,其domain相去甚遠時就不太有用,因此選擇的訓練資料要按照task的內容
  3. 完全無法處理訓練資料集中沒看過的資料(OOV, Out-of-voculary)

Word2Vec

跟前面學習下一個字出現的機率完全不同的概念,我們在這邊將不會計算文字w在文字x出現的次數,而是訓練一個分類器(classifier),來預測文字w是否有可能會出現在文字x附近,也就是把所有訓練資料壓在一個向量空間中,而這個分類器所得的權重,也就是所謂的詞嵌入(word embedding)。最後訓練出來的這些詞嵌入,會將不同的詞以向量的形式呈現,並透過計算的方式來理解詞與詞之間的關係。

以這張圖來舉例的話,機器學習模型就可以藉由男人(Man)與女人(Woman)的embedding來理解國王(King)以及皇后(Queen)之間的關係。當我們可以將詞轉換成向量時,就可以進行許多跟相似度有關的應用,比如說文本相似度、辭意相似度。

大家是否還記得Wordle,當時也有人透過Google所訓練的Word2Vec,做了一個猜字網站Semantle,大家有興趣可以去玩玩看,其實漸漸就可以發現,這不一定是我們所認知的近義詞,而是依照訓練資料的內容所得的「近義詞」。

特性及優缺點

看起來這麼厲害的詞向量,也是有它的優缺點,而按照慣例,我們也要來了解一下詞向量跟詞嵌入有什麼優缺點,以及有什麼特性需要我們去注意的。

刻板印象

由於詞向量是透過過去的大量文本資料所訓練而得的,所以其實某種程度上這些向量也隱含著人類過去隱含在文本中的一些暗示及毛病,也就是說,這也高度依賴著訓練資料。這些訓練資料若是包含對性別的歧視或刻板印象,那麼訓練出來的詞向量,也會有這種含義。例如:訓練出來「男人」相對於「程式工程師」,此時再輸入「女人」,帶有偏見的詞向量就會回答「家管」。這樣的訓練結果並不合適,因為假如程式設計公司今天要招募工程師,並用自然語言處理模型替履歷進行分類時,就可能因此將所有女性姓名全部放到「不合適」的類別,反倒更加深了性別刻板印象。

代表性問題

同理,過去的這些「有毒的資料」也會導致模型對族群有錯誤的連結。就有研究顯示,在Word2Vec中,非裔美國人的名字較容易與負面詞彙連結,而歐裔美國人較容易與正面詞彙進行連結;或者是,男人較容易與數學、工程等詞進行連結,而女人與藝術、文學的詞向量距離也比較近。

結語

說了這麼多,其實就是要了解到,在人工智慧越來越進步的時代,更多的是要探討這些模型 對人類社會可能造成的影響。 也就是說,人工智慧應該是幫助人類越來越進步的工具,是相輔相成的存在,我們不應該因為人工智慧,就放棄了身而為人所應該堅持的基本價值。 該怎麼做? 人工智慧、機器學習模型的運作必須是透明的,訓練資料來源必須是透明的、產生結果以及原因必須是透明的 ,這也就是我認為人工智慧應該以加強解釋力的方向持續努力的原因,更是人類在大數據時代實踐公平以及負責任所應該要學習的議題。