- 華為MindSpore深度學習框架應用開發實戰
- 李曉黎編著
- 1694字
- 2024-11-21 15:41:06
1.1.4 深度學習的基本工作流程
深度學習的基本工作流程如圖1-10所示。

圖1-10 深度學習的基本工作流程
訓練:神經網絡模型的學習過程也是調整權重和偏差以便擬合訓練數據的過程。“擬合”是指根據訓練樣本學習適用于所有潛在樣本的“普遍規律”,以便在遇到新樣本時進行正確的判別。如果用學生學習的過程來比喻深度學習,那么訓練階段就是在課堂上學習的過程。
驗證:模型驗證也稱模型評估,用于查看訓練的效果。該流程一般會調整模型的超參,對不同的算法進行驗證,檢驗哪種算法更有效。“超參”是指在開始學習過程前設置值的參數。因此需要通過驗證階段找到最優的超參數值。如果用學生學習的過程來比喻深度學習,那么驗證階段就是做作業的過程。做作業不但可以驗證課堂學習的效果,而且可以鞏固課堂學習的成果。
測試:用于評估最終模型的泛化能力。“泛化能力”是指算法對訓練樣本中沒有的新鮮樣本的適應能力。如果根據訓練樣本學習出的“普遍規律”適用于新鮮樣本,則說明算法的泛化能力強。如果用學生學習的過程來比喻深度學習,那么測試階段就是考試的過程。考試的題目不一定都出現在課堂上和作業中,它能檢驗學生的舉一反三的能力。
根據深度學習的3個階段,數據集可被分成3份,即訓練集、驗證集和測試集。根據斯坦福大學人工智能和機器學習專家吳恩達教授的建議,如果數據集規模較小(比如只有100條或10000條),則可以按60%訓練集、20%驗證集和20%測試集來分配數據;如果數據集規模較大(比如達到百萬條),則驗證集和測試集要分別小于數據總量的20%和10%。
在訓練、驗證和測試這3個階段中,訓練階段是最重要的,這一階段要完成深度學習模型的構建,并應用算法對輸入數據進行處理,最終得到預測值。深度學習模型的訓練過程如圖1-11所示。

圖1-11 深度學習模型的訓練過程
1.數據處理
數據處理首先要加載數據集,可以從本地讀取數據,也可以選擇從線上的資源庫讀取數據;然后對數據進行預處理,例如在圖像處理的模型中將所有輸入圖像都轉換為統一尺寸的圖像。第3章將介紹在MindSpore框架中進行數據處理的方法。
2.模型設計
模型設計需要完成以下工作。
① 確定神經網絡的模型結構:比較常見的神經網絡包括CNN、RNN(循環神經網絡)和GAN等。其中CNN常用于處理圖像任務;RNN通常用于處理順序任務,包括逐字生成文本或預測時間序列數據等;GAN用于根據訓練集的特征生成同類的新實例。每種神經網絡都包含一些經典的模型結構,用于實現圖像分類、目標檢測、語義分割、自然語言理解、文本分類等任務。第5章將介紹CNN的工作原理和應用情況。第9章將介紹GAN和RNN的應用實例。
② 確定神經網絡的深度和寬度:神經網絡的深度是指網絡的層數,寬度是指每層的通道數。在卷積神經網絡中,通道數通常指圖片的類型,如果圖片的顏色采用 RGB類型,則通道數為 3。寬度和深度決定了隱藏層的神經元數量,隱藏層的神經元越多,模型的擬合效果越好,但是會影響訓練的效率。
③ 選擇激活函數:常用的激活函數包括Sigmoid、Tanh和ReLU(修正線性單元)等,具體情況將在第5章中結合相關應用進行介紹。
④ 選擇損失函數:深度學習模型可以根據輸入數據得到預測值。在開始模型訓練前會先確定一個訓練的目標。一個好的模型,其預測值與目標值之間的誤差會盡可能小。損失函數的作用是衡量預測值與目標值之間的誤差。
雖然比較經典的神經網絡模型都有默認的網絡結構、超參數值、激活函數和損失函數,但是在實際應用時,也可以根據具體的應用場景通過訓練進行微調。
模型設計涉及的技術問題將在第5章進行介紹。
3.訓練配置
訓練配置的主要工作包括設定模型的優化器和配置參與計算的硬件資源。
深度學習模型訓練的目標是尋找合適的參數,使損失函數的值盡可能小。解決這個問題的過程被稱為最優化,所使用的算法叫作優化器。常用的優化器包括SGD(隨機梯度下降)算法和AdaGrad(自適應梯度)算法等。
4.訓練過程
訓練過程包括以下3個步驟。
① 前向計算:將輸入數據傳入模型并計算得到輸出數據。
② 計算損失函數:如果損失函數的值小于期望值,則停止訓練。
③ 反向傳播:如果損失函數的值大于期望值,則根據前向計算得到的輸出數據,通過優化器從后向前地優化網絡中的參數。
5.保存模型
訓練好的模型被保存起來,以備日后模型評估和預測時調用。