- 深度學(xué)習(xí)從0到1
- 覃秉豐編著
- 4367字
- 2021-07-23 17:52:18
1.2 機(jī)器學(xué)習(xí)
由于人們沒有辦法設(shè)計出足夠復(fù)雜的規(guī)則來精確描述世界,所以AI系統(tǒng)需要具備自我學(xué)習(xí)的能力,即從原始數(shù)據(jù)中獲取有用的知識。這種能力被稱為機(jī)器學(xué)習(xí)(Machine Learning)。
人工智能是抽象的概念,而機(jī)器學(xué)習(xí)是具體的可以落地的算法。機(jī)器學(xué)習(xí)不是一個算法,而是一大類具體智能算法的統(tǒng)稱。使用機(jī)器學(xué)習(xí)算法,我們可以解決生活中如人臉識別、垃圾郵件分類和語音識別等具體問題。
機(jī)器學(xué)習(xí)其實與人類學(xué)習(xí)的過程類似。打個比方:假如我們現(xiàn)在都是原始人,并不知道太陽和月亮是什么東西。但是我們可以觀察天上的太陽和月亮,并且把太陽出來時的光線和溫度記錄下來,把月亮出來時的光線和溫度記錄下來(這就相當(dāng)于是收集數(shù)據(jù))。觀察了100天之后,我們進(jìn)行思考,總結(jié)這100天的規(guī)律。我們可以發(fā)現(xiàn),太陽和月亮是交替出現(xiàn)的(偶爾同時出現(xiàn)可以忽略)。太陽出來的時候,光線比較亮,溫度比較高;月亮出來的時候,光線比較暗,溫度比較低(這相當(dāng)于是分析數(shù)據(jù),建立模型)。之后我們看到太陽準(zhǔn)備落山、月亮準(zhǔn)備出來的時候,我們就知道溫度要降低,可能要多穿樹葉或毛皮(原始人沒有衣服),光線也準(zhǔn)備要變暗了(預(yù)測未來的情況)。機(jī)器學(xué)習(xí)也可以利用已有的數(shù)據(jù)進(jìn)行學(xué)習(xí),獲得一個訓(xùn)練好的模型,然后可以利用此模型預(yù)測未來的情況。
圖1.4中表現(xiàn)了機(jī)器學(xué)習(xí)與人類思維的對比。我們可以使用歷史數(shù)據(jù)來訓(xùn)練一個機(jī)器學(xué)習(xí)的模型,模型訓(xùn)練好之后,放入新的數(shù)據(jù),這樣模型就可以對新的數(shù)據(jù)進(jìn)行預(yù)測分析。人類也善于從以往的經(jīng)驗中總結(jié)規(guī)律,當(dāng)遇到新的問題時,我們可以根據(jù)之前的經(jīng)驗來預(yù)測未來的結(jié)果。

圖1.4 機(jī)器學(xué)習(xí)與人類思維的對比
1.2.1 訓(xùn)練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù)
通常我們在做機(jī)器學(xué)習(xí)分析的時候會把數(shù)據(jù)分成兩大部分:一部分是訓(xùn)練數(shù)據(jù)(Training Data),可以用來訓(xùn)練,構(gòu)建模型;另一部分是測試數(shù)據(jù)(Testing Data),可以用來驗證模型的好壞。這兩部分就有點(diǎn)像我們上學(xué)時課本中的習(xí)題。正文中的例題是訓(xùn)練數(shù)據(jù),有答案和詳細(xì)講解,是用來教我們學(xué)習(xí)新知識的,可以看作用來對我們進(jìn)行訓(xùn)練。而課后習(xí)題是測試數(shù)據(jù),我們要先做題,做完之后再對答案,是用來檢查我們學(xué)習(xí)效果的。
有時我們會把數(shù)據(jù)分成3部分,即訓(xùn)練集(Training Set)、驗證集(Validation Set)和測試集(Testing Set)。訓(xùn)練集還是用來訓(xùn)練模型。驗證集是在模型的訓(xùn)練階段評估模型的好壞,可以用于確定模型的參數(shù)或結(jié)構(gòu)。等模型訓(xùn)練好,并且結(jié)構(gòu)和參數(shù)都調(diào)整好之后,再用測試集來評估模型的好壞。通常我們可以把所有數(shù)據(jù)的60%分配給訓(xùn)練集、20%分配的驗證集、20%分配給測試集。或者80%分配給訓(xùn)練集、10%分配給驗證集、10%分配給測試集。不過這個數(shù)據(jù)劃分不是絕對的,還需要看具體情況。有時候我們只劃分訓(xùn)練集和測試集,訓(xùn)練集用于訓(xùn)練模型,不管在模型的訓(xùn)練階段還是最后的測試階段,都是用測試集來進(jìn)行測試。
K折交叉檢驗(K-fold Cross-Validation)——K折交叉檢驗的大致思想是把數(shù)據(jù)集分成K份,每次取一份作為測試集,取余下的K-1份作為訓(xùn)練集。重復(fù)訓(xùn)練K次,每次訓(xùn)練都從K個部分中選一個不同的部分作為測試集(要保證K個部分的數(shù)據(jù)都分別做過測試),剩下的K-1份做訓(xùn)練集。最后把得到的K個結(jié)果做平均。
1.2.2 學(xué)習(xí)方式
在機(jī)器學(xué)習(xí)或者人工智能領(lǐng)域,不同的問題可能會有不同的學(xué)習(xí)方式。主要的學(xué)習(xí)方法如下所示。
1.監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)(Supervised Learning)——監(jiān)督學(xué)習(xí)也稱為有監(jiān)督學(xué)習(xí),通常可以用于分類(Classification)和回歸(Regression)的問題。它的主要特點(diǎn)是,所有的數(shù)據(jù)都有與之相對應(yīng)的標(biāo)簽(Label)。例如,我們想做一個識別手寫數(shù)字的模型,那么我們的數(shù)據(jù)集就是大量手寫數(shù)字的圖片,并且每一張圖片都有對應(yīng)的標(biāo)簽,如圖1.5所示。

