iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 28
0
Google Developers Machine Learning

Google Developers Machine Learning 學習系列 第 28

【Day 28】Launching into Machine Learning(Introduction to Optimization-2)

前言

剩最後幾天,希望能夠完整做一個end

主題

Introducing Loss Functions

損失函數,從意思上面解讀就是"用來計算模型預測數值與實際值之間誤差導致損失的一種函數",在不同使用場景下我們會使用不同的函數去計算。

MSE(Mean Squared Error)\RMSE(Root Mean Squared Error)

首先,最常見的應該就是MSE(Mean Squared Error)或是RMSE(Root Mean Squared Error),這種度量方式泛用的原因很多,從函數特性上分析,容易計算且可以微分,且由於平方的緣故,誤差越大的項會放大,進而增加被修正的影響力。此外,從使用場景上分析,無論是迴歸問題或者分類問題大多都適用這項函數。

MAE(Mean Absolute Error)

再來介紹與MSE很相似的MAE(Mean Absolute Error),這邊把原本的平方改成絕對值,因此,就不需要再開平方根平衡量綱(單位)。然而,其中的缺點就是絕對值函數不可微分,不過這部分也是有許多方法能夠解決,例如:分段微分、近似函數取代等等。MAE還有一項優點,就是相對於MSE函數更能夠抵抗離群值的影響。舉例而言,當訓練資料集中有某些極端或錯誤的資料,導致某項誤差會非常大時,選擇MSE訓練的模型會為了改善該項資料導致的誤差修正模型,進而影響降低其它項的準確率,另一方面,MAE的函數性質會盡可能讓大多數的資料都被預測正確,比較不會受到極端值的影響。

Cross Entropy

最後,介紹目前類神經網路中常使用的損失函數Cross Entropy,這項函數主要是用來度量兩種機率分布之間的差異(注意,此函數沒有對稱性)。由於是考慮機率之間的關係,輸入的數值必須在[0,1]的區間,因此,通常使用時機為分類問題。為什麼在類神經網路的分類問題時,往往會使用Cross Entropy作為損失函數而非MSE呢?(早期有許多仍會使用MSE),由於在分類問題中,類神經網路會在最後一層使用softmax,從數學式上面去推導會發現Cross Entropy中的log項能夠與softmax中的exponential互相抵消,用gradient-based的最佳化方法時,這樣能減少因為函數曲線平滑梯度較小導致訓練更新較緩慢的情形。


上一篇
【Day 27】Launching into Machine Learning(Introduction to Optimization-1)
下一篇
【Day 29】Launching into Machine Learning(Introduction to Optimization-2)
系列文
Google Developers Machine Learning 學習30

尚未有邦友留言

立即登入留言