成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度學習應(yīng)用實踐指南:七大階段助你創(chuàng)造最佳新應(yīng)用

開發(fā) 開發(fā)工具
近日來自美國海軍研究室人工智能應(yīng)用研究中心的 Leslie N.Smith 總結(jié)了一份報告,本報告對希望在沒有用過深度學習算法應(yīng)用軟件上進行深度神經(jīng)網(wǎng)絡(luò)嘗試的人群提供了實用建議。

近日來自美國海軍研究室人工智能應(yīng)用研究中心的 Leslie N.Smith 總結(jié)了一份報告,本報告對希望在沒有用過深度學習算法應(yīng)用軟件上進行深度神經(jīng)網(wǎng)絡(luò)嘗試的人群提供了實用建議。為了使項目更易于管理,這些建議被分成了幾個階段,每個階段都包含了幫助新手的大量建議和見解。

來自美國海軍研究室人工智能應(yīng)用研究中心的 Leslie N.Smith 總結(jié)了一份報告

本報告針對的群體是應(yīng)用程序的主題專家,但是在深度學習方面還是新手。它對希望在沒有用過深度學習算法的應(yīng)用軟件上進行深度神經(jīng)網(wǎng)絡(luò)嘗試的人群提供了實用建議。為了使你的項目更易于管理,我們建議將其分成幾個階段。對于每個階段,本報告包含了幫助新手的大量建議和見解。

導(dǎo)語

雖然我的研究重點是深度學習 ( DL ),但是我發(fā)現(xiàn)我越發(fā)頻繁地被要求幫助沒有多少深度學習經(jīng)驗卻想要在其全新應(yīng)用中嘗試深度學習的團體。這個 NRL 報告的動機來自于我注意到對所有這些群體的大部分建議和指導(dǎo)是相似的。因此,本報告討論了更普遍相關(guān)的深度學習應(yīng)用的方面。

雖然有幾個有用的機器學習***實踐建議資源 [1-5],但與本報告所涉及的深度學習有一些差異。不過,我建議讀者閱讀并熟悉這些參考資料,因為其中包含許多寶貴的信息。此外,有很多關(guān)于軟件工程和敏捷方法學(agile methodology)(我認為讀者已經(jīng)熟悉)的***實踐資源(例如 [6,7])。本報告中最為重要的內(nèi)容可參見「深度學習」第 11 章「實踐方法論」,但我在本報告中還討論了該教材未涵蓋的若干因素和見解。

你可以在下面看到,一個深度學習的應(yīng)用項目被分為若干個階段。然而,在實踐中,你可能會發(fā)現(xiàn)回到較早的階段會更有幫助。例如,在階段 3 中找到類比時,你可能會發(fā)現(xiàn)你在第 1 階段未考慮過的新指標。在項目進行時所有這些***實踐都暗示著通過迭代返回某個階段以及持續(xù)的提升。

階段 1:開始準備

在本報告中,我假設(shè)你是(或可以取得)應(yīng)用程序的主題專家。你應(yīng)該熟悉解決相關(guān)問題的文獻和研究,并了解***進的解決方案和性能水平。我建議你從一開始考慮這一點,如果深度學習解決方案是值得的。你必須考慮現(xiàn)有技術(shù)的性能水平很高,是否值得在本報告中提出的建議下進行逐步改進。不要因為只是看起來像***最偉大的方法而進行深度學習。你還應(yīng)該考慮你是否有計算機資源,因為每個訓練一個深度網(wǎng)絡(luò)的進程可能需要幾天或幾周時間。我在自己的研究中充分利用了國防部的 HPC 系統(tǒng)。此外,你應(yīng)該考慮機器學習是否合適——請記住,訓練深度網(wǎng)絡(luò)需要大量標簽數(shù)據(jù),如階段 2 中所述。

***步是量化地定義成功的情形。無論是由人類還是機器完成,如果它是成功的,你會看到什么?這有助于定義你的評估指標。想想哪些指標很重要?哪些不太重要?你需要指定在本項目成功中發(fā)揮作用的所有定量值,并確定如何權(quán)衡其中的每一個的權(quán)重。你還需要為你的指標定義目標;你的目標是否超過了人類的表現(xiàn)?你的目標將強烈影響項目進展。從數(shù)量上了解人在這一任務(wù)中的表現(xiàn)是什么將有助于指導(dǎo)你的目標;***進的技術(shù)與人類的表現(xiàn)相比如何?同樣,了解人類如何解決這個任務(wù)將提供有關(guān)機器如何解決其任務(wù)的有價值信息。