圖1.5 標(biāo)簽為3
圖1.5是一個手寫數(shù)字3,所以這張圖片的標(biāo)簽可以設(shè)置為3。同樣地,如果是一張手寫數(shù)字8的圖片,那么該圖片的標(biāo)簽就可以是8。或者我們要建立一個判別垃圾郵件的模型,那我們先要對郵件進(jìn)行標(biāo)記,標(biāo)記出哪些屬于垃圾郵件和哪些不屬于垃圾郵件,然后建立模型。
監(jiān)督學(xué)習(xí)在建模過程中,會將預(yù)測結(jié)果與訓(xùn)練數(shù)據(jù)的實際結(jié)果(也就是標(biāo)簽)做對比,如果預(yù)測結(jié)果跟實際結(jié)果不符合,將通過一些方式去調(diào)整模型的參數(shù),直到模型的預(yù)測結(jié)果能達(dá)到比較高的準(zhǔn)確率。
2.非監(jiān)督學(xué)習(xí)
非監(jiān)督學(xué)習(xí)(Unsupervised Learning)——非監(jiān)督學(xué)習(xí)也稱為無監(jiān)督學(xué)習(xí),通常可以用于聚類(Clustering)的問題。非監(jiān)督學(xué)習(xí)中,所有的數(shù)據(jù)都是沒有標(biāo)簽的。可以使用機(jī)器學(xué)習(xí)的方法讓數(shù)據(jù)自動聚類。例如,許多公司都擁有龐大的客戶信息數(shù)據(jù)庫,使用非監(jiān)督學(xué)習(xí)的方法就可以自動對客戶進(jìn)行市場分割,將客戶分到不同的細(xì)分市場中,從而有助于我們對不同細(xì)分市場的客戶進(jìn)行更有效的銷售或者廣告推送。或許我們事先并不知道有哪些細(xì)分市場,也不知道哪些客戶屬于細(xì)分市場A和哪些客戶屬于細(xì)分市場B。不過沒關(guān)系,我們可以讓非監(jiān)督學(xué)習(xí)算法在數(shù)據(jù)中挖掘這一切信息。
3.半監(jiān)督學(xué)習(xí)
半監(jiān)督學(xué)習(xí)(Semi-Supervised Learning)——半監(jiān)督學(xué)習(xí)是監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)相結(jié)合的一種學(xué)習(xí)方式,通常可以用于分類和回歸問題。主要用來解決使用少量帶標(biāo)簽的數(shù)據(jù)和大量沒有標(biāo)簽的數(shù)據(jù)進(jìn)行訓(xùn)練與分類的問題。此類算法首先試圖對沒有標(biāo)簽的數(shù)據(jù)進(jìn)行建模,然后再對帶有標(biāo)簽的數(shù)據(jù)進(jìn)行預(yù)測。說個題外話,半監(jiān)督學(xué)習(xí)一般用得比較少,原因很簡單,因為標(biāo)簽不足的情況通常很容易解決,只要找很多人來打標(biāo)簽就可以了。大型AI公司可能會有幾百人的數(shù)據(jù)標(biāo)注團(tuán)隊,每天的工作就是給各種數(shù)據(jù)打標(biāo)簽。因為頂尖大公司的AI技術(shù)相差不是很大,想要把產(chǎn)品的效果做得更好,就需要大量的帶標(biāo)簽的數(shù)據(jù)。所以現(xiàn)在有一句叫作“人工智能,先有人工,后有智能,有多少人工,就有多少智能”。這是玩笑話,大家看看就好,標(biāo)簽很重要,但人工智能的核心還是算法,說不定以后有一天我們可以開發(fā)出不需要標(biāo)簽就可以什么都學(xué)會的算法。
4.強(qiáng)化學(xué)習(xí)
強(qiáng)化學(xué)習(xí)(Reinforcement Learning)——強(qiáng)化學(xué)習(xí)靈感來源于心理學(xué)中的行為主義理論,即有機(jī)體如何在環(huán)境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預(yù)期,產(chǎn)生能夠獲得最大利益的習(xí)慣性行為。強(qiáng)化學(xué)習(xí)沒有任何的標(biāo)簽來告訴算法應(yīng)該怎么做,它會先去嘗試做一些動作,然后得到一個結(jié)果,通過判斷這個結(jié)果是對還是錯來對之前的動作進(jìn)行反饋。AlphaGo中就用到了強(qiáng)化學(xué)習(xí)。不過目前強(qiáng)化學(xué)習(xí)的落地應(yīng)用還比較少,大部分的應(yīng)用還都只是用于打游戲。
1.2.3 機(jī)器學(xué)習(xí)常用算法
機(jī)器學(xué)習(xí)的算法有很多,下面給大家簡單介紹一些機(jī)器學(xué)習(xí)中常用的算法。
1.決策樹
決策樹(Decision Tree)——決策樹是一種簡單但又使用廣泛的監(jiān)督學(xué)習(xí)分類算法。它是一種分而治之的決策過程,把一個復(fù)雜的預(yù)測問題,通過樹的分支節(jié)點(diǎn),劃分成兩個或多個較為簡單的子集,從結(jié)構(gòu)上劃分為不同的子問題。當(dāng)分支節(jié)點(diǎn)滿足一定停止規(guī)則時,該分支節(jié)點(diǎn)就會停止分叉,得到分類結(jié)果。例如,一棵女生去相親的簡單決策樹如圖1.6所示。

