機(jī)器學(xué)習(xí),看完就明白了

image.png

1 機(jī)器學(xué)習(xí)分類

  • 傳統(tǒng)機(jī)器學(xué)習(xí)
    機(jī)器學(xué)習(xí)可以理解成是生產(chǎn)算法的算法。需要人來(lái)先做特征提取,然后在把特征向量化后交給機(jī)器去訓(xùn)練。
    傳統(tǒng)機(jī)器學(xué)習(xí)分為 監(jiān)督學(xué)習(xí)無(wú)監(jiān)督學(xué)習(xí)。

  • 深度學(xué)習(xí)
    深度學(xué)習(xí)是基于深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)(DNN)。深度學(xué)習(xí)可以自動(dòng)提取特征。深度學(xué)習(xí)可以采用 End-to-End 的學(xué)習(xí)方式,只需要進(jìn)行很少的歸一化和白化,就可以將數(shù)據(jù)交給模型去訓(xùn)練。

2 機(jī)器學(xué)習(xí)中的一些概念

首先我們需要了解幾個(gè)機(jī)器學(xué)習(xí)中的起碼要知道是怎么回事的概念,了解了后面看代碼才不會(huì)一臉懵逼。

  • 訓(xùn)練樣本
    就是用于訓(xùn)練的數(shù)據(jù)。包括了現(xiàn)實(shí)中的一些信息數(shù)據(jù),以及對(duì)應(yīng)的結(jié)果,也就是標(biāo)簽。

  • 訓(xùn)練
    對(duì)訓(xùn)練樣本的特征進(jìn)行統(tǒng)計(jì)和歸納的過(guò)程。

  • 分類模型
    總結(jié)出的特征,判斷標(biāo)準(zhǔn)。

  • 驗(yàn)證
    用測(cè)試數(shù)據(jù)集驗(yàn)證模型是否正確的過(guò)程。這個(gè)過(guò)程是在模型訓(xùn)練完后進(jìn)行的,就是再用另外一些樣本數(shù)據(jù),代入到模型中去,看它的準(zhǔn)確率如何。

2.1 聚類

聚類 是一種典型的 無(wú)監(jiān)督學(xué)習(xí) ,是把數(shù)據(jù)進(jìn)行分類的過(guò)程。

進(jìn)行聚類的基本思想是,利用 向量 之間的距離 —— 空間中的 歐式距離曼哈頓距離 , 根據(jù)距離的大小判斷對(duì)象是否應(yīng)該歸為同一類別。

屏幕快照 2018-10-05 12.52.49.png

上圖是對(duì)3個(gè)一維向量分類的例子。明顯的能看到,離得近的兩個(gè)們可以近似的認(rèn)為它們屬于同一類別。

2.2 回歸

回歸簡(jiǎn)單的說(shuō)就是一個(gè) 由果索因 的過(guò)程。這是機(jī)器學(xué)習(xí)中很常用的一個(gè)手段。

回歸分為:

  1. 線性回歸
  2. 非線性回歸

實(shí)際使用那種回歸模型,需要根據(jù)情況而定。

2.2.1 線性回歸

線性回歸模型:

屏幕快照 2018-10-05 12.53.54.png

其中 w 是一個(gè)特征張量,儲(chǔ)存著與每個(gè)變量x中元素對(duì)應(yīng)的特征元素,x 就是輸入的訓(xùn)練數(shù)據(jù)張量,b 是一個(gè)偏置量。

這其實(shí)就是高中概率與統(tǒng)計(jì)章節(jié)中常見的一個(gè)公式。就像解那時(shí)候的應(yīng)用題一樣,我們需要根據(jù)一堆 (x,y)求解一個(gè)合適的 w 和 b。

屏幕快照 2018-10-05 12.54.40.png

看看上面這個(gè)應(yīng)用題,是否想起了高中時(shí)代的數(shù)學(xué)課?哈哈...

2.2.2 損失Loss函數(shù)

損失函數(shù)是用來(lái)評(píng)估模型預(yù)測(cè)結(jié)果和真實(shí)情況差距的,差距越小,說(shuō)明我們的模型越好,越準(zhǔn)確。

