0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的工作步驟模板

電子工程師 ? 來源:工程師曾玲 ? 2019-05-02 15:46 ? 次閱讀

1. 定義問題并裝載數(shù)據(jù)集(Defining the problem and assembling a dataset)

首先,你必須定義你手頭的問題:

輸入數(shù)據(jù)是什么?你希望預(yù)測(cè)什么?只有在能夠獲得訓(xùn)練數(shù)據(jù)的情況下你才能進(jìn)行預(yù)測(cè):舉個(gè)例子,如果你同時(shí)又電影的影評(píng)和對(duì)應(yīng)的情感注釋,你只能從中學(xué)習(xí)分類電影影評(píng)的情緒。因此,數(shù)據(jù)可用性是這個(gè)階段的限制因素(除非你有辦法雇人幫你收集數(shù)據(jù))

你面臨什么類型的問題?它是二元分類嗎?還是多類分類?標(biāo)量回歸?向量回歸?多類多標(biāo)簽分類?或者其他的類型,例如聚類,生成問題或者增強(qiáng)學(xué)習(xí)?識(shí)別問題的類型能夠指導(dǎo)你選擇模型的構(gòu)架,損失函數(shù)等等

直到你知道你的輸入和輸出是什么,以及你將使用哪些數(shù)據(jù),你才能進(jìn)入下一個(gè)階段。注意你在這個(gè)階段所做的假設(shè):

你假設(shè)你可以根據(jù)給定的輸入預(yù)測(cè)輸出

你假設(shè)你的可用數(shù)據(jù)有足夠的信息用于學(xué)習(xí)輸入與輸出之間的關(guān)系

當(dāng)然,這僅僅只是假設(shè),直到你有一個(gè)確切的模型,這些假設(shè)才能被驗(yàn)證或者被否定。并非所有問題都能解決。只是因?yàn)槟銉H僅收集了一些輸入X和目標(biāo)Y,這并不意味著X包含足夠的信息去預(yù)測(cè)Y。舉個(gè)例子,如果你試圖通過股票的歷史價(jià)格去預(yù)測(cè)股票的價(jià)格,那么你不可能成果,因?yàn)楣善钡臍v史價(jià)格不包含太多的預(yù)測(cè)信息。

非平穩(wěn)問題是一種不可解決的問題,你應(yīng)該注意此類問題。假設(shè)你正在嘗試建立一個(gè)衣服的推薦引擎,你在某一個(gè)月的數(shù)據(jù)上進(jìn)行訓(xùn)練(比如說,8月),你希望能夠在冬天的開始的時(shí)候推送你的推薦。這里有一個(gè)很大的問題:人們購(gòu)買的衣服類型會(huì)根據(jù)季節(jié)的變化而變化。衣服的購(gòu)買在幾個(gè)月的時(shí)間跨度中是一種非平衡現(xiàn)象。在這種情況下,正確的做法是不斷地對(duì)過去的數(shù)據(jù)訓(xùn)練新的模型,或者在問題處于靜止的時(shí)間范圍內(nèi)收集數(shù)據(jù)。對(duì)于想購(gòu)買衣服這樣的周期性問題,幾年內(nèi)的數(shù)據(jù)足以捕捉到季節(jié)的變化,但是記住要讓一年中的時(shí)間成為你模型的輸入。

請(qǐng)記住,機(jī)器學(xué)習(xí)只能記住訓(xùn)練數(shù)據(jù)中存在的模式。你只能認(rèn)識(shí)你已經(jīng)看到過的東西。利用機(jī)器學(xué)習(xí)對(duì)過去的數(shù)據(jù)進(jìn)行訓(xùn)練,用于預(yù)測(cè)未來,這樣的做法假設(shè)未來的行為將于過去類似。但是,通常并非如此。

2. 選擇成功的衡量指標(biāo)(Choosing a measure of success)

