iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
AI & Data

邁向成為語言資料科學家的偉大航道系列 第 12

【NLP】Day 12: 豬耳朵餅乾跟機器學習也有關係?機器學習:羅吉斯回歸

  • 分享至 

  • xImage
  •  

麵粉、砂糖、水、植物油為主,其它成份則視做法及口感需求而有不同。餅乾之所以會出現螺旋線,這是由於兩種顏色的麵糰桿成皮狀,再將彼此疊合而捲成柱狀,以刀切割成每一片厚度相當的餅乾,就可以看出每一片餅乾都帶有螺旋線,經過烘烤後成形,即可食用。
維基百科《螺仔餅》

我先承認我真的沒梗,引言就找這個了XD

昨天我們講到了貝氏分類器,希望大家都有稍微理解機器學習模型大概會是以什麼方式呈現。我們在進入羅吉斯回歸的模型之前,先來回顧一下所謂的機率性機器學習分類器(probabilistic machine learning classifier)的大致組成吧,其實幾乎所有的機器學習模型都是依循這樣的模式在進行分類的,即便是神經網路也是幾乎雷同,而自然語言處理的模型也不排除在外。

模型架構

  • 特徵輸入
    將資料整理成機器學習模型可以理解的形式,首先就是要將這些文字轉換成數字,相信大家都還記得。那其實這種所謂「不同種將文字轉成數字」的方式,也有個專有名詞,稱為特徵工程(feature engineering),特徵工程所得之資料即可作為特徵輸入至模型。
  • 換算機率
    完成前面的特徵工程之後,會得到一系列的特徵相關數字,由於這些數字並不是模型的理想輸出(因為記得前面所提模型需要輸出的是分類的機率)所以會經過一系列的數學運算過後,得到最後為0~1之間的機率呈現。
  • 最大化與正確答案相符的可能性(Log-likelihood & Loss function)
    接著得到的機率有可能也不會是最好的答案,因為我們需要最小化所謂的損失函數,那要最小化的話,可以透過梯度下降的方式來求得最佳解。
    • 損失函數
    • 梯度下降

羅吉斯回歸

特徵輸入

在自然語言處理的領域中,除了可以透過直覺來判斷文本中可能的特徵之外,不同領域的文本也會有他們各自的特徵(比如說,前一陣子很有名的霸社,或者是將官首文化中的文本,可能就會有屬於其次文化的特殊語言特徵);另外,近期流行的自然語言處理方式,也會透過先前所說的 Word embedding 的方式作為特徵加入BERT語言模型中。

利用特徵計算原始分數

經過特徵工程之後,我們會得到一串數字(或是向量vector)羅吉斯回歸的第一步,就是先將這些向量x與權重 w(weight)進行內積(dot product)是不是又出現另外一個熟悉的名詞? ,內積過後得到的數字再加上 b (bias term, a.k.a intercept),這是為了避免有些過度表現的特徵影響了模型的判斷。

我會稱這段過程為計算原始分數。現在說考學測應該還不會暴露年齡吧?你可以這麼理解,我們計算的這個原始分數代表文章是正面或是負面的可能「程度」,就像是學測考完都會有一個「原始分數」。但這個所謂的程度或是原始分數,不是我們想要的結果,對吧?因為我們想要的是這個文本的可能是正面或是負面的「機率」是多少,就像是我們想要知道學測的「級分」,因為「級分」的高低才真正代表表現的好壞。為了要讓模型輸出機率,會再將這個「原始分數」加入激勵函數(activation function)將輸出數值轉換成機率。

利用激勵函數換算機率

經過前面的計算得到了原始分數之後,我們需要將這段原始分數加入激勵函數來輸出機率。激勵函數有很多種,其中包括今天會介紹的Sigmoid以及softmax,之後會再介紹另外兩種。同樣地,如同先前所說,這些函數各有優缺點,我們在下面來一一討論:

Sigmoid function



