官术网_书友最值得收藏!

1.1 機(jī)器學(xué)習(xí)

1.1.1 概述

機(jī)器學(xué)習(xí)簡(jiǎn)單地講就是讓機(jī)器模擬人類的學(xué)習(xí)過程,來獲取新的知識(shí)或技能,并通過自身的學(xué)習(xí)完成指定的工作或任務(wù),目標(biāo)是讓機(jī)器能像人一樣具有學(xué)習(xí)能力。

機(jī)器學(xué)習(xí)的本質(zhì)是樣本空間的搜索和模型的泛化能力。目前,機(jī)器學(xué)習(xí)研究的主要內(nèi)容有3類,分別是模式識(shí)別(Pattern Recognition)、回歸分析(Regression Analysis)和概率密度估計(jì)(Probability Density Estimation)。模式識(shí)別又稱為模式分類,是利用計(jì)算機(jī)對(duì)物理對(duì)象進(jìn)行分類的過程,目的是在錯(cuò)誤概率最小的情況下,盡可能地使結(jié)果與客觀物體相一致。顯然,模式識(shí)別的方法離不開機(jī)器學(xué)習(xí)。回歸分析是研究?jī)蓚€(gè)或兩個(gè)以上的變量和自變量之間的相互依賴關(guān)系,是數(shù)據(jù)分析的重要方法之一。概率密度估計(jì)是機(jī)器學(xué)習(xí)挖掘數(shù)據(jù)規(guī)律的重要方法。

機(jī)器學(xué)習(xí)與統(tǒng)計(jì)學(xué)習(xí)、數(shù)據(jù)挖掘、計(jì)算機(jī)視覺、大數(shù)據(jù)和人工智能等學(xué)科有著密不可分的聯(lián)系。人工智能的發(fā)展離不開機(jī)器學(xué)習(xí)的支撐,機(jī)器學(xué)習(xí)逐漸成為人工智能研究的核心之一。大數(shù)據(jù)的核心是利用數(shù)據(jù)的價(jià)值,機(jī)器學(xué)習(xí)是利用數(shù)據(jù)挖掘價(jià)值的關(guān)鍵技術(shù),數(shù)據(jù)量的增加有利于提升機(jī)器學(xué)習(xí)算法的精度,大數(shù)據(jù)背景下的機(jī)器學(xué)習(xí)算法也迫切需要大數(shù)據(jù)處理技術(shù)。大數(shù)據(jù)與機(jī)器學(xué)習(xí)兩者是互相促進(jìn)、相互依存的關(guān)系。

1.1.2 評(píng)價(jià)準(zhǔn)則

評(píng)價(jià)指標(biāo)是機(jī)器學(xué)習(xí)非常重要的一個(gè)環(huán)節(jié)。機(jī)器學(xué)習(xí)的任務(wù)不同,評(píng)價(jià)指標(biāo)可能就不同。同一種機(jī)器學(xué)習(xí)算法針對(duì)不同的應(yīng)用,可以采用不同的評(píng)價(jià)指標(biāo),每個(gè)指標(biāo)的側(cè)重點(diǎn)不一樣。下面介紹常用的機(jī)器學(xué)習(xí)評(píng)價(jià)指標(biāo)。

1.準(zhǔn)確率

樣本分類時(shí),被正確分類的樣本數(shù)與樣本總數(shù)之比稱為準(zhǔn)確率(Accuracy)。與準(zhǔn)確率對(duì)應(yīng)的是錯(cuò)誤率,錯(cuò)誤率是錯(cuò)分樣本數(shù)與總樣本數(shù)之比。

顯然,準(zhǔn)確率并沒有反映出不同類別錯(cuò)分樣本的情況。例如:對(duì)于一個(gè)二類分類問題,準(zhǔn)確率并不能反映出第一類和第二類分別對(duì)應(yīng)的錯(cuò)分樣本的個(gè)數(shù)。但是,在實(shí)際應(yīng)用中,因?yàn)椴煌悇e下錯(cuò)分樣本的代價(jià)或成本不同,往往需要知道不同類別錯(cuò)分樣本的情況。例如:在醫(yī)學(xué)影像分類過程中,未患有乳腺癌被錯(cuò)分類為患有乳腺癌,與患有乳腺癌被錯(cuò)分類為未患有乳腺癌的重要性顯然是不一樣的。另外,數(shù)據(jù)分布不平衡時(shí),樣本占大多數(shù)的類主導(dǎo)了準(zhǔn)確率的計(jì)算等情況,這就需要求出不同類別的準(zhǔn)確率。

