深度學習革命正在由 apple intelligence 和 gemini 等人工智能平臺推動,影響着從汽車到金融等各個行業。工程師們學習深度學習以解決複雜的問題。本文爲深度學習項目提供指導,着重於五個基本要素:數據、模型架構、損失函數、優化器和評估過程。它介紹了常見問題和最佳實踐,以避免在構建深度學習模型時常見的陷阱,並提供策略來確保模型的準確性、效率和泛化能力。
我們的世界正在經歷一場由深度神經網絡驅動的人工智能革命。隨着 Apple Intelligence 和 Gemini 的出現,人工智能已經普及到每個擁有手機的人。除了消費者人工智能之外,我們還將深度學習模型應用於汽車、金融、醫療、製造業等多個行業。這促使許多工程師學習深度學習技術並將其應用於解決項目中的複雜問題。爲了幫助這些工程師,必須制定一些指導原則,以防止在構建這些黑盒模型時出現常見的陷阱。
任何深度學習項目都涉及五個基本要素:數據、模型架構、損失函數、優化器和評估過程。設計和配置每個要素以確保模型正確收斂至關重要。本文將介紹與每個要素相關的一些推薦做法和常見問題及其解決方案。
數據
所有深度學習模型都需要大量數據,至少需要數千個示例才能充分發揮其潛力。首先,重要的是確定不同的數據源,並設計適當的機制來選擇和標記數據(如果需要)。這有助於建立一些啓發式數據選擇方法,並仔細考慮平衡數據以防止無意的偏差。例如,如果我們正在構建一個用於人臉檢測的應用程序,重要的是確保數據中沒有種族或性別偏見,以及在不同的環境條件下捕獲數據以確保模型的穩健性。亮度、對比度、照明條件、隨機裁剪和隨機翻轉的數據增強也有助於確保適當的數據覆蓋範圍。
下一步是小心地將數據分成訓練集、驗證集和測試集,同時確保沒有數據泄漏。數據分割應具有相似的數據分佈,但訓練集和測試集中不應存在相同或非常密切相關的樣本。這很重要,因爲如果訓練樣本存在於測試集中,那麼我們可能會看到高測試性能指標,但生產中仍有幾個無法解釋的關鍵問題。此外,數據泄漏幾乎不可能知道模型改進的替代想法是否帶來了任何真正的改進。因此,代表生產環境的多樣化、防泄漏、平衡的測試數據集是提供強大的基於深度學習的模型和產品的最佳保障。
模型架構
爲了開始模型設計,首先要確定手頭任務的延遲和性能要求。然後,可以查看類似這樣的開源基準,以確定一些合適的論文。無論我們使用 CNN 還是 transformer,一開始就有一些預先訓練好的權重會有所幫助,以減少訓練時間。如果沒有可用的預訓練權重,那麼對每個模型層進行合適的模型初始化對於確保模型在合理的時間內收斂非常重要。此外,如果可用的數據集非常小(幾百個樣本或更少),那麼訓練整個模型就沒有意義了,而應該只對最後幾個特定於任務的層進行微調。
現在,是否使用 CNN、Transformer 或兩者的組合取決於具體問題。對於自然語言處理,Transformer 已被確定爲最佳選擇。對於視覺,如果延遲預算非常緊張,CNN 仍然是更好的選擇;否則,應該嘗試使用 CNN 和 Transformer 以獲得所需的結果。
損失函數
分類任務中最流行的損失函數是交叉熵損失,迴歸任務中最流行的損失函數是 L1 或 L2 (MSE) 損失。但是,爲了在模型訓練期間保持數值穩定性,可以使用某些變體。例如,在 Pytorch 中,BCEWithLogitsLoss 將 S 型層和 BCELoss 合併爲一個類,並使用對數和指數技巧,這使其比 S 型層後跟 BCELoss 更具有數值穩定性。另一個示例是 SmoothL1Loss,它可以看作是 L1 和 L2 損失的組合,並使 L1 損失平滑接近於零。但是,使用平滑 L1 損失時必須小心,以適當設置 beta,因爲其默認值 1.0 可能不適合在正弦和餘弦域中迴歸值。下圖顯示了 L1、L2 (MSE) 和平滑 L1 損失的損失值以及不同 beta 值下平滑 L1 損失值的變化。
優化器
動量隨機梯度下降法傳統上是研究人員針對大多數問題非常流行的優化器。然而,在實踐中,Adam 通常更易於使用,但存在泛化問題。Transformer 論文推廣了 AdamW 優化器,它將權重衰減因子的選擇與學習率分離開來,並顯著提高了 Adam 優化器的泛化能力。這使得 AdamW 成爲當今優化器的最佳選擇。
此外,沒有必要對整個網絡使用相同的學習率。通常,如果從預訓練的檢查點開始,最好凍結或保持初始層的低學習率,併爲更深的任務特定層保持較高的學習率。
評價與概括
開發適當的模型評估框架是防止生產中出現問題的關鍵。這不僅應涉及完整基準數據集的定量和定性指標,還應涉及特定場景的定量和定性指標。這樣做是爲了確保性能在每種情況下都是可接受的,並且不會出現倒退。
應謹慎選擇性能指標,以確保它們能夠恰當地代表要實現的任務。例如,在許多不平衡的問題中,精度/召回率或 F1 分數可能比準確率更好。有時,我們可能有多個指標來比較替代模型,那麼通常有助於提出一個可以簡化比較過程的單一加權指標。例如,nuScenes 數據集引入了 NDS(nuScenes 檢測分數),它是 mAP(平均精度)、mATE(平均平移誤差)、mASE(平均尺度誤差)、mAOE(平均方向誤差)、mAVE(平均速度誤差)和 mAAE(平均屬性誤差)的加權和,以簡化各種 3D 物體檢測模型的比較。
此外,還應儘可能可視化模型輸出。這可能涉及在輸入圖像上繪製邊界框(用於 2D 物體檢測模型)或在激光雷達點雲上繪製長方體(用於 3D 物體檢測模型)。這種手動驗證可確保模型輸出合理,並且模型錯誤中沒有明顯的模式。
此外,密切關注訓練和驗證損失曲線有助於檢查是否存在過度擬合或欠擬合。過度擬合是一種問題,其中驗證損失與訓練損失不同並開始增加,表示模型的泛化能力不佳。通常可以通過添加適當的正則化(如權重衰減、drop-out 層)、添加更多數據增強或使用早期停止來解決此問題。另一方面,欠擬合表示模型沒有足夠的容量來擬合訓練數據的情況。這可以通過訓練損失下降不夠和/或在整個時期內保持或多或少平坦來識別。可以通過向模型添加更多層、減少數據增強或選擇不同的模型架構來解決此問題。下圖展示了通過損失曲線的過度擬合和欠擬合的示例。
深度學習之旅
與傳統軟件工程不同,深度學習更具實驗性,需要仔細調整超參數。但是,如果上述基本原則得到照顧,這個過程會更易於管理。由於模型是黑匣子,我們必須利用損失曲線、輸出可視化和性能指標來了解模型行爲並相應地採取糾正措施。希望本指南可以讓您的深度學習之旅不那麼費力。
以上就是深度學習實踐者指南的詳細內容,更多請關注本站其它相關文章!