机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播
1. 監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí) ( Supervised Learning ) 和無監(jiān)督學(xué)習(xí) ( Unsupervised Learning ) 是在機(jī)器學(xué)習(xí)中經(jīng)常被提及的兩個(gè)重要的學(xué)習(xí)方法。
假如有一堆由蘋果和梨混在一起組成的水果,需要設(shè)計(jì)一個(gè)機(jī)器對(duì)這堆水果按蘋果和梨分類,但是這個(gè)機(jī)器現(xiàn)在并不知道蘋果和梨是什么樣的,所以我們首先要拿一堆蘋果和梨的照片,告訴機(jī)器蘋果和梨分別長(zhǎng)什么樣;經(jīng)過多輪訓(xùn)練后,機(jī)器已經(jīng)能夠準(zhǔn)確地對(duì)照片中的水果類別做出判斷,并且對(duì)蘋果和梨的特征形成自己的定義;之后我們讓機(jī)器對(duì)這堆水果進(jìn)行分類,看到這堆水果被準(zhǔn)確地按類別分開。這就是一個(gè)監(jiān)督學(xué)習(xí)的過程。
如果我們沒有拿蘋果和梨的照片對(duì)機(jī)器進(jìn)行系統(tǒng)訓(xùn)練,機(jī)器也不知道蘋果和梨長(zhǎng)什么樣,而是直接讓機(jī)器對(duì)這一堆水果進(jìn)行分類,則機(jī)器能夠根據(jù)自己的“直覺”將這一堆水果準(zhǔn)確地分成兩類。這就是一個(gè)無監(jiān)督學(xué)習(xí)的過程,說明機(jī)器自己總結(jié)出了蘋果和梨的特征,該過程看起來更貼近我們所設(shè)想的人工智能技術(shù)。
1.1 監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)定義:
提供一組輸入數(shù)據(jù)和其對(duì)應(yīng)的標(biāo)簽數(shù)據(jù),然后搭建一個(gè)模型,讓模型在通過訓(xùn)練后準(zhǔn)確地找到輸入數(shù)據(jù)和標(biāo)簽數(shù)據(jù)之間的最優(yōu)映射關(guān)系,在輸入新的數(shù)據(jù)后,模型能夠通過之前學(xué)到的最優(yōu)映射關(guān)系,快速地預(yù)測(cè)出這組新數(shù)據(jù)的標(biāo)簽。
在實(shí)際應(yīng)用中有兩類問題使用監(jiān)督學(xué)習(xí)的頻次較高,這兩類問題分別是回歸問題和分類問題:
- 回歸問題 (
Regression)
回歸問題就是使用監(jiān)督學(xué)習(xí)的方法,讓我們搭建的模型在通過訓(xùn)練后建立起一個(gè)連續(xù)的線性映射關(guān)系,主要有以下兩點(diǎn):
- 通過提供數(shù)據(jù)訓(xùn)練模型,讓模型得到映射關(guān)系并能對(duì)新的輸入數(shù)據(jù)進(jìn)行預(yù)測(cè);
- 我們得到的映射模型是線性連續(xù)的對(duì)應(yīng)關(guān)系;
應(yīng)用的機(jī)器學(xué)習(xí)方法為線性回歸。
- 分類問題(
Classfication)
分類問題就是讓我們搭建的模型在通過監(jiān)督學(xué)習(xí)之后建立起一個(gè)離散的映射關(guān)系。分類模型和回歸問題在本質(zhì)上有很大的不同,它依然需要使用提供的數(shù)據(jù)訓(xùn)練模型讓模型得到映射關(guān)系,并能夠?qū)π碌妮斎霐?shù)據(jù)進(jìn)行預(yù)測(cè),不過最終得到的映射模型是一種離散的對(duì)應(yīng)關(guān)系。
應(yīng)用的機(jī)器學(xué)習(xí)方法為邏輯回歸。
邏輯回歸(Logistic Regression)是機(jī)器學(xué)習(xí)一個(gè)最基本也是最常用的算法模型。與線性回歸不同的是,邏輯回歸主要用于對(duì)樣本進(jìn)行分類。
因此,邏輯回歸的輸出是離散值。對(duì)于二分類問題,通常我們令正類輸出為 1,負(fù)類輸出為 0。例如一個(gè)心臟病預(yù)測(cè)的問題:根據(jù)患者的年齡、血壓、體重等信息,來預(yù)測(cè)患者是否會(huì)有心臟病,這就是典型的邏輯回歸問題。
1.2 無監(jiān)督學(xué)習(xí)
無監(jiān)督學(xué)習(xí)定義:
提供一組沒有任何標(biāo)簽的輸入數(shù)據(jù),將其在我們搭建好的模型中進(jìn)行訓(xùn)練,對(duì)整個(gè)訓(xùn)練過程不做任何干涉,最后得到一個(gè)能夠發(fā)現(xiàn)數(shù)據(jù)之間隱藏特征的映射模型,使用這個(gè)映射模型能夠?qū)崿F(xiàn)對(duì)新數(shù)據(jù)的分類,這就是一個(gè)無監(jiān)督學(xué)習(xí)的過程。無監(jiān)督學(xué)習(xí)主要依靠模型自己尋找數(shù)據(jù)中隱藏的規(guī)律和特征,人工參與的成分遠(yuǎn)遠(yuǎn)少于監(jiān)督學(xué)習(xí)的過程。
使用無監(jiān)督學(xué)習(xí)實(shí)現(xiàn)分類的算法又叫作聚類。這里需要特別注意和有監(jiān)督學(xué)習(xí)里的分類的區(qū)別:
- 分類問題是我們已經(jīng)知道了有哪幾種類別;
- 而聚類問題,是我們?cè)诜治鰯?shù)據(jù)之前其實(shí)是不知道有哪些類別的。
即分類問題是在己知答案里選擇一個(gè),而聚類問題的答案是未知的,需要利用算法從數(shù)據(jù)里挖掘出數(shù)據(jù)的特點(diǎn)和結(jié)構(gòu)。
1.3 半監(jiān)督學(xué)習(xí)
半監(jiān)督學(xué)習(xí)( Semi-Supervised Learning,SSL)是模式識(shí)別和機(jī)器學(xué)習(xí)領(lǐng)域研究的重點(diǎn)問題,是監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)相結(jié)合的一種學(xué)習(xí)方法。半監(jiān)督學(xué)習(xí)使用大量的未標(biāo)記數(shù)據(jù),以及同時(shí)使用標(biāo)記數(shù)據(jù),來進(jìn)行模式識(shí)別工作。當(dāng)使用半監(jiān)督學(xué)習(xí)時(shí),將會(huì)要求盡量少的人員來從事工作,同時(shí),又能夠帶來比較高的準(zhǔn)確性,因此,半監(jiān)督學(xué)習(xí)目前正越來越受到人們的重視。
在此學(xué)習(xí)方式下,輸入數(shù)據(jù)部分被標(biāo)識(shí),部分沒有被標(biāo)識(shí),這種學(xué)習(xí)模型可以用來進(jìn)行預(yù)測(cè),但是模型首先需要學(xué)習(xí)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)以便合理的組織數(shù)據(jù)來進(jìn)行預(yù)測(cè)。
1.4 強(qiáng)化學(xué)習(xí)
又稱再勵(lì)學(xué)習(xí)、評(píng)價(jià)學(xué)習(xí),是一種重要的機(jī)器學(xué)習(xí)方法,在這種學(xué)習(xí)模式下,輸入數(shù)據(jù)作為對(duì)模型的反饋,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個(gè)檢查模型對(duì)錯(cuò)的方式,在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋到模型,模型必須對(duì)此立刻作出調(diào)整。常見的應(yīng)用場(chǎng)景包括動(dòng)態(tài)系統(tǒng)以及機(jī)器人控制等。常見算法包括 Q-Learning 以及時(shí)間差學(xué)習(xí)(Temporal difference learning)。
2. 欠擬合和過擬合
可以將搭建的模型是否發(fā)生欠擬合或者過擬合作為評(píng)價(jià)模型的擬合程度好壞的指標(biāo)。
欠擬合和過擬合的模型預(yù)測(cè)新數(shù)據(jù)的準(zhǔn)確性都不理想,其最顯著的區(qū)別
- 擁有欠擬合特性的模型對(duì)已有數(shù)據(jù)的匹配性很差,不過對(duì)數(shù)據(jù)中的噪聲不敏感;
- 而擁有過擬合特性的模型對(duì)數(shù)據(jù)的匹配性太好,所以對(duì)數(shù)據(jù)中的噪聲非常敏感。
2.1 欠擬合
在解決欠擬合問題時(shí),主要從以下三方面著手:
-
增加特征項(xiàng):
在大多數(shù)情況下出現(xiàn)欠擬合是因?yàn)槲覀儧]有準(zhǔn)確地把握數(shù)據(jù)的主要特征,所以我們可以嘗試在模型中加入更多的和原數(shù)據(jù)有重要相關(guān)性的特征來訓(xùn)練搭建的模型,這樣得到的模型可能會(huì)有更好的泛化能力。
-
構(gòu)造復(fù)雜的多項(xiàng)式:
這種方法很容易理解,我們知道一次項(xiàng)函數(shù)就是一條直線,二次項(xiàng)函數(shù)是一條拋物線,一次項(xiàng)和二次項(xiàng)函數(shù)的特性決定了它們的泛化能力是有局限性的,如果數(shù)據(jù)不在直線或者拋物線附近,那么必然出現(xiàn)欠擬合的情形,所以我們可以通過增加函數(shù)中的次項(xiàng)來增強(qiáng)模型的變化能力,從而提升其泛化能力。
-
減少正則化參數(shù):
正則化參數(shù)出現(xiàn)的目的其實(shí)是防止過擬合情形的出現(xiàn),但是如果我們的模型已經(jīng)出現(xiàn)了欠擬合的情形,就可以通過減少正則化參數(shù)來消除欠擬合。
2.2 過擬合
解決的過擬合問題,則主要從以下三方面著手:
-
增大訓(xùn)練的數(shù)據(jù)量:
在大多數(shù)情況下發(fā)生過擬合是因?yàn)槲覀冇糜谀P陀?xùn)練的數(shù)據(jù)量太小,搭建的模型過度捕獲了數(shù)據(jù)的有限特征,這時(shí)就會(huì)出現(xiàn)過擬合,在增加參與模型訓(xùn)練的數(shù)據(jù)量后,模型自然就能捕獲數(shù)據(jù)的更多特征,模型就不會(huì)過于依賴數(shù)據(jù)的個(gè)別特征。
-
采用正則化方法:
正則化一般指在目標(biāo)函數(shù)之后加上范數(shù),用來防止模型過擬合的發(fā)生,在實(shí)踐中最常用到的正則化方法有 L0 正則、L1 正則和 L2 正則。
-
Dropout方法:
Dropout方法在神經(jīng)網(wǎng)絡(luò)模型中使用的頻率較高,簡(jiǎn)單來說就是在神經(jīng)網(wǎng)絡(luò)模型進(jìn)行前向傳播的過程中,隨機(jī)選取和丟棄指定層次之間的部分神經(jīng)連接,因?yàn)檎麄€(gè)過程是隨機(jī)的,所以能有效防止過擬合的發(fā)生。
3. 后向傳播
深度學(xué)習(xí)中的后向傳播主要用于對(duì)我們搭建的模型中的參數(shù)進(jìn)行微調(diào),在通過多次后向傳播后,就可以得到模型的最優(yōu)參數(shù)組合。
深度神經(jīng)網(wǎng)絡(luò)中的參數(shù)進(jìn)行后向傳播的過程其實(shí)就是一個(gè)復(fù)合函數(shù)求導(dǎo)的過程。
復(fù)合函數(shù)對(duì)各個(gè)變量求導(dǎo)的值就作為后向傳播的微調(diào)值。
4. 損失和優(yōu)化
深度神經(jīng)網(wǎng)絡(luò)中的損失用來度量我們的模型得到的預(yù)測(cè)值和數(shù)據(jù)真實(shí)值之間的差距,也是一個(gè)用來衡量我們訓(xùn)練出來的模型泛化能力好壞的重要指標(biāo)。
模型預(yù)測(cè)值和真實(shí)值的差距越大,損失值就會(huì)越高,這時(shí)我們就需要通過不斷地對(duì)模型中的參數(shù)進(jìn)行優(yōu)化來減少損失;同理,預(yù)測(cè)值和真實(shí)值的差距越小,則說明我們訓(xùn)練的模型預(yù)測(cè)越準(zhǔn)確,具有更好的泛化能力。
二分類問題的解決過程中計(jì)算模型的真實(shí)值和預(yù)測(cè)值之間損失值的方法有很多,而進(jìn)行損失值計(jì)算的函數(shù)叫作損失函數(shù);
同樣,對(duì)模型參數(shù)進(jìn)行優(yōu)化的函數(shù)也有很多,這些函數(shù)叫作優(yōu)化函數(shù)。
4.1 損失函數(shù)
列舉三種在深度學(xué)習(xí)實(shí)踐中經(jīng)常用到的損失函數(shù),分別是均方誤差函數(shù)、均方根誤差函數(shù)和平方絕對(duì)誤差函數(shù)。
- 均方誤差函數(shù)
均方誤差(Mean Square Error,簡(jiǎn)稱 MSE)函數(shù)計(jì)算的是預(yù)測(cè)值與真實(shí)值之差的平方的期望值,可用于評(píng)價(jià)數(shù)據(jù)的變化程度,其得到的值越小,則說明模型的預(yù)測(cè)值具有越好的精確度。均方誤差函數(shù)的計(jì)算如下:
M S E=\frac{1}{N} \sum_{i=1}^{N}\left(y_{\mathrm{true}}^{i}-y_{\mathrm{pred}}^{i}\right)^{2}
其中,ypred 表示模型的預(yù)測(cè)值,ytrue 表示真實(shí)值,它們的上標(biāo) i 用于指明是哪個(gè)真實(shí)值和預(yù)測(cè)值在進(jìn)行損失計(jì)算。
- 均方根誤差函數(shù)
均方根誤差(Root Mean Square Error,簡(jiǎn)稱 RMSE)在均方誤差函數(shù)的基礎(chǔ)上進(jìn)行了改良,計(jì)算的是均方誤差的算術(shù)平方根值,其得到的值越小,則說明模型的預(yù)測(cè)值具有越好的精確度。均方根誤差函數(shù)的計(jì)算如下:
R M S E=\sqrt{\frac{1}{N} \sum_{i=1}^{N}\left(y_{\text { true }}^{i}-y_{\text { pred }}^{i}\right)^{2}}
3. 平均絕對(duì)誤差函數(shù)
平均絕對(duì)誤差(Mean Absolute Error,MAE)計(jì)算的是絕對(duì)誤差的平均值,絕對(duì)誤差即模型預(yù)測(cè)值和真實(shí)值之間的差的絕對(duì)值,能更好地反映預(yù)測(cè)值誤差的實(shí)際情況,其得到的值越小,則說明模型的預(yù)測(cè)值具有越好的精確度。平均絕對(duì)誤差函數(shù)如下:
M A E=\frac{1}{N} \sum_{i=1}^{N}\left|\left(y_{\text { true }}^{i}-y_{\text { pred }}^{i}\right)\right|
4.2 優(yōu)化函數(shù)
在實(shí)踐操作中最常用到的是一階優(yōu)化函數(shù),一階優(yōu)化函數(shù)在優(yōu)化過程中求解的是參數(shù)的一階導(dǎo)數(shù),這些一階導(dǎo)數(shù)的值就是模型中參數(shù)的微調(diào)值。
梯度其實(shí)就是將多元函數(shù)的各個(gè)參數(shù)求得的偏導(dǎo)數(shù)以向量的形式展現(xiàn)出來,也叫作多元函數(shù)的梯度。
例如,三元函數(shù) f(x,y,z) 的梯度為:
\left(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}\right)
5. 計(jì)算圖
每次迭代訓(xùn)練,神經(jīng)網(wǎng)絡(luò)模型主要分成兩個(gè)步驟:正向傳播( Forward Propagation )和反向傳播(Back Propagation )。
正向傳播就是計(jì)算損失函數(shù)過程,反向傳播就是計(jì)算參數(shù)梯度過程。
龐大的神經(jīng)網(wǎng)絡(luò),如何有效地進(jìn)行正向傳播和反向傳播,如何計(jì)算參數(shù)梯度?我將通過介紹計(jì)算圖( Computation graph )的概念,來幫大家輕松理解整個(gè)過程。
舉個(gè)簡(jiǎn)單的例子,輸入?yún)?shù)有三個(gè),分別是 a、b、c,損失函數(shù)可表示成 J(a,b,c)=(2a+b)c。令 a = 3,b = 4,c = 5,對(duì)應(yīng)的 J = (2x3+4)x5=50。
5.1 正向傳播
正向傳播過程,我們將 J 的表達(dá)式進(jìn)行拆分,例如使用 u = 2a,v = u + b,J = vc。拆分后的每個(gè)單運(yùn)算都構(gòu)成一個(gè) “ 節(jié)點(diǎn) ”,如下圖中的矩形方框所示。下面的這張圖就是計(jì)算圖。該計(jì)算圖中包含了三個(gè)節(jié)點(diǎn),分別對(duì)應(yīng) u = 2a,v = u + b,J = vc。這樣,我們就把正向傳播過程進(jìn)行了拆分,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)運(yùn)算。
5.1 反向傳播
反向傳播過程,這部分是最重要也是最難的部分。J 如何對(duì)參數(shù) a、b、c 求導(dǎo)?方法是利用偏導(dǎo)數(shù)的思想,分別依次對(duì)各個(gè)節(jié)點(diǎn) J、v、uJ、v、u 求導(dǎo),然后再順序?qū)Ω鲄?shù)求導(dǎo)。整個(gè)過程如下圖紅色箭頭所示,與黑色箭頭方向(正向傳播)正好相反。
以上就是利用計(jì)算圖對(duì)各參數(shù)求導(dǎo)的整個(gè)過程。
這個(gè)例子非常簡(jiǎn)單,參數(shù)很少,損失函數(shù)也不復(fù)雜。可能我們沒有明顯看到計(jì)算圖在正向傳播和反向傳播的優(yōu)勢(shì)。但是,深度學(xué)習(xí)模型中,網(wǎng)絡(luò)結(jié)構(gòu)很深,光是參數(shù)就可能有數(shù)十萬、百萬的,損失函數(shù)也非常復(fù)雜。
這時(shí)候,利用計(jì)算圖中的節(jié)點(diǎn)技巧,可以大大提高網(wǎng)絡(luò)的訓(xùn)練速度。值得一提的是現(xiàn)在很多的深度學(xué)習(xí)框架,例如 PyTorch 和 TensorFlow 都是利用計(jì)算圖對(duì)參數(shù)進(jìn)行求導(dǎo)的。
參考資料:
https://gitbook.cn/gitchat/column/5b447b698b5d4b11e880d287/topic/5b447e688b5d4b11e880d42f
總結(jié)
以上是生活随笔為你收集整理的机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《题山石榴花》第一句是什么
- 下一篇: 机器学习数学 — 初等函数求导