這,就是損失函數(shù)的公式!

屏幕快照 2018-10-05 12.55.16.png

當(dāng)我們假設(shè)一個(gè) w 和 b 后,循環(huán)計(jì)算每一個(gè) x 所得的值和真實(shí) x 所對(duì)應(yīng)的值相減,然后將每一個(gè)差相加求和,得到一個(gè)差值之和,就是當(dāng)前的損失。

損失越小,說(shuō)明所尋找到的 w 和 b 就越合適,當(dāng) Loss 為 0 時(shí),說(shuō)明此時(shí)模型的準(zhǔn)確率為 100% 。

事實(shí)上,這和高中概率與統(tǒng)計(jì)應(yīng)用題,給你一堆 x,y ,然后求一個(gè) 系數(shù)w 和 常量b 出來(lái)是一樣的一樣的。只不過(guò)在計(jì)算機(jī)中,由于算力比手算強(qiáng)大太多了,所以我們可以一遍一遍的調(diào)整 w 和 b 這兩個(gè)參數(shù),使 Loss 一直向趨于 0 的方向移動(dòng) ,從而使模型的準(zhǔn)確率趨于 100% 。

通常,為了使 Loss 始終保持為正 ,也會(huì)有如下?lián)p失函數(shù):

屏幕快照 2018-10-05 12.55.54.png

求平方使得結(jié)果橫為正數(shù)。

比如這個(gè)函數(shù)的圖像可能是一個(gè)三維的碗,那么我們的任務(wù)就是找到碗底的位置,也就是極值,因?yàn)樵谠擖c(diǎn)有解,即損失最小。

2.2.3 梯度下降法尋找最優(yōu)解

對(duì)于復(fù)雜函數(shù),我們要直接求解是巨困難的,甚至有時(shí)可以說(shuō)是處于不可解的狀態(tài)。我們需要尋找損失函數(shù)的極值,可以使用牛頓迭代法的思想進(jìn)行迭代尋找。

那對(duì)于復(fù)雜函數(shù)是不是就只能束手無(wú)策了呢?在你了解 牛頓迭代法 之后就可以回到不是了,而此前對(duì)于這個(gè)問(wèn)題也許只能回答不能了。

屏幕快照 2018-10-05 12.57.12.png

通過(guò)迭代,我們可以逐步的逼近索要尋找的極值。

這里,我們還人為的引入了一個(gè) η 參數(shù),這個(gè)參數(shù)用于調(diào)整步長(zhǎng)。步子邁大了可能會(huì)越過(guò)極值,邁小了有會(huì)產(chǎn)生很大的計(jì)算量,具體取多大合適,還是要多看看老司機(jī)們燙過(guò)的坑。

普通的梯度下降法(批梯度下降法,BGD),需要遍歷所有的數(shù)據(jù)樣本,在樣本量不大的時(shí)候還是可以的,畢竟這么干精度起碼是很高的。但是如果樣本容量巨大,那每次遍歷所有樣本,必然都會(huì)消耗很多時(shí)間成本。并且如果我們的損失函數(shù)不是一個(gè)凸函數(shù)誤差曲面就會(huì)存在多個(gè)局部極小值(即局部碗底),那采用這種方法可能會(huì)陷入局部最優(yōu)解中。

image

如上圖就是一個(gè)非凸損失函數(shù),有可能在梯度下降的過(guò)程中走到了一個(gè)局部最低點(diǎn)去,而這其實(shí)不是真正的最低點(diǎn)。

為了加快收斂速度,隨機(jī)梯度下降法(SGD) 就誕生了。它的思想是每次僅隨機(jī)的抽取樣本總體中的一個(gè)樣本,來(lái)決定下一步的走向。它的好處是不用遍歷所有的樣本,所以對(duì)于樣本容量巨大的情況,能夠極大的加快收斂。但可想而知,每次隨便取一個(gè)樣本來(lái)更新權(quán)值,最終的權(quán)值很可能并不是最優(yōu)解,不過(guò)有時(shí)在考慮現(xiàn)實(shí)情況的時(shí)候,這點(diǎn)精度誤差也是可接受的。

