【NLP机器学习基础】从线性回归和Logistic回归开始
古語常云:“大道至簡”,萬事萬物紛繁復雜,最終卻歸至幾個最簡單的道理。我常常在想,如今很火的AI領域是否也是如此。將AI真正學懂學會的過程就像一場遙不可及的漫長攀登,起始于晦澀難懂的數學領域(高數/線代/概率論),踉蹌于公式滿篇的機器學習,還要翻越神經網絡、編程與數據科學庫等重重大山,最終抵達應用的那個分岔路口,也從不是彼岸,只是新的開始。
這個系列文章【NLP機器學習基礎】,從最基礎的機器學習算法入手,著重算法的理解推導和應用實踐,是機器學習在自然語言處理中應用不可或缺的技術,當然,它也適用于通用的機器學習問題。
作者&編輯 | Miss思
1 概述
“現在的時代是深度學習的時代?!?br />
我時常聽到有人這么說,一度也是這么認為,將各種STOA模型的理解和復現似乎才是重中之重,至于機器學習,都是統計學習時代的老古董了,干嘛那么認真去學呢?
這種想法讓我在研究生入學第一階段的基礎學習過程中一度變得輕慢而浮躁,尤其是發現機器學習算法的實踐只需要那小小幾行代碼的時候,是啊,調個庫,調個包,誰不會呢?誰會那么傻,還一頁頁去啃西瓜書,去推《統計學習方法》?那些數學公式也太麻煩了吧~
可是我忽略了太多冰山下面的東西,就像學習武術伊始,沒有學好扎馬步。
機器學習一直以來是一門非常關鍵的學科,他的重要地位從未因為他所蘊含的數學內容而受到任何撼動,反而由于其嚴密的邏輯性和可解釋性成為機器學習算法強大的背后力量。
機器學習的優越之處其一在于他扎根數據的分析。從實實在在的數據樣本分布出發,從千百年前數學家提出的統計概率理論出發,每個公式的證明和每個公式的推導都有著清晰明了的理論依據。從最大似然估計到最小二乘法的最優參數選擇,從中心極限定理到高斯分布,雖然是基于假設去做推論,但每一步都走的扎實。
機器學習的優越之處其二在于他對于數據樣本的寬容性。眾所周知,深度學習時代的神經網絡模型是極度依賴于大量數據樣本的,這也催生了如今的數據標注行業的火爆,也有了那句極具諷刺意義的“有人工才有智能”。不論是CV行業圖片的標注,還是NLP行業文本的數據標注,是這些非?;A卻又一直重復的底層工作,成就了上層監督學習模型璀璨的光芒。而傳統機器學習對于數據的依賴相對較輕,他并不需要巨大無比的數據量,而只是需要使用一部分數據進行算法嘗試即可獲得不錯的效果。
在數據量少時先進行嘗試,再決定是否投入大批人力物力財力進行數據標注,這是一種很常見的思路。如今火爆的預訓練模型+利用小批量數據微調其實也是這樣的思路,只是機器學習比他早了很多年。
我從不提倡單純去學習某一層面而批判另一個層面,相反,最佳的結合莫過于兩者聯手。在擁有充足數據資源的情況下使用深度學習網絡進行特征提取,再結合機器學習思想或算法進一步處理,往往是更完美的做法,事實上,人們確實也這么做了。我曾讀過組里師兄的一篇優秀論文,其核心就是從目前棘手的問題入手,思考如何利用機器學習算法和深度學習模型進行解決,他巧妙地對數學公式進行變換,以一種相當強大的邏輯自洽完成了對一種經典NLP應用的算法優化,獲得了國際會議的一致好評。
你看,強強聯手就是這么酷。
2 回歸基礎
首先我們要明白一件事,機器學習究竟要做什么?
我們都學過數學,對函數也并不陌生,記得高考最頭痛的數學題也和函數有關,但我們所接觸的往往是已經給出的一個函數,參數固定,而x未知,對嗎?
機器學習要做的這件事卻和我們的認知相悖,他是基于過去的已知數據樣本,根據某種算法來利用機器學出參數來,并以此來預測未來的重要事件。
如今是疫情時期,我們就拿現在大家都關心的疫情預測來舉例吧,我曾在微博上看到清華AI團隊預測疫情將會在2.16日左右出現拐點,這個預測時間是如何確定的,我猜測很大可能也是機器學習算法,根據過往疫情爆發的數據選用合適的模型學習出準確率較高的參數,進而對未來可能發生的事件進行預測。
從這個例子中,我們發現了機器學習的三要素,模型、策略、算法,這也是李航老師在《統計學習方法》中所提出的核心概念。模型定義了解空間,在監督學習算法中,他就是包含了所有可能的條件概率分布或決策函數;我們將學習過程看作一個在解空間中進行搜索的過程,那么策略就是考慮用什么樣的準則學習以優化目標,從而使其預測值更加接近于訓練集的真實值;而算法就是指學習模型的具體方法,如著名的梯度下降法。
我們首先來看模型,模型的確定往往與數據樣本密切相關。
比如,什么是分類,什么是回歸,就可以從數據樣本長什么樣來確定,y是連續的,OK,你是回歸,y是離散的,你就是分類,就是這么簡單粗暴。你也可以從圖形角度來看,回歸往往是造出一條連續的曲線與數據樣本的真實值進行擬合,而分類則是在離散的樣本里切上幾刀,像分蛋糕一樣。
那么,科學家們是如何將數據轉化為可以推理和預測的數據公式呢?這里蘊藏著一些概率與數理統計的知識。首先,我們會假設所有樣本都是獨立同分布的,那么其誤差即服從均值為0,方差為某定值的高斯分布。Why? 因為中心極限定理。
中心極限定理假設有無窮多樣本進行分布,且x1,x2....xn互相獨立,則樣本們服從同一分布,且具有相同的期望和方差,并一定會收斂到標準正態分布。在實際問題中,很多隨機現象可以看作眾多因素的獨立分布影響的綜合反應,近似正態分布的應用前提往往是大量樣本確實存在。
以上內容,是理解下面三種回歸算法的前提。
3? 回歸算法
在詳細講解回歸算法之前,我們首先來了解一下這些算法有哪些應用。
線性回歸處理的是數值問題,也就是最后預測出的結果是數字。比如根據大批量房產數據及價格做房價預測,又比如利用過去股市的數據選取模型做股價擬合和股價預測。而邏輯回歸屬于分類算法,也就是說,邏輯回歸預測結果是離散的分類。比如推斷這封郵件是否是垃圾郵件,以及用戶是否會點擊此廣告等等。
回歸算法是后面若干強大算法的基石,他分為兩個重要的子類:線性回歸與邏輯斯特回歸。將這兩個算法理解透徹,將能夠更容易理解接下來的機器學習算法。下面,我們首先來看線性回歸。
3.1? 線性回歸
給定由d個屬性描述的數據樣本x = (x1;x2;...;xd),其中xi是x在第i個屬性上的取值,線性模型試圖學得一個通過屬性的線性組合來進行預測的函數,即f(x) = w1x1+w2x2+...+wnxn,一般用向量形式會寫成 f(x) = w的轉秩*x+b,其中樣本固定,而w作為參數也是一個n維的向量,當w和b確定后,線性模型也就得以確定。
而我們要做的線性回歸,就是在面對預測值連續,且擁有多個屬性一定數據樣本的情況下,學出參數向量w和b,從而確定出一個函數來,這個函數就是我們通常所說的模型,他在預測這種情況下的未來值時,同樣具有較高的準確率。
那么,我們從機器學習的三要素考慮,模型層面,由上一節內容我們可以知道由中心極限定理,樣本服從高斯分布,那么策略層面,我們選用什么準則以優化學習目標,算法層面,我們又使用什么具體方法利用機器進行參數學習呢?
從嚴謹的數據分布角度來說,有興趣的伙伴可以跟著我推一推。由于數據服從正態分布,即所有樣本都是獨立同分布的,那么就可以用似然函數進行推理(具體過程如下圖所示),可以看到,在x(i),參數確定下表示出y(i)的概率,再進行最大似然估計,使用對數函數將連乘優化為加和后,最終結果若要取最大,則在其他式子數值固定的前提下,包含theta參數的那個式子就要取最小,將他提取出來后得到的J(theta)即是傳說中的最小二乘估計,這也是線性回歸的目標函數(損失函數)。這個值越小,損失函數越小,模型所預測的結果與真實值相比差距就越小,模型就越好。這也揭示了最小二乘法的本質:高斯分布+最大似然估計——>最小二乘。
當然,我也閱讀了《西瓜書》,書中并未對此進行如此細致的推導,直接告知讀者使用基于均方誤差最小化來進行模型求解的“最小二乘法”來進行模型優化,并直接給出推導出的公式結論也是非常容易理解的,不過我想,經過推導的話,可能理解會更深刻吧~
OK,當推導出損失函數之后,我們策略方面就得到了完美的解答,接下來就是算法層面了。怎樣優化損失函數,讓損失函數值最小?
我們可以引入線性代數,將樣本與參數全部用向量表示,使用線性代數的已知推論進行駐點的求取,將X的每一行對應一個樣本,共M個樣本,將X的每一列對應樣本的一個維度,共N維,則求取梯度就變成了純粹的線性代數運算,過程如下圖所示。這樣求出的theta就是最小二乘意義下的參數最優解。
為了防止過擬合,theta往往還會加上lambda擾動,即線性回歸的復雜度懲罰因子,希望他的參數不要過多,其參數和不要過大,因而就有了我們都知道的L1正則(LASSO)(擁有特征選擇能力),L2正則(Ridge回歸),以及L3正則(Elastic Net,將L1和L2正則進行加權結合)。
然而,使用線性代數進行算法計算依舊是人力層面的推導計算,不符合利用計算機進行“機器學習"的初衷??茖W家因而研究出了”梯度下降算法”,使參數theta沿著負梯度方向迭代,更新后的theta使損失函數越來越小。
了解完線性回歸后,我們再來看Logistic回歸。
3.2? Logistic回歸
Logistic回歸則與線性回歸在一開始的應用出發點就有所不同,雖然二者看似都是回歸,但一個用于回歸,一個用于分類。我們可以將Logistic回歸看作是加了sigmoid函數的線性回歸,他的形狀很像S形,所以才會以Sigmoid命名。
Sigmoid函數在之后的深度學習中也會被頻繁用到,因為他的作用將數值結果轉化為了0到1之間的概率,接著我們依據這個概率進行預測,比如概率大于0.5,則這封郵件就是垃圾郵件,或者腫瘤是否是惡性等等。
他的表現形式如下圖所示,由于服從二項分布,因此獨特的表達方式讓他的參數估計和求導都變得與眾不同。
但讓人感到詫異的是,他參數的學習規則與線性回歸的學習規則是完全一致的,都如下圖所示:
二者的差異只是在于模型所服從的分布不同,也可以認為是函數表達式的不同。邏輯斯特回歸服從二項分布,由最大似然估計推導出最終的損失函數,而線性回歸則服從正態分布。因此,我們可以認為是對數幾率函數Sigmoid函數的出現,將線性回歸的數值轉化為0~1之間的概率,從而用于分類作用。在Logistic函數的表達式中,中z = theta的轉秩*x,而y = 1/1+e^z,這個公式則完全體現了數值轉化的過程。
綜上,我們對線性回歸和Logistic回歸算法進行了詳細的講解。我們分別從算法的作用、算法的數學形式、算法損失函數的推導及計算參數的策略進行了探索,并對兩者算法的異同點進行了對比分析。
希望學到這里的你能夠心得滿滿,并且有所收獲:)
下期我將會從實際應用入手,為大家講解回歸在機器學習及NLP中有哪些實踐應用。
總結
回歸算法是后面若干強大算法的基石,將回歸算法理解透徹,將能夠更容易理解接下來的機器學習算法。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預告:回歸算法在實踐中的應用
知識星球推薦
_
_
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人;
(2) 知識圖譜;
(3) NLP預訓練模型。
轉載文章請后臺聯系
侵權必究
往期精選
_
【完結】 12篇文章帶你完全進入NLP領域,掌握核心技術
【年終總結】2019年有三AI NLP做了什么,明年要做什么?
【NLP-詞向量】詞向量的由來及本質
【NLP-詞向量】從模型結構到損失函數詳解word2vec
【NLP-NER】什么是命名實體識別?
【NLP-NER】命名實體識別中最常用的兩種深度學習模型
【NLP-NER】如何使用BERT來做命名實體識別
【NLP-ChatBot】我們熟悉的聊天機器人都有哪幾類?
【NLP-ChatBot】搜索引擎的最終形態之問答系統(FAQ)詳述
【NLP-ChatBot】能干活的聊天機器人-對話系統概述
【知識圖譜】人工智能技術最重要基礎設施之一,知識圖譜你該學習的東西
【知識圖譜】知識表示:知識圖譜如何表示結構化的知識?
【知識圖譜】如何構建知識體系:知識圖譜搭建的第一步
【知識圖譜】獲取到知識后,如何進行存儲和便捷的檢索?
【知識圖譜】知識推理,知識圖譜里最“人工智能”的一段
【NLP實戰】tensorflow詞向量訓練實戰
【NLP實戰系列】樸素貝葉斯文本分類實戰
【NLP實戰系列】Tensorflow命名實體識別實戰
【NLP實戰】如何基于Tensorflow搭建一個聊天機器人
【NLP實戰】基于ALBERT的文本相似度計算
【每周NLP論文推薦】從預訓練模型掌握NLP的基本發展脈絡
【每周NLP論文推薦】 NLP中命名實體識別從機器學習到深度學習的代表性研究
【每周NLP論文推薦】 介紹語義匹配中的經典文章
【每周NLP論文推薦】 對話管理中的標志性論文介紹
【每周NLP論文推薦】 開發聊天機器人必讀的重要論文
【每周NLP論文推薦】 掌握實體關系抽取必讀的文章
【每周NLP論文推薦】 生成式聊天機器人論文介紹
【每周NLP論文推薦】 知識圖譜重要論文介紹
總結
以上是生活随笔為你收集整理的【NLP机器学习基础】从线性回归和Logistic回归开始的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【GAN优化】小批量判别器如何解决模式崩
- 下一篇: 【通知】有三AI GPU平台上线新功能,