深度學習應用中需要思考的問題
阿新 • • 發佈:2019-01-02
深度學習應用中需要思考的問題
這篇文章摘自Deeplearning4J,這裡博主將其提出來做個備註,也幫助大家深度學習深度學習哈哈。以下是原網址,希望大家轉載註明來源是Deeplearning4J。
對於下列問題,我們無法給出統一的回答,因為答案取決於您想要解決的具體問題。但是,我們希望本頁中列出的各項因素能引導您在初期系統地思考如何選擇演算法和工具:
- 我要解決的是有監督學習問題,還是無監督問題?如果是有監督學習,那麼是分類問題還是迴歸問題?有監督學習是有“老師”的。這位“老師”就是一個確定輸入和輸出資料之間關聯的定型資料集。例如,您可能需要標記影象。在這種分類問題中,輸入是原始畫素,而輸出則是圖片中的事物的名稱。而在迴歸問題中,您可能需要教授神經網路如何預測連續值,例如根據住房面積這樣的輸入資料來判斷房子的價格。無監督學習則能通過分析未標記的資料來檢測相似性或異常狀況。無監督學習沒有“老師”;具體應用包括影象搜尋和欺詐檢測等。
- 如果是有監督學習,需要處理的標籤數量有多少?需要準確標記的標籤數量越多,問題的計算強度也就越大。ImageNet的定型資料集約有1000個類別;而鳶尾花資料庫則只有3個類別。
- 每個批次應當包含多少資料?一個批次指的是資料集中的一組樣例或例項,比如一組影象。在定型過程中,一個批次的例項全部輸入神經網路,網路對這些例項進行預測,然後依據所有預測誤差的平均值來更新模型的權重。批次越大,兩次更新之間的等待時間(或稱學習步驟)就越長。批次較小意味著網路從每個批次中學到的與問題資料集相關的資訊較少。如果您有大量資料,一開始不妨將批次大小設定為1000,對於一些問題可以取得較好的學習效果。
- 需要處理的特徵數量有多少?
- 同樣的問題,另一種表述是:應當選擇哪種網路架構?微軟研究院開發的Resnet網路在最近的ImageNet大賽中獲得冠軍,該網路有150個層。在其他條件相同的情況下,層數越多,需要處理的特徵越多,所需要的記憶體也就越大。多層感知器(MLP)中的一個稠密層的特徵密集度要遠高於一個卷積層。人們之所以使用包含二次抽樣層的卷積網路,正是因為這樣可以大刀闊斧地“修剪”需要運算的特徵。
- 要用怎樣的方法來除錯神經網路?
- 模型定型需要多少資料?怎樣找到這些資料?
- 硬體:使用GPU、CPU還是兩者並用?用單一GPU系統還是分散式系統?目前許多研究是用1~4個GPU的系統開展的。企業級解決方案通常需要更多資源,因此還必須使用大型CPU叢集。
- 要使用哪種資料加工管道?如何進行資料的提取、轉換和載入(ETL)?資料是在Oracle資料庫中嗎?還是在Hadoop叢集上? 資料是在本地還是雲端?
- 如何提取資料中的特徵?雖然深度學習可以自動提取特徵,但您可以用不同形式的特徵工程來減輕計算負荷,加快定型速度,尤其是在特徵比較稀疏的情況下。
- 應使用何種非線性函式、損失函式和權重初始化方式?非線性函式是與深度神經網路中每個層相對應的啟用函式,可能是sigmoid函式、修正線性單元或其他函式。每種非線性函式通常與特定的損失函式搭配。
- 解決這個問題的最簡架構是什麼?並非所有人都願意或有能力用Resnet來進行影象分類。
- 網路在哪裡進行定型?模型要部署到哪裡?需要與哪種平臺整合?大多數人直到完成一個的原型時才開始思考這些問題,此時他們往往得用可擴充套件性更強的工具來重寫自己的網路。您應當提前考慮最終需要使用的是Spark、AWS、Hadoop,還是別的平臺。
歡迎使用Deeplearning4j的Java開發者加入我們的Gitter線上交流群,社群中的成員會根據具體情況來幫助您回答上述問題。