2.召回率

召回率(Precision-Recall)指分類正確的正樣本個(gè)數(shù)占所有的正樣本個(gè)數(shù)的比例。它表示的是數(shù)據(jù)集中的正樣本有多少被預(yù)測(cè)正確。

3.ROC曲線

ROC(Receiver Operating Characteristic)曲線是分類器的一種性能指標(biāo),可以實(shí)現(xiàn)不同分類器性能比較。不同的分類器比較時(shí),畫出每個(gè)分類器的ROC曲線,將曲線下方面積作為判斷模型好壞的指標(biāo)。ROC曲線的縱軸是“真正例率”(True Positive Rate,TPR),橫軸是“假正例率”(False Positive Rate,F(xiàn)PR)。ROC曲線下方面積(The Area Under The ROC Curve,AUC)是指ROC曲線與x軸、點(diǎn)(1,0)和點(diǎn)(1,1)圍繞的面積。ROC曲線如圖1-1所示。顯然,0≤AUC≤1。假設(shè)閾值以上是陽性,以下是陰性,若隨機(jī)抽取一個(gè)陽性樣本和一個(gè)陰性樣本,分類器正確判斷陽性樣本的值高于陰性樣本的概率。在圖1-1示例中,有3類分類器,AUC值分為0.80、0.78和0.80,AUC值越大的分類器正確率越高。

圖1-1 ROC曲線

4.交叉驗(yàn)證

交叉驗(yàn)證(Cross-Validation)的基本思想是將數(shù)據(jù)分成訓(xùn)練集和測(cè)試集。在訓(xùn)練集上訓(xùn)練模型,然后利用測(cè)試集模擬實(shí)際的數(shù)據(jù),對(duì)訓(xùn)練模型進(jìn)行調(diào)整或評(píng)價(jià),最后選擇在驗(yàn)證數(shù)據(jù)上表現(xiàn)最好的模型。

交叉驗(yàn)證法的優(yōu)點(diǎn)是可以在一定程度上減小過擬合,還可以從有限的數(shù)據(jù)中獲取盡可能多的有效信息。常用的交叉驗(yàn)證的方法如下。

(1)K折交叉驗(yàn)證

K折交叉驗(yàn)證的基本思想:將數(shù)據(jù)隨機(jī)地劃分為K等份,將其中的K-1份作為訓(xùn)練集,剩余的1份作為測(cè)試集,計(jì)算K組測(cè)試結(jié)果的平均值作為模型精度的估計(jì),并作為當(dāng)前K折交叉驗(yàn)證下模型的性能指標(biāo)。

K折交叉驗(yàn)證實(shí)現(xiàn)了數(shù)據(jù)的重復(fù)利用。一般情況下,K的取值為 10。針對(duì)不同的應(yīng)用場(chǎng)景,可以根據(jù)實(shí)際情況確定K值,數(shù)據(jù)量或樣本數(shù)較大時(shí),K的取值可以大于10。 數(shù)據(jù)量或樣本數(shù)較小時(shí),K的取值可以小于10。

(2)留一交叉驗(yàn)證

留一交叉驗(yàn)證(Leave One Out Cross Validation)的基本思想:假設(shè)有N個(gè)樣本,將每一個(gè)樣本作為測(cè)試樣本,其他N-1個(gè)樣本作為訓(xùn)練樣本,得到N個(gè)分類器和N個(gè)測(cè)試結(jié)果。用這N個(gè)結(jié)果的平均值來衡量模型的性能。留一交叉驗(yàn)證是K折交叉驗(yàn)證的特例。

5.過擬合與欠擬合問題

機(jī)器學(xué)習(xí)過程中,模型對(duì)未知數(shù)據(jù)的預(yù)測(cè)能力稱為泛化能力(Generalization Ability),是評(píng)估算法性能的重要評(píng)價(jià)指標(biāo)(Evaluation Metrics)。泛化指的是訓(xùn)練模型對(duì)未知樣本的適應(yīng)能力。優(yōu)秀的機(jī)器學(xué)習(xí)模型其泛化能力強(qiáng)。