要控制某些東西,你需要能夠觀察到它。為了取得成功,你必須定義成功是什么,是正確率?精度或者召回率?還是客戶保留率?你的成功指標(biāo)的定義將會(huì)指導(dǎo)你選擇損失函數(shù),損失函數(shù)就是你模型將要優(yōu)化的內(nèi)容。損失函數(shù)應(yīng)該能夠直接與你的目標(biāo)保持一致,例如你業(yè)務(wù)的成功。

對(duì)于均衡分類問題,這類問題中每個(gè)類別都有相同的可能性,準(zhǔn)確率和ROC AUC是常用的指標(biāo)。對(duì)于類不平衡問題,你可以用精度和召回。對(duì)于排名問題或者多標(biāo)簽問題,你可以用平均精度。定義你自己的評(píng)價(jià)指標(biāo)并不罕見。要了解機(jī)器學(xué)習(xí)成功指標(biāo)的多樣性以及它們是如何關(guān)系不同的問題域,有必要去了解Kaggle上的數(shù)據(jù)科學(xué)競(jìng)賽,這些競(jìng)賽展示了廣泛的問題和評(píng)價(jià)指標(biāo)。

3. 決定一個(gè)驗(yàn)證策略(Deciding on an evaluation protocol)

一旦你知道你的目標(biāo)是什么,你必須確定你將如何衡量你當(dāng)前的進(jìn)度。

我們之前已經(jīng)了解了三種常用的驗(yàn)證策略:

保留一個(gè)hold-out驗(yàn)證集,當(dāng)你有足夠多的數(shù)據(jù)時(shí),用這種方法

K-fold 交叉驗(yàn)證。數(shù)據(jù)太少,不足以使用第一種驗(yàn)證方法的使用,用這種方法。

迭代 K-fold 交叉驗(yàn)證。只有很少的數(shù)據(jù)可用時(shí),用于執(zhí)行高度準(zhǔn)確的模型評(píng)估。

選擇其中一個(gè)。在大多數(shù)情況下,第一種方法工作得很好。

4. 準(zhǔn)備你的數(shù)據(jù)(Preparing your data)

一旦你知道你在訓(xùn)練什么,你正在優(yōu)化什么,如何評(píng)估你的方法,你幾乎已經(jīng)準(zhǔn)備好開始訓(xùn)練模型。但是首先,你應(yīng)該將數(shù)據(jù)格式化為機(jī)器學(xué)習(xí)模型所能接受的形式。這里,我們假設(shè)這個(gè)模型是一個(gè)深度學(xué)習(xí)模型,那么:

正如前面提到的那樣,你的數(shù)據(jù)應(yīng)該格式化為張量

通常情況下,這些張量的值被縮小為較小的值,比如說縮放到[-1,1]或者[0,1]

如果不同的特征采取不同范圍的值,那么數(shù)據(jù)應(yīng)該做歸一化處理

你可能想做一些特征工作,特別是對(duì)于數(shù)據(jù)集不大的問題

5. 開發(fā)一個(gè)比基線好的模型(Developing a model that does better than a baseline)

在這個(gè)階段,你的目標(biāo)是做到statistical power(不會(huì)翻譯),也就是開發(fā)一個(gè)能夠擊敗基線的模型。在MNIST數(shù)字分類示例中,任何達(dá)到大于0.1精度都可以說是具有statistical power; 在IMDB的例子中,大于0.5就可以了。

請(qǐng)注意,達(dá)到statistical power并不總是可能的。如果在嘗試了多個(gè)合理的體系構(gòu)架之后,仍然無法打敗一個(gè)隨機(jī)基線,那么可能是你要求的問題的答案無法從輸入數(shù)據(jù)中獲得。記住你提出的兩個(gè)假設(shè):

你假設(shè)你可以根據(jù)給定的輸入預(yù)測(cè)輸出

你假設(shè)你的可用數(shù)據(jù)有足夠的信息用于學(xué)習(xí)輸入與輸出之間的關(guān)系