圖1.6 一棵女生去相親的簡單決策樹
2.線性回歸
線性回歸(Linear Regreesion)——線性回歸是一種監(jiān)督學(xué)習(xí)的算法。在線性回歸中,數(shù)據(jù)使用線性預(yù)測函數(shù)來建模,模型建立好之后可以用來預(yù)測未知的值,也就是可以根據(jù)現(xiàn)在預(yù)測未來。舉個例子,假入我們有一組房屋面積和房屋價格的數(shù)據(jù),我們可以利用這些數(shù)據(jù)來建立回歸模型,如圖1.7所示。

圖1.7 線性回歸
模型建立好之后,我們可以得到一條最符合房屋面積和房屋價格關(guān)系的直線。根據(jù)這個模型,我們可以把一個新的房屋面積輸入,就能得到該房屋的價格預(yù)測值。
3.KNN算法
KNN(K-Nearest Neighbor)算法——KNN算法又稱為K近鄰分類(K-Nearest Neighbor Classification)算法,是一種監(jiān)督學(xué)習(xí)算法。最簡單的最近鄰算法就是遍歷所有已知標(biāo)簽的樣本集中的數(shù)據(jù),計算它們和需要分類的樣本之間的距離[這里的距離一般指的是歐氏距離(Euclidean Distance)],同時記錄目前的最近點(diǎn)。KNN算法查找的是已知標(biāo)簽的樣本集中跟需要分類的樣本最鄰近的K個樣本,需要分類的樣本最終的標(biāo)簽是由這K個樣本的標(biāo)簽決定的,采用的方式是“多數(shù)表決”。也就是在這K個樣本中哪種標(biāo)簽最多,那么需要分類的樣本就歸為哪一類。如圖1.8所示,方形表示分類1,圓形表示分類2,圖中正中心的五角星表示需要分類的樣本。當(dāng)K等于1時,其實就是計算距離五角星最近的樣本屬于哪一個分類。圖1.8中,我們可以看到距離五角星最近的是方形,屬于分類1,所以我們可以把五角星歸為分類1。

圖1.8 KNN分類,K等于1
當(dāng)我們?nèi)?i>K=5時,其實就是找出距離五角星最近的5個樣本,然后統(tǒng)計這5個樣本哪種分類比較多。如圖1.9所示,我們可以看到圖中有1個方形和4個圓形,那么圓形比較多,所以我們可以把五角星歸為分類2。