那我們可不可以既要速度,又要精度呢?當(dāng) CoorChice 這么問(wèn)的時(shí)候,你可就是知道套路問(wèn)題的套路答案了(也許下次 CoorChice 就不會(huì)按套路走了,啊哈哈?。?。答案就是 小批梯度下降法(Mini-batch GD)。它的思想是每次選取一定量的樣本進(jìn)行訓(xùn)練,然后再更新權(quán)值。即不用全部遍歷,也不會(huì)因?yàn)槊看胃聝H由一個(gè)樣本來(lái)決定而損失過(guò)多的精度。兩頭兼顧,當(dāng)然也比較中庸。

2.2.4 交叉熵

在了解交叉熵之前,先了解一下什么是信息熵?

首先看兩個(gè)相關(guān)公式。

信息量公式:

屏幕快照 2018-10-05 12.57.49.png

沒錯(cuò),通過(guò)對(duì)一種情況發(fā)生的先驗(yàn)概率進(jìn)行對(duì)數(shù)計(jì)算的結(jié)果,被用來(lái)表征這種事件發(fā)生的信息量。

信息熵公式:

屏幕快照 2018-10-05 12.58.10.png

就是將所有事件的信息熵進(jìn)行加和。這個(gè)值越大,表明對(duì)于預(yù)測(cè)一個(gè)事件而言的不確定性就越大。

上面的公式是 信息熵 公式,它表示對(duì)于一系列事件,根據(jù)其歷史發(fā)生數(shù)據(jù)可以計(jì)算出一個(gè)先驗(yàn)概率,根據(jù)這個(gè)先驗(yàn)概率,可以計(jì)算出該事件發(fā)生的信息量,再將信息量乘以先驗(yàn)概率,就可以得到單個(gè)事件的熵。將這些事件的熵求和,就可以得到信息熵了。它有什么作用呢?就是用來(lái)量化信息量的,如果越不確定,則其信息熵就越大。對(duì)于一個(gè)有序的系統(tǒng)(按部就班)來(lái)說(shuō),它的信息熵就比較小了。

如果理解了信息熵,接下來(lái)就可以更進(jìn)一步的了解交叉熵了。

首先,交叉熵?fù)p失函數(shù)如下:

屏幕快照 2018-10-05 12.58.16.png

y 表示期望輸出值,a 表示實(shí)際模型的輸出。

交叉熵是用來(lái)干什么的呢?它表示的訓(xùn)練結(jié)果和實(shí)際標(biāo)簽結(jié)果的差距。

交叉熵函數(shù)也有這種常用的形式:

屏幕快照 2018-10-05 12.58.21.png

通常交叉熵會(huì)和 Softmax 激勵(lì)函數(shù)一起在輸出層計(jì)算輸出。

3 深度學(xué)習(xí)的基本概念

深度學(xué)習(xí)是基于深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)。它的概念類似與人的神經(jīng)結(jié)構(gòu),由神經(jīng)元可鏈接成一個(gè)神經(jīng)網(wǎng)絡(luò),每個(gè)神經(jīng)元被作為一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)。

好像一下又回到了生物課!

深度學(xué)習(xí)相對(duì)于傳統(tǒng)的機(jī)器學(xué)習(xí)來(lái)說(shuō),很明顯的優(yōu)勢(shì)在于能夠自動(dòng)提取特征,可將線性不可分的問(wèn)題轉(zhuǎn)變?yōu)榫€性可分的問(wèn)題。

使用傳統(tǒng)機(jī)器學(xué)習(xí),不管用樸素貝葉斯、決策樹、支持向量機(jī)SVM等分類模型之前,必須對(duì)大量的模型進(jìn)行處理,人工的從中提取特征用于量化。而在深度學(xué)習(xí)中,通過(guò)大量的線性分類器的堆疊,加上一些非線性因素,可以使一些特征能夠自動(dòng)的顯現(xiàn)出來(lái),而干擾因素經(jīng)過(guò)過(guò)濾也能很大程度的被忽略。

總之,這種方式的機(jī)器學(xué)習(xí)肯定是更加先進(jìn)的,但是需要消耗的資源也會(huì)更大。