過擬合(Over-fitting)是由于訓(xùn)練模型中涉及的參數(shù)過多,或參加訓(xùn)練的數(shù)據(jù)量太小等原因,導(dǎo)致了微小的數(shù)據(jù)擾動(dòng)都會(huì)產(chǎn)生較大的變化或影響,造成了模型對(duì)已知數(shù)據(jù)預(yù)測(cè)精度很高,而對(duì)未知數(shù)據(jù)預(yù)測(cè)精度較低的現(xiàn)象,即測(cè)試樣本輸出和期望的值相差較大,也稱為泛化誤差較大。

通常情況下,解決過擬合問題的方法有以下兩種。

(1)利用正則化來控制模型的復(fù)雜度,改善或減少過度擬合的問題。

(2)根據(jù)實(shí)際問題增加足夠的訓(xùn)練數(shù)據(jù)。

欠擬合(Under-fitting)是模型在訓(xùn)練和預(yù)測(cè)時(shí),其準(zhǔn)確率都較低的現(xiàn)象。產(chǎn)生的原因可能是模型過于簡(jiǎn)單,沒有充分地?cái)M合所有的數(shù)據(jù)。解決欠擬合問題的方法是優(yōu)化和改進(jìn)模型,或采用其他的機(jī)器學(xué)習(xí)算法。

1.1.3 分類

根據(jù)機(jī)器學(xué)習(xí)算法的學(xué)習(xí)方式,機(jī)器學(xué)習(xí)分為以下3種。

1.有監(jiān)督學(xué)習(xí)

有監(jiān)督學(xué)習(xí)(Supervised Learning)是利用一組已知類別的樣本調(diào)整分類器的參數(shù),使其達(dá)到所要求性能的學(xué)習(xí)過程,也稱為有老師的學(xué)習(xí)。有監(jiān)督學(xué)習(xí)的過程是:首先利用有標(biāo)號(hào)的樣本進(jìn)行訓(xùn)練,構(gòu)建相應(yīng)的學(xué)習(xí)模型。然后,再利用這個(gè)模型對(duì)未知樣本數(shù)據(jù)進(jìn)行分類和預(yù)測(cè)。這個(gè)學(xué)習(xí)過程與人類認(rèn)識(shí)事物的過程非常相似。常用有監(jiān)督學(xué)習(xí)的算法有:貝葉斯分類、決策樹和支持向量機(jī)等。

2.無監(jiān)督學(xué)習(xí)

無監(jiān)督學(xué)習(xí)(Unsupervised Learning)是對(duì)無標(biāo)號(hào)樣本的學(xué)習(xí),以發(fā)現(xiàn)訓(xùn)練樣本集中的結(jié)構(gòu)性知識(shí)的學(xué)習(xí)過程,也稱為無老師的學(xué)習(xí)。無監(jiān)督學(xué)習(xí)事先并不需要知道樣本的類別,而是通過某種方法,按照相似度的大小進(jìn)行分類的過程。它與監(jiān)督學(xué)習(xí)的不同之處在于,事先并沒有任何訓(xùn)練樣本,而是直接對(duì)數(shù)據(jù)進(jìn)行建模。常用無監(jiān)督學(xué)習(xí)的算法有:聚類算法和期望最大化算法。

3.半監(jiān)督學(xué)習(xí)

半監(jiān)督學(xué)習(xí)(Semi-Supervised Learning)是有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)相結(jié)合的學(xué)習(xí),是利用有類標(biāo)號(hào)的數(shù)據(jù)和無類標(biāo)號(hào)的數(shù)據(jù)進(jìn)行學(xué)習(xí)的過程。其特點(diǎn)是利用少量有標(biāo)號(hào)樣本和大量無標(biāo)號(hào)樣本進(jìn)行機(jī)器學(xué)習(xí)。在數(shù)據(jù)采集過程中,采集海量的無標(biāo)號(hào)數(shù)據(jù)相對(duì)容易,而采集海量的有標(biāo)號(hào)樣本則相對(duì)困難,因?yàn)閷?duì)無標(biāo)號(hào)樣本的標(biāo)記工作可能會(huì)耗費(fèi)大量的人力、物力和財(cái)力。例如,利用計(jì)算機(jī)輔助醫(yī)學(xué)圖像分析和判讀的過程中,可以從醫(yī)院獲得海量的醫(yī)學(xué)圖像作為訓(xùn)練數(shù)據(jù),但如果要求把這些海量圖像中的病灶都標(biāo)注出來,則是不現(xiàn)實(shí)的。現(xiàn)實(shí)世界中通常存在大量的未標(biāo)注樣本,但有標(biāo)記樣本則比較少,因此半監(jiān)督學(xué)習(xí)的研究是非常重要的。