圖1.9 KNN分類,K等于5
這里我們可以看到,五角星最終的分類跟K的取值有很大關(guān)系。K值取多少,模型的效果才比較好呢?這可能需要對模型進(jìn)一步調(diào)試才能得到答案,如我們可以不斷改變K值,然后用測試集來做測試,最終選取一個可以使得測試誤差比較小的K值。
4.K-Means算法
K-Means算法——K-Means算法是一種無監(jiān)督學(xué)習(xí)算法,通常可以用于聚類分析。所謂聚類問題,就是給定一個元素集合A,集合中的每個元素有n個可觀測的屬性。我們需要使用某種方法把A劃分為k個子集,并且要使得每個子集內(nèi)部元素之間的差異盡可能小,不同子集之間元素的差異盡可能大。K-Means算法的計算過程比較直觀也比較簡單:
(1)先從沒有標(biāo)簽的元素集合A中隨機(jī)取k個元素,作為k個子集各自的重心。
(2)分別計算剩下的元素到k個子集重心的距離(這里的距離也可以使用歐氏距離),根據(jù)距離將這些元素分別劃歸到最近的子集。
(3)根據(jù)聚類結(jié)果,重新計算重心(重心的計算方法是計算子集中所有元素各個維度的算數(shù)平均數(shù))。
(4)將集合A中的全部元素按照新的重心重新聚類。
(5)重復(fù)第(4)步,直到聚類結(jié)果不再發(fā)生變化。
K-Means算法的運(yùn)行過程如圖1.10~圖1.12所示。

圖1.10 K-Means算法,第1次迭代

圖1.11 K-Means算法,第5次迭代

圖1.12 K-Means算法,第9次迭代
聚類模型一共迭代了9次,最終收斂。從圖1.10~圖1.12中可以看出,第1次迭代的時候,模型的聚類效果是很差的,一看就不太合理。迭代了5次之后,模型有了一些改善,聚類的效果已經(jīng)不錯了,不過看得出來還有一些提高的空間。迭代9次之后,模型就訓(xùn)練好了,很好地把沒有標(biāo)簽的數(shù)據(jù)分成了4類。相同類別之間的差距比較小,不同類別之間的差距比較大。
5.神經(jīng)網(wǎng)絡(luò)算法
神經(jīng)網(wǎng)絡(luò)(Neural Network)算法——神經(jīng)網(wǎng)絡(luò)算法是一種模擬人類大腦神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建出來的算法。神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)可以有多層,多層的神經(jīng)網(wǎng)絡(luò)可以由輸入層(Input Layer)、隱藏層(Hidden Layers)和輸出層(Output Layer)組成。其中隱藏層可能有0到多個,所以最簡單的神經(jīng)網(wǎng)絡(luò)就只有輸入層和輸出層。神經(jīng)網(wǎng)絡(luò)的每一層都由若干個神經(jīng)元(Neuron)節(jié)點(diǎn)組成。
信號從輸出層傳入網(wǎng)絡(luò),與神經(jīng)元的權(quán)值(Weights)作用后再經(jīng)過激活函數(shù)(Activation Function)傳入下一層。每一層信號的輸出都是下一層的輸入,直到把信號傳到輸出層得出結(jié)果。神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)如圖1.13所示。

圖1.13 神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的重要基礎(chǔ),在后面的章節(jié)中我們會從頭開始詳細(xì)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的搭建及應(yīng)用,這里只是先做一個簡單介紹。
除上面介紹的這些算法外,機(jī)器學(xué)習(xí)領(lǐng)域還有很多其他的算法,如樸素貝葉斯(Naive Bayes)、支持向量機(jī)SVM(Support Vector Machine)和Adaboost等。
- 神經(jīng)網(wǎng)絡(luò)與機(jī)器人科研項目申請與實踐
- 聯(lián)邦學(xué)習(xí)實戰(zhàn)
- 智能無線機(jī)器人:人工智能算法與應(yīng)用
- 人工智能視域下機(jī)器學(xué)習(xí)在教育研究中的應(yīng)用
- 碼農(nóng)的零門檻AI課:基于fastai與PyTorch的深度學(xué)習(xí)
- 第五范式
- 三維人臉建模方法研究與應(yīng)用
- DeepSeek全場景指南
- EV3機(jī)器人之快樂搭建
- 人工智能倫理
- 移動機(jī)器人原理與設(shè)計(原書第2版)
- 機(jī)器意識:人工智能如何為機(jī)器人裝上大腦
- AI是未來的電
- 推薦系統(tǒng):產(chǎn)品與算法解析
- 巧用AI工具高效搞定PPT設(shè)計與制作