這些指標中的一些也可以用來設(shè)計損失函數(shù)(loss function),這有助于指導(dǎo)網(wǎng)絡(luò)訓練。不要僅僅使用 softmax / cross 熵/ log,因為這是最常見的損失函數(shù),盡管你應(yīng)該從它們開始。從定義上看,你的評估指標是對你的應(yīng)用程序重要的數(shù)量。準備好將這些指標作為損失函數(shù)的加權(quán)組成部分進行測試,以指導(dǎo)訓練(見階段 6)。

盡管你可能出于其強大能力而考慮深度學習,那么考慮一下如何使網(wǎng)絡(luò)的「工作」盡可能簡單。這是反直覺的,但由于它是深度網(wǎng)絡(luò)的力量,可能會激勵你嘗試。然而,網(wǎng)絡(luò)必須執(zhí)行的工作越簡單,訓練越容易,性能越好。你(或***進的技術(shù))目前使用的啟發(fā)法/物理學是否可以在這里使用?可以預(yù)處理數(shù)據(jù)嗎?雖然網(wǎng)絡(luò)可以學習復(fù)雜的關(guān)系,但請記?。骸妇W(wǎng)絡(luò)工作越簡單,執(zhí)行效果就越好」。所以值得花時間考慮從以前的工作你可以借鑒的內(nèi)容以及網(wǎng)絡(luò)需要為你做些什么。假設(shè)你希望改進物理學高度近似的復(fù)雜過程(即「球形?!骨闆r);你可以選擇將數(shù)據(jù)輸入深度網(wǎng)絡(luò),以便(希望)輸出所需的結(jié)果,或者你可以訓練網(wǎng)絡(luò)以在近似結(jié)果中查找更正。后一種方法幾乎肯定會超過前者。另一方面,不要依賴人工努力來定義潛在的啟發(fā)法——最稀缺的資源是人力時間,所以讓網(wǎng)絡(luò)學習它的表征,而不需要任何固定的人工預(yù)處理。

此外,你可能需要記下你對這一***進的過程的任何假設(shè)或期望,因為它將證明自己的效果。

階段 2:準備你的數(shù)據(jù)

深度學習需要大量的訓練數(shù)據(jù)。你可能想知道「我需要多少訓練數(shù)據(jù)」。網(wǎng)絡(luò)中的參數(shù)數(shù)量與訓練數(shù)據(jù)的數(shù)量相關(guān)。訓練樣本的數(shù)量將在第 6 階段限制你的架構(gòu)選擇。訓練數(shù)據(jù)越多,網(wǎng)絡(luò)就越大而準確。因此,訓練數(shù)據(jù)的數(shù)量取決于你在階段 1 中定義的目標。

除了訓練數(shù)據(jù)之外,你還需要更少的標簽驗證或測試數(shù)據(jù)。該測試數(shù)據(jù)應(yīng)與訓練數(shù)據(jù)相似但不一樣。網(wǎng)絡(luò)沒有對測試數(shù)據(jù)進行訓練,但它用于測試網(wǎng)絡(luò)的泛化能力。

如果訓練數(shù)據(jù)量非常有限,則考慮遷移學習(transfer learning)[9] 和域適應(yīng)(domain adaptation)[10,11]。如果這是合適的,下載最接近你的數(shù)據(jù)的數(shù)據(jù)集用于預(yù)訓練。另外,考慮創(chuàng)建合成數(shù)據(jù)。合成數(shù)據(jù)具有可以創(chuàng)建大量樣本并使其多樣化的優(yōu)點。

項目目標也指導(dǎo)訓練數(shù)據(jù)樣本的選擇。確保訓練數(shù)據(jù)與任務(wù)直接相關(guān),并且它的多樣性足以覆蓋問題空間。研究每個類別的統(tǒng)計數(shù)據(jù)。例如,類別是否平衡?平衡類別的一個例子是貓與狗,而不平衡的類別是貓與所有其它哺乳動物(如果你的問題本質(zhì)上是不平衡的,向深度學習專家請教)。

什么預(yù)處理是可能的?你可以零均值并歸一化數(shù)據(jù)嗎?這使得網(wǎng)絡(luò)的工作更容易,因為它消除了學習平均值的工作。通過在訓練樣本之間建立更大的相似性,歸一化也使網(wǎng)絡(luò)的工作更容易。