Sigmoid函數是最基礎,也是用來處理二元分類最常用的激勵函數。而Sigmoid activation function有幾個好處:

  1. Sigmoid可以將「原始分數」壓到[0, 1]之間,正好也是我們所需要的機率形式
  2. 在接近0以及接近1的地方,可以發現函數圖形逐漸趨平。這代表若有任何離群值(outlier),Sigmoid函數也可以把他壓縮到接近0或1,但卻又不會超過
  3. 可微分(differentiable),在後續做最佳解時會是一個有利的工具。

softmax function

softmax跟Sigmoid不同的地方在於,這是做多元分類時常用的激勵函數,只是差別在於前者只會給一個機率,而softmax則是會給每個標籤相對應機率,然後加總起來都會等於1。

所以假如說加入「原始分數」,就會是這樣的結果。

最大化與正確答案相符的可能性

前面你可能會發現,咦?那權重是怎麼來的?這就要先從Loss function開始講起:

損失函數(loss function)

損失函數其實就是為了要評估實際答案跟預測答案之間的差距,而要找出這段差距,首先要先進行條件最大機率估算(conditional maximum likelihood estimation),聽起來很複雜,但其實就是要將預測正確的可能性最大化,也就是所謂的log-likelihood。而權重就會在每一次的計算過程中不斷調整,直到找到最佳解。在這邊不會有複雜的數學推演,我只會簡單介紹計算的邏輯。

這裡是一個最大化的最佳解問題。那為了將它變成損失函數,也就是最小化的最佳解問題,在這裡會乘上一個負號

梯度下降

那要解這個最小化問題,在這邊會使用的方法就是梯度下降(gradient descent)。

這名字聽起來好像很可怕,用手算確實可怕,回想我大學在資管系修作業研究的辛酸血淚史(一抹淚),簡單來說,梯度下降法是一種找出最小化最佳解的一種演算法,意味著找出在函數空間中,斜率(slope)往上升程度最大的方向,並往這個方向的反方向前進。是不是不知道我在講什麼?我們馬上來看看一維簡化圖。

首先我們可以先對 w1 微分(這就是為什麼可微分很重要),找出在w1這個點的切線斜率是正亦或是負。若是正(切線方向為/)則代表應該要往左前進。而圖中 w1 的斜率是負的(切線方向為\),所以方向則是往右,方能找到最佳最小值。

但實務上不可能會有這種只有一維的資料吧!所以事實上函數圖形長得會像這樣:

我自己是覺得很像螺仔餅啦,不覺得嗎?我也是去查知道這餅乾的正式名稱


圖片來源:TVBS

那因為 logistic regression 是一個凸函數(convex),而凸函數只會有一個最小值,所以 logistic regression 一定有解。但神經網路不是凸函數(non-convex),所以在進行梯度下降時,就有可能困在同一個地方出不來,因此找不到最佳解。

問題與討論

最後來比較看看貝氏分類模型跟羅吉斯回歸模型。首先,貝氏分類模型過度強調事件的獨立性,而這代表每個輸入的特徵都是獨立的。 這會有什麼問題?假如我們輸入了兩次一模一樣的特徵,貝氏分類會將其視為兩個 完全不同 的特徵,並將這些特徵彼此相乘,最後結果導致模型過度側重這個特徵。但相對的,羅吉斯回歸就不會有這個問題,因為權重會依照特徵進行調整,將權重分配到高度相關的特徵。

但這就代表貝氏分類一無是處嗎?倒也不然。貝氏分類在處理少量資料時,就可以有非常好的表現。且貝氏分類器簡單,訓練速度較快,因此貝氏分類器也是輸人不輸陣的喔!

這裡就再次回應先前所說,沒有什麼最好的方法,只有最適合的方法。最重要的,是了解需求後,找出最適合任務的處理方式,才是最重要的!

好,今天講到這裡,明天要進入深度學習的領域囉!

資料與圖片來源:
Speech and Language Processing


上一篇
【NLP】Day 11: 什麼?妳男友有乾妹妹?那你很大機率被綠了!機器學習:貝氏分類器
下一篇
【NLP】Day 13: 可不可以再深一點點就好?深度學習基礎知識:你需要知道的這些那些
系列文
邁向成為語言資料科學家的偉大航道30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言