此外,根據(jù)算法的功能和形式可把機(jī)器學(xué)習(xí)算法分為:決策樹學(xué)習(xí)、增量學(xué)習(xí)、強(qiáng)化學(xué)習(xí)、回歸學(xué)習(xí)、關(guān)聯(lián)規(guī)則學(xué)習(xí)、進(jìn)化學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)、主動(dòng)學(xué)習(xí)和集成學(xué)習(xí)等。

1.1.4 常用工具

1.WEKA

WEKA 是一款常用的、開源的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具,主要功能有數(shù)據(jù)預(yù)處理、分類、回歸和關(guān)聯(lián)規(guī)則等。WEKA 內(nèi)集成了決策樹和貝葉斯分類等眾多機(jī)器學(xué)習(xí)算法,是數(shù)據(jù)分析和挖掘的技術(shù)人員常用的工具之一。

2.Python語言

Python是一種面向?qū)ο蟮木幊陶Z言,由荷蘭人吉多·范羅蘇姆(Guido van Rossum)發(fā)明,最早的公開發(fā)行版誕生于1991年。Python提供了大量的基礎(chǔ)代碼庫,極大地方便了用戶進(jìn)行程序編寫。Python 語言在數(shù)據(jù)挖掘和分析、機(jī)器學(xué)習(xí)和數(shù)據(jù)可視化等方面發(fā)揮了巨大的作用。目前,Python 是最熱門的人工智能和機(jī)器學(xué)習(xí)的編程語言。

3.Matlab

Matlab是美國MathWorks公司出品的一款商用軟件,是科研工作者、工程師和大學(xué)生必備的數(shù)據(jù)分析工具之一,主要用于科學(xué)計(jì)算,如數(shù)值計(jì)算、數(shù)據(jù)分析、數(shù)據(jù)可視化、數(shù)字圖像處理和數(shù)字信號(hào)處理等。

4.R語言

R語言是一種為統(tǒng)計(jì)計(jì)算和圖形顯示而設(shè)計(jì)的語言環(huán)境,是貝爾實(shí)驗(yàn)室開發(fā)的S語言的一種實(shí)現(xiàn)。它提供了有彈性的、互動(dòng)的環(huán)境分析,也提供了若干統(tǒng)計(jì)程序包,以及一系列統(tǒng)計(jì)和圖形顯示工具,用戶只需根據(jù)統(tǒng)計(jì)模型,指定相應(yīng)的數(shù)據(jù)庫及相關(guān)的參數(shù),便可靈活機(jī)動(dòng)地進(jìn)行數(shù)據(jù)分析等工作。目前,R 語言在數(shù)據(jù)挖掘和分析、機(jī)器學(xué)習(xí)和數(shù)據(jù)可視化方面發(fā)揮了巨大的作用。

5.深度學(xué)習(xí)框架

深度學(xué)習(xí)的發(fā)展離不開高性能的框架與硬件的支持。隨著半導(dǎo)體工藝和微電子等技術(shù)的飛速發(fā)展,支持深度學(xué)習(xí)的硬件環(huán)境也在飛速發(fā)展,出現(xiàn)了以多核CPU(Central Processing Unit)、高性能圖形處理器GPU(Graphics Processing Unit)、APU(Accelerated Processing Unit)等處理器為代表的高性能并行計(jì)算系統(tǒng),為深度學(xué)習(xí)分析和挖掘奠定了硬件基礎(chǔ)。目前,深度學(xué)習(xí)大都使用GPU在各種框架上進(jìn)行模型訓(xùn)練,深層神經(jīng)網(wǎng)絡(luò)在GPU上運(yùn)算的速度要比CPU快一個(gè)數(shù)量級(jí)。

隨著深度學(xué)習(xí)研究和應(yīng)用的不斷深入,各種開源的深度學(xué)習(xí)框架不斷涌現(xiàn),目前常用的深度學(xué)習(xí)框架有Caffe、TensorFlow、Theano、Torch和CNTK等。下面簡(jiǎn)單介紹幾種常用的深度學(xué)習(xí)框架。