如上所述,調(diào)查是否有辦法使用先驗知識或已知啟發(fā)法(heuristic)降低數(shù)據(jù)的維度。你不需要花時間人工確定啟發(fā)法,因為目標是節(jié)省人力時間,你可以讓網(wǎng)絡(luò)學習自己的表征。只要知道網(wǎng)絡(luò)必須篩選的無關(guān)數(shù)據(jù)越多,需要的訓練數(shù)據(jù)就越多,訓練網(wǎng)絡(luò)的時間就越長。所以充分利用現(xiàn)有的技術(shù)。

階段 3:找出你的應(yīng)用程序與最相近的深度學習應(yīng)用程序之間的相似點

專家知道不能每個項目都從頭開始。這就是為什么他們被稱為專家的原因。他們再使用以前的解決方案、搜索其他研究人員的深度學習文獻來解決問題。即使沒有人做過你想做的事情,你仍然需要利用專家的長處。

深度學習已被應(yīng)用于各種應(yīng)用。為了創(chuàng)建你的基線模型(baseline model)——即你的起點——你需要找到與你的應(yīng)用程序相似的應(yīng)用程序。你應(yīng)該搜索深度學習文獻,并考慮各種應(yīng)用程序解決的「問題」與你在應(yīng)用程序中需要解決的「問題」進行比較。找出這些問題之間的相似之處和類比。此外,請注意你的新應(yīng)用程序與深度學習應(yīng)用程序之間的差異,因為這些差異可能需要在階段 6 中更改架構(gòu)。

當你找到最相近的應(yīng)用程序時,請查找代碼并下載。許多研究人員在開源環(huán)境中公開發(fā)表了他們的代碼,使代碼可重復(fù)用于研究。你的***個目標是在最接近的應(yīng)用程序的論文中復(fù)制結(jié)果。然后在「了解」階段修改各塊代碼,看看其對結(jié)果的影響。如果你幸運的話,會有幾個代碼可用,你應(yīng)該復(fù)制所有代碼的結(jié)果。這個對比將為你提供足夠的信息,以便你可以在階段 4 中創(chuàng)建基線。

