官术网_书友最值得收藏!

2.2.4 損失函數和優化器

有了神經網絡組件構建的模型還需要定義損失函數計算訓練過程中輸出和真實值的誤差。均方誤差(Mean Squared Error,MSE)是線性回歸中常用的,是計算估算值與真實值差值的平方和的平均數。平均絕對誤差(Mean Absolute Error,MAE)是計算估算值與真實值差值的絕對值求和再求平均。交叉熵(Cross Entropy,CE)是分類問題中常用的,衡量已知數據分布情況下,計算輸出分布和已知分布的差值。

有了損失函數,就可以通過損失值利用優化器對參數進行訓練更新。對于優化的目標函數fx);先求解其梯度?fx),然后將訓練參數W沿著梯度的負方向更新,更新公式為Wt=Wt?1?(Wt?1),其中α是學習率,W是訓練參數,?(Wt?1)是方向。神經網絡的優化器有兩類:一類是學習率不受梯度影響的隨機梯度下降(Stochastic Gradient Descent,SGD)及SGD的一些改進方法,如帶有Momentum的SGD;另一類是自適應學習率,如AdaGrad、RMSProp、Adam等。

SGD的更新是對每個樣本進行梯度下降,因此計算速度很快,但是單樣本更新頻繁,會造成震蕩;為了解決震蕩問題,提出了帶有Momentum的SGD,該方法的參數更新不僅僅由梯度決定,也和累計的梯度下降方向有關,使得增加更新梯度下降方向不變的維度,減少更新梯度下降方向改變的維度,從而速度更快,震蕩也減少了。

自適應學習率AdaGrad是通過以往的梯度自適應更新學習率,不同的參數Wi具有不同的學習率。AdaGrad對頻繁變化的參數以更小的學習率更新,而稀疏的參數以更大的學習率更新。因此對稀疏數據的表現比較好。Adadelta是對AdaGrad的改進,解決了AdaGrad優化過程中學習率α單調減少問題;Adadelta不對過去的梯度平方進行累加,用指數平均的方法計算二階動量,避免了二階動量持續累積,導致訓練提前結束。Adam可以理解為Adadelta和Momentum的結合,對一階二階動量均采用指數平均的方法計算。

MindSpore提供了豐富的API讓用戶導入損失函數和優化器。代碼2.5計算了輸入和真實值之間的softmax交叉熵損失,導入Momentum優化器。

代碼2.5 定義損失函數和優化器

主站蜘蛛池模板: 抚宁县| 平远县| 电白县| 尉氏县| 阿克| 咸宁市| 房产| 广丰县| 定西市| 芮城县| 揭阳市| 玛曲县| 峨边| 海盐县| 德保县| 六盘水市| 铜山县| 汝阳县| 广饶县| 钟山县| 通辽市| 诏安县| 马鞍山市| 泰州市| 建宁县| 威海市| 通许县| 和龙市| 嵊泗县| 安国市| 汾阳市| 兰西县| 灵武市| 云浮市| 阳春市| 营山县| 东兴市| 许昌市| 历史| 手游| 华容县|