L1 Loss和L2 Loss比較

吳政龍
3 min readMar 15, 2019

--

這幾天在弄LeNet的投影片,在分析Output和Loss function的時候發現彼此的一些特性,所以就寫個比較文.

L1 Loss以及L2 Loss和其他種類的Loss functions不同,是以標準模板作為比較標準,如下圖.而cross entropy loss類型則是以class的label本身當作計算依據.

而像是LeNet之類的output就是和模板一樣大小的陣列,output各個元素和模板的相對應元素運算,最後計算出和各個模板的Loss.取Loss最小的當作結果,如下圖

介紹完此類Loss function的運作原理後,就是講解L1和L2之間的差異了.

上圖是L1和L2的介紹,L1就是輸出和模板之間相對應的元素相減後的總和.而L2則是輸出和模板之間相對應的元素相減後的平方和.

在數學特性上,L1算出來的loss 可能會是負的,所以有可能其實誤差很大,但因為是負的,所以被選來當作目標.(在輸出加個絕對值可以讓這個問題變小,但是無法顯現元素之間的差異過大問題,比如說某部分元素是正的,某部分是負的,但加總後接近0)

而在反向傳遞上,不管L1的Loss算出來多大多小,誤差回傳總是一個定值,這導致系統可能在接近最優化的時候,誤差回傳讓整個系統平衡跑掉.但這種設定也有個好處,就是一個穩定的誤差回傳,可以確保整個系統的變化程度在一定的範圍內,抓bug比較簡單,如果系統不平衡,那大概就是權重的問題了.

而L2的方式則可以確保輸出一定是正的,也可以保證選到的一定是Loss最小的.

在反向傳遞上,L2的誤差回傳和輸出及模板之間相對應的元素之差成正比,此時回傳的誤差有正的,負的或是零,這種時候如果某個元素輸出和模板的差很大,基本上那一個部分的誤差回傳就很容易炸掉.大概是這樣.

--

--

No responses yet