這些假設(shè)有可能是錯(cuò)誤的,在這種情況下你必須重新開始。

假設(shè)目前為止一切都很順利,你需要作出三個(gè)關(guān)鍵的選擇來建立你的第一個(gè)工作模型:

最后一層的激活函數(shù),這為網(wǎng)絡(luò)的輸入設(shè)定了限制。例如,在IMDB分類問題中,最后一層使用了sigmoid; 在回歸問題中,最后一層沒有使用任何激活函數(shù)

損失函數(shù),這應(yīng)該與你正在嘗試解決的問題的類型相匹配。例如在IMBD二元分類問題中,使用了binary_crossentropy,回歸問題中使用了mse等等。

優(yōu)化配置,你將使用什么優(yōu)化器?學(xué)習(xí)率是多少?在大多數(shù)情況在,使用rmsprop和默認(rèn)的學(xué)習(xí)率是安全的。

關(guān)于損失函數(shù)的選擇,請(qǐng)注意,并不總是可以直接優(yōu)化metric。有時(shí)候,沒有簡(jiǎn)單的方法可以將metric轉(zhuǎn)換為損失函數(shù);損失函數(shù)畢竟只需要一個(gè)小批量的數(shù)據(jù)就能計(jì)算(理想情況下,損失函數(shù)只需要一個(gè)數(shù)據(jù)就能計(jì)算),并且損失函數(shù)必須是可微分的(否則,你不能使用反向傳播來訓(xùn)練你的網(wǎng)絡(luò))。例如,廣泛使用的分類度量ROC AUC就不能直接優(yōu)化。因此,在分類問題中,通常針對(duì)ROC AUC的代理指標(biāo)(例如,交叉熵)進(jìn)行優(yōu)化,一般來說,你希望如果越低的交叉熵,你就能獲得更高的ROC AUC。

下面的表格可以幫助為幾種常見的問題選擇最后一層激活函數(shù)和損失函數(shù)

機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的工作步驟模板

6. 全面升級(jí):開發(fā)一個(gè)過擬合的模型

一旦你的模型達(dá)到了statistical power,那么問題就變成了:你的模型是否足夠強(qiáng)大?你是否有足夠多的網(wǎng)絡(luò)層和參數(shù)來正確建模你的問題?例如,具有兩個(gè)神經(jīng)元的單層網(wǎng)絡(luò)在MNIST具有statistical power,但是不能很好的解決MNIST分類問題。

請(qǐng)記住,機(jī)器學(xué)習(xí)中最困難的就是在優(yōu)化和泛華之間取得平衡;理想的模型就是站在欠擬合與過擬合之間。要弄清楚這個(gè)邊界在哪里,你必須先穿過它。

要弄清楚你需要多大的模型,你必須先開發(fā)一個(gè)過擬合的模型。這很容易:

- 1. 增加網(wǎng)絡(luò)層

- 2. 讓網(wǎng)絡(luò)層變大

- 3. 訓(xùn)練更多次

始終監(jiān)視著訓(xùn)練誤差和驗(yàn)證誤差,以及你所關(guān)心的metrics。當(dāng)你看到模型在驗(yàn)證集上性能開始下降,就達(dá)到了過擬合。下個(gè)階段是開始正則化和調(diào)整模型,盡可能的接近既不是欠擬合又不是過擬合的理想模型。