(1)Caffe

Caffe是一種被廣泛使用的開源深度學(xué)習(xí)框架,由加州大學(xué)伯克利分校的賈揚(yáng)清開發(fā)。Caffe是首個(gè)主流的工業(yè)級(jí)深度學(xué)習(xí)工具,運(yùn)行穩(wěn)定,代碼質(zhì)量高,適用對(duì)穩(wěn)定性要求高的生產(chǎn)環(huán)境。目前在計(jì)算機(jī)視覺領(lǐng)域Caffe依然是最流行的工具包,并且有很多擴(kuò)展。Caffe最開始設(shè)計(jì)時(shí)的目標(biāo)只針對(duì)圖像,沒有考慮文本、語音等數(shù)據(jù),因此對(duì)卷積神經(jīng)網(wǎng)絡(luò)的支持非常好,但對(duì)時(shí)間序列RNN、LSTM等的支持不是特別充分。許多研究人員采用Caffe做人臉識(shí)別、位置檢測(cè)和目標(biāo)追蹤等,很多深度學(xué)習(xí)的論文也都是使用Caffe來實(shí)現(xiàn)其模型的。

(2)TensorFlow

Google公司開源的TensorFlow框架是相對(duì)高階的機(jī)器學(xué)習(xí)庫,用戶可以方便地用它設(shè)計(jì)各種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),是理想的深度學(xué)習(xí)開發(fā)平臺(tái)。TensorFlow 使用了向量運(yùn)算的符號(hào)圖方法,使指定新網(wǎng)絡(luò)變得比較容易,但是不支持雙向RNN和3D卷積。TensorFlow移植性高,一份代碼幾乎不經(jīng)過修改就可輕松地部署到有任意數(shù)量CPU或GPU的PC、服務(wù)器或者移動(dòng)設(shè)備上。TensorFlow框架針對(duì)生產(chǎn)環(huán)境高度優(yōu)化,產(chǎn)品級(jí)的高質(zhì)量代碼和設(shè)計(jì)可以保證其在生產(chǎn)環(huán)境中穩(wěn)定運(yùn)行。

(3)Theano

Theano由Lab團(tuán)隊(duì)開發(fā)并維護(hù),是一個(gè)高性能的符號(hào)計(jì)算及深度學(xué)習(xí)庫。Theano因其出現(xiàn)時(shí)間早,一度被認(rèn)為是深度學(xué)習(xí)研究和應(yīng)用的重要標(biāo)準(zhǔn)之一。Theano 專門為處理大規(guī)模神經(jīng)網(wǎng)絡(luò)訓(xùn)練的計(jì)算而設(shè)計(jì),其核心是一個(gè)數(shù)學(xué)表達(dá)式的編譯器,可以鏈接各種可以加速的庫,將用戶定義的各種計(jì)算編譯為高效的底層代碼。

(4)Torch

Torch是一個(gè)高效的科學(xué)計(jì)算庫,含有大量的機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺、信號(hào)處理和網(wǎng)絡(luò)的庫算法。Torch對(duì)卷積網(wǎng)絡(luò)的支持非常好,通過很多非官方的擴(kuò)展支持大量的RNN模型。

(5)CNTK

CNTK 是由微軟公司推出的開源深度學(xué)習(xí)工具包,性能優(yōu)于 Caffe、Theano、TensoFlow,支持CPU和GPU兩種模式。

各種框架的底層語言和操作語言的比較,詳見表1-1所示。

表1-1 各種深度學(xué)習(xí)框架的比較

續(xù)表

主站蜘蛛池模板: 宁化县| 黎平县| 青浦区| 三门县| 勐海县| 滦平县| 梨树县| 孝昌县| 白银市| 乐安县| 蒙阴县| 那坡县| 苍溪县| 华池县| 前郭尔| 甘孜| 盘山县| 蚌埠市| 安丘市| 黄梅县| 巴彦县| 都昌县| 日土县| 遵义县| 罗江县| 贵定县| 临澧县| 泉州市| 香河县| 调兵山市| 荥经县| 桐庐县| 绵阳市| 屏边| 郯城县| 碌曲县| 杨浦区| 奈曼旗| 汝阳县| 潼南县| 体育|