深度學(xué)習(xí)由于是自動(dòng)提取特征的,所以會(huì)導(dǎo)致我們有時(shí)候無(wú)法判斷處究竟為什么會(huì)是這個(gè)模型,不便于我們分析問(wèn)題,它就像一個(gè)黑盒一樣,給它數(shù)據(jù),它給你結(jié)果,而你很難了解里面發(fā)生了什么。

3.1 神經(jīng)元的組成

通常,一個(gè)神經(jīng)元由一個(gè) “線性模型” 和 一個(gè) “激勵(lì)函數(shù)” 組成。線性模型其實(shí)就是上面提到過(guò)的線性回歸模型。

image

如圖就是一個(gè)神經(jīng)網(wǎng)絡(luò),它共有兩層,一個(gè)是神經(jīng)元層(隱含層),一個(gè)是輸出層。通常我們?cè)谡f(shuō)一個(gè)網(wǎng)絡(luò)的深度時(shí),是不會(huì)把輸入層不計(jì)入的。

在神經(jīng)元中,有一個(gè)線性模型 wx + b 和 一個(gè)激活函數(shù) f。

我們的數(shù)據(jù)將會(huì)通過(guò)一個(gè)個(gè)的神經(jīng)元,每個(gè)神經(jīng)元都有一組權(quán)重,用于提取一類特征,相當(dāng)于是我們把數(shù)據(jù)進(jìn)行了一層一層的剖析。

3.2 激勵(lì)函數(shù)

激勵(lì)函數(shù),通常也會(huì)被稱為激活函數(shù),它是跟隨在 f(x) = wx + b 函數(shù)之后,用來(lái)加入一些非線性的因素的。通過(guò)激活函數(shù),可以將線性函數(shù)作為輸入,經(jīng)過(guò)激活函數(shù)后,變成非線性的,這樣一來(lái)就更接近真實(shí)世界的復(fù)雜情況了。

列舉幾個(gè)常用的激活函數(shù),有助理解。

3.2.1 Sigmoid函數(shù)

屏幕快照 2018-10-05 13.00.17.png

圖像

屏幕快照 2018-10-05 13.00.23.png

從函數(shù)可以看到,這個(gè)函數(shù)的值域?yàn)?(0,1),0.5值處為函數(shù)的對(duì)稱中心。有時(shí)在 <-4 和 >4 的區(qū)間中,函數(shù)曲線越來(lái)越趨于水平,也就是導(dǎo)數(shù)很趨于0,這會(huì)導(dǎo)致梯度下降時(shí),我們的對(duì)權(quán)值的更新微乎其微,也就是出現(xiàn)梯度消失的問(wèn)題。

當(dāng)然,它作為比較常用的激勵(lì)函數(shù),有其自己很適用的問(wèn)題領(lǐng)域,比如二分類問(wèn)題。

3.2.2 ReLu函數(shù)

y = max(x, 0)

圖像

這是個(gè)很受歡迎的函數(shù),光是看看它簡(jiǎn)潔的函數(shù)式你就不能拒絕它!

這個(gè)函數(shù)在 > 0 的時(shí)候,輸入就等于輸出,計(jì)算量會(huì)小很多,所以收斂速度會(huì)快很多。

3.2.3 Softmax

屏幕快照 2018-10-05 13.00.48.png

這個(gè)函數(shù)看起來(lái)比較復(fù)雜,它通常被用于處理多分類問(wèn)題。可以看看它的定義式,就是個(gè)體在總體中的占比情況。

屏幕快照 2018-10-05 13.02.09.png

從圖中可以很直觀的看出這個(gè)函數(shù)的功能,就是各種分類的概率啊。

3.3 獨(dú)熱編碼

對(duì)于多分類問(wèn)題,標(biāo)注分類可以使用使用 獨(dú)熱編碼 來(lái)進(jìn)行,比如這樣一個(gè)例子:

屏幕快照 2018-10-05 13.02.39.png

就是說(shuō),有幾個(gè)類型就定義一個(gè)幾維的向量,然后向量中只有一個(gè)元素為1,其余均為0,通過(guò)1在向量中的位置來(lái)表示類型。

3.3 過(guò)擬合和欠擬合