有幾種「經(jīng)典」的深度學習應(yīng)用程序和眾所周知的解決方案。這些包括圖像分類/對象識別(卷積網(wǎng)絡(luò))、處理如語言處理的順序數(shù)據(jù)(RNN/LSTM/GRU)和復(fù)雜的決策制定(深度強化學習)。還有一些常見的其它應(yīng)用,如圖像分割(image segmentation)和超分辨率(super-resolution)(全卷積網(wǎng)絡(luò))以及相似匹配(孿生網(wǎng)絡(luò)/Siamese network)。附錄 A 列出了許多最近的深度學習應(yīng)用程序和它們使用的架構(gòu)以及描述應(yīng)用程序的論文的鏈接。這些可以提供一些想法,但不應(yīng)該作為尋找深度學習應(yīng)用程序的來源。你應(yīng)該仔細搜索谷歌學術(shù)(https://scholar.google.com)和 arXiv(https://arxiv.org)以獲取深度學習的應(yīng)用程序。

階段 4:創(chuàng)建簡單的基線模型

開始時始終保持簡單、小巧和容易。使用比你預(yù)期需要的更小的架構(gòu)。從共同的目標函數(shù)開始,使用超參數(shù)的常用設(shè)置,僅使用部分訓練數(shù)據(jù)。這是一個能夠部分實踐敏捷軟件方法論的好地方,如簡單設(shè)計、單元測試(unit testing)和簡短發(fā)布(short release)?,F(xiàn)在只需要獲得基本功能,并在階段 6 中進行改進。也就是說,計劃小步驟、持續(xù)更新、并迭代。

只選擇一種常見的框架,如 Caffe、TensorFlow 或 MXnet。計劃僅使用一種框架和一種計算機語言來***限度地減少由不必要復(fù)雜度帶來的錯誤。選擇框架和語言可能會受到在階段 3 中執(zhí)行的復(fù)制工作的驅(qū)動。

如果網(wǎng)絡(luò)將成為較大的框架的一部分,那么這里是檢查框架 API 正常工作的好地方。

階段 5:創(chuàng)建可視化和調(diào)試工具

了解模型中發(fā)生的情況將會影響項目的成功。木匠有一個說法「測量兩次,切割一次」。你應(yīng)該「編碼一次,測量兩次」。除了評估輸出外,你還應(yīng)該可視化你的架構(gòu)并測量內(nèi)部實體(internal entity),以了解為什么獲得這樣的結(jié)果。離開模型診斷,你將很難解決問題或提高性能。

你應(yīng)該對與高偏差(收斂于錯誤的結(jié)果)對高方差(收斂差)相關(guān)的問題有一個一般的了解,因為每種類型的問題都有不同的解決方案;例如,你可能會用更大的網(wǎng)絡(luò)修復(fù)高偏差問題,但是你可以通過增加訓練數(shù)據(jù)集的大小來處理高方差問題。

可視化你的模型,以便你可以盡可能多地監(jiān)視架構(gòu)的進化過程。在可能的情況下,為每次代碼修改設(shè)置單元測試(unit test)。你應(yīng)該將訓練錯誤與測試錯誤進行比較,并將兩者與人工表現(xiàn)進行比較。你可能會發(fā)現(xiàn)你的網(wǎng)絡(luò)會表現(xiàn)得很奇怪,你需要確定架構(gòu)進化中發(fā)生的事情以及原因。首先開始調(diào)試最差的問題。了解問題是否與訓練數(shù)據(jù)、架構(gòu)或損失函數(shù)有關(guān)。

請記住,誤差分析會試圖解釋當前性能與***性能之間的差異。銷蝕分析(ablative analysis)試圖解釋一些基線表現(xiàn)與當前表現(xiàn)之間的差異。使用一種或另一種或兩種分析可能是有用的。

使用 TensorFlow 作為框架的一個動機是它有一個名為 TensorBoard 的可視化系統(tǒng),它是框架的一部分。你可以從 TensorFlow 輸出必要的文件,TensorBoard 可用于可視化你的架構(gòu),并監(jiān)控權(quán)重和特征映射(feature map),探索網(wǎng)絡(luò)創(chuàng)建的嵌入空間(embedded space)。因此,在框架中可用調(diào)試和可視化工具。如果使用其它框架,你需要找到這些工具(通??梢栽诰€獲得)或創(chuàng)建自己的工具。

階段 6:微調(diào)你的模型

這個階段可能需要大部分時間。你應(yīng)該廣泛地實驗。并且不要僅使用你認為會改善結(jié)果的因素,而是嘗試改變每一個因素以學習當其變化時發(fā)生了什么。改變架構(gòu)設(shè)計、深度、寬度、路徑、權(quán)重初始化、損失函數(shù)等。更改每個超參數(shù),了解提高或降低數(shù)值時的效果。我建議使用學習速率范圍測試(learning rate range test)[12] 了解你的網(wǎng)絡(luò)在不同學習速率下的行為??梢赃M行類似的程序來研究其它超參數(shù)的影響。

嘗試各種正則化方法,如數(shù)據(jù)增強(augmentation)、dropout 和權(quán)重衰減。泛化(generalization)是深度網(wǎng)絡(luò)的關(guān)鍵優(yōu)勢之一,所以一定要測試正則化方法,以便***限度地提高概括不可見情況的能力。

你應(yīng)該測試損失函數(shù)。你在基線中使用了簡單的損失函數(shù),但也創(chuàng)建了多個你關(guān)心并達到(定義)成功的評估指標。評估指標和損失函數(shù)之間的唯一差異在于用于測試數(shù)據(jù)的測量指標和用于訓練網(wǎng)絡(luò)的訓練數(shù)據(jù)的損失函數(shù)。更復(fù)雜的損失函數(shù)可以產(chǎn)生更成功的結(jié)果嗎?你可以向損失函數(shù)添加加權(quán)項,以反映每個指標對結(jié)果的重要性。但是要非常小心,不要因不重要的標準而使損失函數(shù)復(fù)雜化,因為它是你模型的核心。

早些時候,你發(fā)現(xiàn)應(yīng)用程序與現(xiàn)有的深度學習應(yīng)用程序之間的類比,并選擇最接近的作為你的基線。現(xiàn)在比較第二個或第三個最接近的應(yīng)用程序。如果你按照另一個類比并使用該架構(gòu),會發(fā)生什么?你能設(shè)想結(jié)合兩者來測試嗎?

一開始,你應(yīng)該從一些容易的取得成功。隨著你不斷深入,提高性能將變得更加困難。你在階段 1 中定義的目標將決定你希望的性能改進的程度?;蛘吣憧赡芟胍薷闹岸x的目標。

階段 7:端到端訓練、集成與其他復(fù)雜度

如果你有時間和預(yù)算,你可以探索更復(fù)雜的方法,實際上有很多復(fù)雜的方法可供選擇。有大量深度學習的文獻,每天都在出現(xiàn)更多的論文。大多數(shù)這些論文以一種或另一種方式宣布了新的***進的結(jié)果,有些可能幫助你提升性能。這個部分可以單獨作為一份長的報告,因為有這么多架構(gòu)和其它選擇可以考慮,但如果你處于這個階段,請考慮與具有大量深度學習專長的人交談,因為在這個階段的建議可能對你的應(yīng)用程序是***的。

但是,你可能會考慮兩種常用的方法:端到端的訓練和集成。

作為一般規(guī)則,連接系統(tǒng)的端到端訓練將優(yōu)于具有多個部分的系統(tǒng),因為具有端到端訓練的組合系統(tǒng)允許每個部分獨立適應(yīng)任務(wù)。因此,如果與你的應(yīng)用相關(guān),考慮這些組合的部分是有用的。

各種學習器的集合(即裝袋(bagging)、提升(boosting)、堆疊(stacking))也可以提高單個模型的性能。但是,這將需要你訓練和維護集合中的所有學習器。如果你的性能目標值得這樣做,那么值得測試一個集合的方法。

總結(jié)

當你在以前沒有使用過深度學習的應(yīng)用程序上實驗時,本報告為你提供了許多因素作為參考。并不是每個項目都與這些因素相關(guān),但我希望本文能涵蓋在項目期間你應(yīng)該考慮的大多數(shù)因素。祝你成功!

【本文是51CTO專欄機構(gòu)機器之心的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2018-04-11 14:13:29

物聯(lián)網(wǎng)信息技術(shù)互聯(lián)網(wǎng)

2019-07-04 14:25:53

機器學習金融大數(shù)據(jù)

2018-09-27 11:48:51

2011-08-01 09:51:20

云計算

2009-12-01 14:35:06

Linux忠告

2015-08-06 08:58:08

CA Technolo應(yīng)用經(jīng)濟

2009-06-23 14:12:00

javaJSP絕招

2013-03-01 15:36:08

企業(yè)級移動應(yīng)用2013

2024-07-31 16:04:14

2016-10-12 19:14:31

2020-11-23 18:39:54

容器Kubernetes架構(gòu)

2016-11-08 22:47:09

大數(shù)據(jù)英國政府大數(shù)據(jù)應(yīng)用

2017-09-04 18:02:58

應(yīng)用程序APP移動設(shè)備

2020-02-25 15:04:48

深度學習編程人工智能

2017-03-01 13:36:41

TensorFlowTheano框架

2017-07-05 14:21:30

框架TensorFlowTheano

2010-03-26 11:01:31

災(zāi)備虛擬化

2022-11-07 14:31:26

物聯(lián)網(wǎng)IoT

2021-12-13 14:36:31

人工智能AI

2022-05-26 08:00:00

Linux白板應(yīng)用程序
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 九九热免费视频在线观看 | 欧美一区二区三区四区在线 | 久久综合一区二区 | 亚洲欧美视频 | 精品成人一区二区 | 亚洲成人免费视频在线 | 亚洲一区二区三区久久久 | 盗摄精品av一区二区三区 | 国产精品福利一区二区三区 | a级毛片毛片免费观看久潮喷 | 中文字幕在线观看 | 午夜视频在线 | 国产精品免费大片 | 午夜精品久久久久久久久久久久久 | 国产综合视频 | 国产xxxx搡xxxxx搡麻豆 | 毛片久久久 | 一区二区三区视频 | 伊人精品一区二区三区 | 久久精品免费观看 | 爱爱综合网 | 成人免费看 | 高清人人天天夜夜曰狠狠狠狠 | 在线精品国产 | 亚洲区一区二 | 国产欧美视频一区二区 | 久久黄色网 | 国产一区不卡 | 99久久婷婷国产综合精品电影 | 国产一级片免费看 | 欧美啪啪 | 欧美日韩亚洲国产 | a级片播放 | 日韩中文字幕在线视频 | 精品区一区二区 | 亚洲va国产日韩欧美精品色婷婷 | 综合色在线 | 日韩视频在线一区二区 | 欧美另类视频 | 国产精品久久久久久久粉嫩 | 精品久久成人 |