7. 正則化你的模型并調(diào)整你的超參數(shù)(Regularizing your model and tuning your hyperparameters

這一步將花費(fèi)大量時(shí)間,你將重復(fù)修改你的模型,并對(duì)其進(jìn)行訓(xùn)練,在驗(yàn)證集上進(jìn)行評(píng)估,再次修改,如此重復(fù),知道模型達(dá)到所能達(dá)到的最佳效果。以下是你應(yīng)該嘗試做的一些事情:

添加Dropout

嘗試不同的體系結(jié)構(gòu)的網(wǎng)絡(luò):添加或者刪除網(wǎng)絡(luò)層

添加 L1/L2 正則化

嘗試不同的超參數(shù)(例如每一層的神經(jīng)元個(gè)數(shù)或者優(yōu)化器學(xué)習(xí)率),以獲得最佳的參數(shù)選擇

(可選)迭代特征工程:添加新特征,或者刪除似乎沒有提供信息的特征

請(qǐng)注意以下幾點(diǎn):每次使用驗(yàn)證集來調(diào)整模型參數(shù)時(shí),都會(huì)將有關(guān)驗(yàn)證的信息泄露在模型中。重復(fù)幾次是無害的;但是如果重復(fù)了很多很多次,那么最終會(huì)導(dǎo)致你的模型在驗(yàn)證集上過擬合(即使沒有直接在驗(yàn)證集上進(jìn)行訓(xùn)練),這使得驗(yàn)證過程不太可靠。

一旦你開發(fā)出令人滿意的模型,你可以根據(jù)所有可用的數(shù)據(jù)(訓(xùn)練集和驗(yàn)證集)來訓(xùn)練你最終的模型。如果測(cè)試集的結(jié)果明顯低于驗(yàn)證集上結(jié)果,那么可能意味著你的驗(yàn)證過程不太可靠,或者你的模型在驗(yàn)證集中已經(jīng)過擬合了。在這種情況下,你可能需要更為靠譜的驗(yàn)證策略(例如迭代K-fold驗(yàn)證)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    探討機(jī)器學(xué)習(xí)深度學(xué)習(xí)基本概念與運(yùn)算過程

    人工智慧隸屬于大範(fàn)疇,包含了機(jī)器學(xué)習(xí)(Machine Learning) 與深度學(xué)習(xí)(Deep Learning)。如下圖所示,我們最興趣的深度
    的頭像 發(fā)表于 12-18 15:45 ?4369次閱讀
    探討<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>與<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>基本概念與運(yùn)算過程

    如何區(qū)分深度學(xué)習(xí)機(jī)器學(xué)習(xí)

    深度學(xué)習(xí)與傳統(tǒng)的機(jī)器學(xué)習(xí)最主要的區(qū)別在于隨著數(shù)據(jù)規(guī)模的增加其性能也不斷增長(zhǎng)。當(dāng)數(shù)據(jù)很少時(shí),深度學(xué)習(xí)
    發(fā)表于 10-27 16:50 ?1965次閱讀
    如何區(qū)分<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>與<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>

    深度學(xué)習(xí)機(jī)器學(xué)習(xí)深度的不同之處 淺談深度學(xué)習(xí)的訓(xùn)練和調(diào)參

    近年來,深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)中比較火的一種方法出現(xiàn)在我們面前,但是和非深度學(xué)習(xí)
    發(fā)表于 05-02 10:30 ?4342次閱讀

    5分鐘內(nèi)看懂機(jī)器學(xué)習(xí)深度學(xué)習(xí)的區(qū)別

    由 mengqiqi 于 星期四, 2018-09-13 09:34 發(fā)表 在本文中,我們將研究深度學(xué)習(xí)機(jī)器學(xué)習(xí)之間的差異。我們將逐一了解它們,然后討論他們?cè)诟鱾€(gè)方面的不同之處。除了
    發(fā)表于 09-13 17:19 ?567次閱讀

    python機(jī)器學(xué)習(xí)深度學(xué)習(xí)學(xué)習(xí)書籍資料免費(fèi)下載

    本文檔的主要主要內(nèi)容詳細(xì)介紹的是python機(jī)器學(xué)習(xí)深度學(xué)習(xí)學(xué)習(xí)書籍資料免費(fèi)下載。
    發(fā)表于 11-05 16:28 ?95次下載

    機(jī)器學(xué)習(xí)深度學(xué)習(xí)之間比較

    近年來,隨著科技的快速發(fā)展,人工智能不斷進(jìn)入我們的視野中。作為人工智能的核心技術(shù),機(jī)器學(xué)習(xí)深度學(xué)習(xí)也變得越來越火。一時(shí)間,它們幾乎成為了每個(gè)人都在談?wù)摰脑掝}。那么,
    的頭像 發(fā)表于 05-11 10:13 ?3779次閱讀

    深度學(xué)習(xí)機(jī)器學(xué)習(xí)的區(qū)別是什么

    隨著人工智能浪潮席卷現(xiàn)代社會(huì),不少人對(duì)于機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、計(jì)算機(jī)視覺、自然語(yǔ)言處理等名詞已經(jīng)耳熟能詳??梢灶A(yù)見的是,在未來的幾年里,無論是在業(yè)界還是學(xué)界,擁有
    的頭像 發(fā)表于 02-02 10:56 ?1.1w次閱讀

    機(jī)器學(xué)習(xí)深度學(xué)習(xí)有什么區(qū)別?

    深度學(xué)習(xí)算法現(xiàn)在是圖像處理軟件庫(kù)的組成部分。在他們的幫助下,可以學(xué)習(xí)和訓(xùn)練復(fù)雜的功能;但他們的應(yīng)用也不是萬能的。 “機(jī)器學(xué)習(xí)”和“
    的頭像 發(fā)表于 03-12 16:11 ?8235次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>和<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>有什么區(qū)別?

    使用TensorFlow建立深度學(xué)習(xí)機(jī)器學(xué)習(xí)網(wǎng)絡(luò)

    教你使用TensorFlow建立深度學(xué)習(xí)機(jī)器學(xué)習(xí)網(wǎng)絡(luò)。
    發(fā)表于 03-26 09:44 ?18次下載

    什么是深度學(xué)習(xí)(Deep Learning)?深度學(xué)習(xí)工作原理詳解

    ? 本文將帶您了解深度學(xué)習(xí)工作原理與相關(guān)案例。 什么是深度學(xué)習(xí)? 深度
    的頭像 發(fā)表于 04-01 10:34 ?1.1w次閱讀

    人工智能與機(jī)器學(xué)習(xí)深度學(xué)習(xí)的區(qū)別

    人工智能包含了機(jī)器學(xué)習(xí)深度學(xué)習(xí)。你可以在圖中看到,機(jī)器學(xué)習(xí)是人工智能的子集,
    的頭像 發(fā)表于 03-29 11:04 ?1522次閱讀
    人工智能與<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>、<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的區(qū)別

    深度學(xué)習(xí)框架和深度學(xué)習(xí)算法教程

    深度學(xué)習(xí)框架和深度學(xué)習(xí)算法教程 深度學(xué)習(xí)機(jī)器
    的頭像 發(fā)表于 08-17 16:11 ?1106次閱讀

    機(jī)器學(xué)習(xí)深度學(xué)習(xí)的區(qū)別

    機(jī)器學(xué)習(xí)深度學(xué)習(xí)的區(qū)別 隨著人工智能技術(shù)的不斷發(fā)展,機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:11 ?4286次閱讀

    機(jī)器學(xué)習(xí)深度學(xué)習(xí)的區(qū)別

      機(jī)器學(xué)習(xí)深度學(xué)習(xí)是當(dāng)今最流行的人工智能(AI)技術(shù)之一。這兩種技術(shù)都有助于在不需要人類干預(yù)的情況下讓計(jì)算機(jī)自主學(xué)習(xí)和改進(jìn)預(yù)測(cè)模型。本文
    發(fā)表于 08-28 17:31 ?1600次閱讀

    深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)的對(duì)比

    在人工智能的浪潮中,機(jī)器學(xué)習(xí)深度學(xué)習(xí)無疑是兩大核心驅(qū)動(dòng)力。它們各自以其獨(dú)特的方式推動(dòng)著技術(shù)的進(jìn)步,為眾多領(lǐng)域帶來了革命性的變化。然而,盡管它們都屬于
    的頭像 發(fā)表于 07-01 11:40 ?1484次閱讀