在訓(xùn)練過(guò)程中,可能會(huì)因?yàn)檫^(guò)擬合或者欠擬合而導(dǎo)致最終訓(xùn)練出來(lái)的模型準(zhǔn)確率不足或者因泛化性差而導(dǎo)致準(zhǔn)確率低。

  • 欠擬合
    樣本過(guò)少,無(wú)法歸納出足夠的共性

  • 過(guò)擬合
    參數(shù)過(guò)多,導(dǎo)致在訓(xùn)練集上準(zhǔn)確率很高,但換新樣本會(huì)嚴(yán)重誤判。

總結(jié)

在了解了機(jī)器學(xué)習(xí)是干什么的之后,又了解了一些基本概念在機(jī)器學(xué)習(xí)中會(huì)被經(jīng)常用到的,相信你對(duì)機(jī)器學(xué)習(xí)也不會(huì)保持一種敬畏感了,知道它很厲害,但是不知道為什么厲害。

現(xiàn)在開始,可以試著到 TensorFlow 官網(wǎng)看一些入門的 code 例子,然后結(jié)合這些概念理解下每個(gè)步驟是在干什么,為什么要這么做?

在前面,大家也會(huì)看到,在機(jī)器學(xué)習(xí)中用到了很多統(tǒng)計(jì)學(xué)的知識(shí),所以很多人會(huì)認(rèn)為機(jī)器學(xué)習(xí)其實(shí)就是統(tǒng)計(jì)學(xué)而已。實(shí)際上 CoorChice 認(rèn)為,機(jī)器學(xué)習(xí)只是用了統(tǒng)計(jì)學(xué)作為工具,去研究解決問(wèn)題,實(shí)際上它是有一套自己的理論和套路的,就像物理用數(shù)據(jù)作為工具去解決問(wèn)題一樣。機(jī)器學(xué)習(xí)在解決實(shí)際問(wèn)題的過(guò)程中,會(huì)需要很多學(xué)科的交叉來(lái)分析問(wèn)題,構(gòu)建模型。當(dāng)然,總體的思想看起來(lái)還是很簡(jiǎn)單的,只不過(guò)面對(duì)真世界中的復(fù)雜情況下,其探尋求解過(guò)程會(huì)比較復(fù)雜。

  • 抽出空余時(shí)間寫文章分享需要?jiǎng)恿?,還請(qǐng)各位看官動(dòng)動(dòng)小手點(diǎn)個(gè)贊,給CoorChice充值些信仰??
  • CoorChice一直在不定期的分享新的干貨,想要上車只需進(jìn)到CoorChice的【個(gè)人主頁(yè)】點(diǎn)個(gè)關(guān)注就好了哦。發(fā)車嘍~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • https://developers.google.com/machine-learning/crash-cour...
    iOSDevLog閱讀 2,921評(píng)論 1 11
  • 機(jī)器學(xué)習(xí)術(shù)語(yǔ)表 本術(shù)語(yǔ)表中列出了一般的機(jī)器學(xué)習(xí)術(shù)語(yǔ)和 TensorFlow 專用術(shù)語(yǔ)的定義。 A A/B 測(cè)試 (...
    yalesaleng閱讀 2,150評(píng)論 0 11
  • 以西瓜書為主線,以其他書籍作為參考進(jìn)行補(bǔ)充,例如《統(tǒng)計(jì)學(xué)習(xí)方法》,《PRML》等 第一章 緒論 1.2 基本術(shù)語(yǔ) ...
    danielAck閱讀 4,929評(píng)論 0 5
  • 又到了暖被窩的時(shí)間,今天我想聊一下一個(gè)比較沉重的話題,大學(xué)里的小偷小摸。 事情的起源是我的一盒曲奇餅放在圖書館外面...
    AlexNG吳瀚閱讀 658評(píng)論 0 1
  • ——北疆邊境自駕游記北上篇之二 (文/永新 圖/建成 并生 蘭蘭) (續(xù)前) 阿爾山 阿爾山是內(nèi)蒙古興安盟所轄的...
    zhaoyongxin閱讀 814評(píng)論 1 19

友情鏈接更多精彩內(nèi)容