0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

L2損失函數(shù)的效果是否真的那么好呢?其他損失函數(shù)表現(xiàn)如何?

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-06-29 11:59 ? 次閱讀

盡管早在上世紀80年代末,神經(jīng)網(wǎng)絡(luò)就在手寫數(shù)字識別上表現(xiàn)出色。直到近些年來,隨著深度學(xué)習(xí)的興起,神經(jīng)網(wǎng)絡(luò)才在計算機視覺領(lǐng)域呈現(xiàn)指數(shù)級的增長。現(xiàn)在,神經(jīng)網(wǎng)絡(luò)幾乎在所有計算機視覺和圖像處理的任務(wù)中都有應(yīng)用。

相比各種層出不窮的用于計算機視覺和圖像處理的新網(wǎng)絡(luò)架構(gòu),這一領(lǐng)域神經(jīng)網(wǎng)絡(luò)的損失函數(shù)相對而言并不那么豐富多彩。大多數(shù)模型仍然使用L2損失函數(shù)(均方誤差)。然而,L2損失函數(shù)的效果是否真的那么好呢?其他損失函數(shù)表現(xiàn)如何?下面我們將簡單介紹常用的圖像處理損失函數(shù),并比較其在典型圖像處理任務(wù)上的表現(xiàn)。

L1、L2損失函數(shù)

最容易想到的損失函數(shù)的定義,就是逐像素比較差異。為了避免正值和負值相互抵消,我們可以對像素之差取絕對值或平方。

取絕對值就得到了L1損失函數(shù):

取平方則得到了L2損失函數(shù):

和L1相比,L2因為取平方的關(guān)系,會放大較大誤差和較小誤差之間的差距,換句話說,L2對較大誤差的懲罰力度更大,而對較小誤差更為容忍。

除此之外,L1和L2基本上差不多。

實際上,Nvidia的研究人員Hang Zhao等嘗試過交替使用L1和L2損失函數(shù)訓(xùn)練網(wǎng)絡(luò)(arXiv:1511.08861v3),發(fā)現(xiàn)隨著訓(xùn)練的進行,在測試集上的L2損失都下降了。

橙:前半段L1、后半段L2;藍:前半段L2、后半段L1

順便提下,從上圖可以看到,前半段L2損失陷入了局部極小值。

不管是L1損失函數(shù),還是L2損失函數(shù),都有兩大缺陷:

假定噪聲的影響和圖像的局部特性是獨立的。然而,人類的視覺系統(tǒng)對噪聲的感知受局部照度、對比、結(jié)構(gòu)的影響。

假定噪聲接近高斯白噪聲,然而這一假定并不總是成立。

SSIM、MS-SSIM損失函數(shù)

為了將人類視覺感知納入考量,可以使用基于SSIM或MS-SSIM的損失函數(shù)。SSIM、MS-SSIM是綜合了人類主觀感知的指標。

SSIM(structural similarity,結(jié)構(gòu)相似性)的直覺主要是:人眼對結(jié)構(gòu)(structure)信息很敏感,對高亮度區(qū)域(luminance)和“紋理”比較復(fù)雜(contrast)的區(qū)域的失真不敏感。MS-SSIM(Multi-Scale SSIM,多尺度SSIM)則額外考慮了分辨率這一主觀因素(例如,高分辨率的視網(wǎng)膜顯示器上顯而易見的失真,在低分辨率的手機上可能難以察覺)。

相應(yīng)地,基于SSIM的損失函數(shù)的定義為:

不過,由于損失函數(shù)通常配合卷積網(wǎng)絡(luò)使用,這就意味著計算損失函數(shù)的時候其實只用計算中央像素的損失,即:

通過上述中央像素損失函數(shù)訓(xùn)練所得的卷積核,仍將應(yīng)用于圖像中的每個像素。

同理,基于MS-SSIM的損失函數(shù)為:

另外,我們知道,損失函數(shù)除了要準確地表達模型的目標之外,還需要是可微的,這樣才能通過基于梯度下降的方法在反向傳播階段訓(xùn)練。顯然,L1和L2是可微的。

事實上,基于SSIM和MS-SSIM的損失函數(shù)也同樣是可微的。這里省略具體的推導(dǎo)過程,直接給出結(jié)論。

對基于SSIM的損失函數(shù)而言:

其中,l和cs分別為SSIM的第一項和第二項,其梯度為:

其中,Gσ_G為像素的高斯系數(shù)。這里我們看到,盡管之前的損失函數(shù)只考慮了中央像素,但因為在計算梯度的時候,實際上需要像素的高斯系數(shù),因此誤差仍然能夠反向傳播至所有像素。

相應(yīng)地,基于MS-SSIM的損失函數(shù)的梯度計算公式為:

不過,由于基于MS-SSIM的損失函數(shù)需要在每個尺度上都重復(fù)算一遍梯度,會大大拖慢訓(xùn)練速度(每一次迭代都相當(dāng)于M次迭代),因此實踐中往往轉(zhuǎn)而采用某個逼近方法計算。例如,使用M組不同的Gσ_G值作為替代,每組值為前一組的1/2.

評測

Hang Zhao等在JPEG去噪、去馬賽克,超分辨率重建,JPEG去區(qū)塊效應(yīng)等場景對比了不同損失函數(shù)的效果。

去噪、去馬賽克

上圖中的BM3D代表CFA-BM3D,為當(dāng)前最先進的降噪算法。我們看到,在天空這樣的平坦區(qū)域(d),L2損失函數(shù)出現(xiàn)了污跡失真(splotchy artifact)。

超分辨率

仔細觀察下圖蝴蝶翅膀的黑帶處,可以看到L2出現(xiàn)了光柵失真(grating artifacts)。

同樣,下圖女孩的面部,也可以觀察到L2的光柵失真。

去區(qū)塊

仔細觀察建筑物邊緣的區(qū)塊,可以看到L1比L2去區(qū)塊效果要好。

天空區(qū)域的區(qū)塊效應(yīng)更明顯,相應(yīng)地,L1在去區(qū)塊方面表現(xiàn)優(yōu)于L2這點就更明顯了。

更多去區(qū)塊的例子印證了我們上面的觀察。

混合損失函數(shù)

你應(yīng)該已經(jīng)注意到了,上面的對比圖中有一個“Mix”,而且事實上它是看起來效果最好的那個。這個“Mix”其實是Hang Zhao等提出的混合了MS-SSIM和L1得到的損失函數(shù):

這個混合損失函數(shù)的定義很簡單,基本上就是MS-SSIM和L1的加權(quán)和,只不過因為MS-SSIM反向傳播誤差時需要用到G高斯分布參數(shù),因此在L1部分也分素相乘相應(yīng)的分布參數(shù)而已。

Hang Zhao等經(jīng)過一些試驗,將α定為0.84,使兩部分損失的貢獻大致相等(試驗發(fā)現(xiàn),α的微小變動對結(jié)果的影響不顯著)。

以上我們已經(jīng)從視覺上演示了MS-SSIM+L1混合損失函數(shù)效果最佳。定量測試也表明,在多種圖像處理任務(wù)上,基于多種圖像質(zhì)量指標,總體而言,混合損失函數(shù)的表現(xiàn)最好。

網(wǎng)絡(luò)架構(gòu)

上述試驗所用的網(wǎng)絡(luò)架構(gòu)為全卷積神經(jīng)網(wǎng)絡(luò)(CNN):

輸入為31x31x3.

第一個卷積層為64x9x9x3.

第二個卷積層為64x5x5x64.

輸出卷積層為3x5x5x64.

內(nèi)卷積層的激活函數(shù)為PReLU。

數(shù)據(jù)集

訓(xùn)練集取自MIT-Adobe FiveK數(shù)據(jù)集,共700張RGB圖像,尺寸調(diào)整為999x666. 測試集取自同一數(shù)據(jù)集,共40張圖像。

結(jié)語

總結(jié)一下以上評測:

在很多場景下,L2損失函數(shù)的表現(xiàn)并不好。有時可以嘗試下同樣簡單的L1損失函數(shù),說不定能取得更好的效果。

由于未考慮到主觀感知,很多場景下,基于SSIM或MS-SSIM的損失函數(shù)能取得比L1、L2更好的效果。

結(jié)合MS-SSIM和L1通常會有奇效。

總之,雖然L2損失函數(shù)是用于圖像處理的神經(jīng)網(wǎng)絡(luò)事實上的標準,但也不可迷信,不假思索地選用L2可能會錯過更優(yōu)的選擇。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4776

    瀏覽量

    100948
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4341

    瀏覽量

    62800
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    353

    瀏覽量

    22265

原文標題:CNN圖像處理常用損失函數(shù)對比評測

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    對象檢測邊界框損失函數(shù)–從IOU到ProbIOU介紹

    目標檢測損失函數(shù)的選擇在目標檢測問題建模中至關(guān)重要。通常,目標檢測需要兩個損失函數(shù),一個用于對象分類,另一個用于邊界框回歸(BBR)。
    的頭像 發(fā)表于 01-24 10:50 ?2980次閱讀
    對象檢測邊界框<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>–從IOU到ProbIOU介紹

    TensorFlow損失函數(shù)(定義和使用)詳解

    的情況下,損失函數(shù)定義為交叉熵。輸出 Y 的維數(shù)等于訓(xùn)練數(shù)據(jù)集中類別的數(shù)量,其中 P 為類別數(shù)量:如果想把 L1 正則化加到損失上,那么代碼
    發(fā)表于 07-28 14:38

    keras常用的損失函數(shù)Losses與評價函數(shù)Metrics介紹

    當(dāng)使用MSE。另一方面,如果我們認為異常值僅表示損壞數(shù)據(jù)而已,那么我們應(yīng)當(dāng)選擇MAE作為損失函數(shù)。 3 mean_absolute_percentage_error (MAPE) 平均絕對值百分比誤差
    發(fā)表于 08-18 06:31

    神經(jīng)網(wǎng)絡(luò)中的損失函數(shù)層和Optimizers圖文解讀

    對于許多機器學(xué)習(xí)算法來說,最終要解決的問題往往是最小化一個函數(shù),我們通常稱這個函數(shù)損失函數(shù)。在神經(jīng)網(wǎng)絡(luò)里面同樣如此,損失
    的頭像 發(fā)表于 11-30 16:09 ?8288次閱讀

    機器學(xué)習(xí)經(jīng)典損失函數(shù)比較

    所有的機器學(xué)習(xí)算法都或多或少的依賴于對目標函數(shù)最大化或者最小化的過程。我們常常將最小化的函數(shù)稱為損失函數(shù),它主要用于衡量模型的預(yù)測能力。
    的頭像 發(fā)表于 06-13 17:53 ?8588次閱讀
    機器學(xué)習(xí)經(jīng)典<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>比較

    機器學(xué)習(xí)實用指南:訓(xùn)練和損失函數(shù)

    這個損失函數(shù)是合理的,因為當(dāng) $t$ 接近 0 時,$-log(t)$ 變得非常大,所以如果模型估計一個正例概率接近于 0,那么損失函數(shù)將會
    的頭像 發(fā)表于 06-29 15:02 ?8579次閱讀
    機器學(xué)習(xí)實用指南:訓(xùn)練和<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>

    三種常見的損失函數(shù)和兩種常用的激活函數(shù)介紹和可視化

    從上面闡釋的步驟可以看出,神經(jīng)網(wǎng)絡(luò)中的權(quán)重由損失函數(shù)的導(dǎo)數(shù)而不是損失函數(shù)本身來進行更新或反向傳播。因此,損失
    的頭像 發(fā)表于 05-05 11:42 ?7221次閱讀
    三種常見的<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>和兩種常用的激活<b class='flag-5'>函數(shù)</b>介紹和可視化

    深度學(xué)習(xí)的19種損失函數(shù)你了解嗎?帶你詳細了解

    損失函數(shù)通過torch.nn包實現(xiàn)基本用法 criterion = LossCriterion() #構(gòu)造函數(shù)有自己的參數(shù)loss = criterion(x, y) #調(diào)用標準時也有參數(shù)19種
    的頭像 發(fā)表于 09-14 10:34 ?1.1w次閱讀

    計算機視覺的損失函數(shù)是什么?

    損失函數(shù)在模型的性能中起著關(guān)鍵作用。選擇正確的損失函數(shù)可以幫助你的模型學(xué)習(xí)如何將注意力集中在數(shù)據(jù)中的正確特征集合上,從而獲得最優(yōu)和更快的收斂。
    的頭像 發(fā)表于 03-13 16:30 ?3585次閱讀
    計算機視覺的<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>是什么?

    損失函數(shù)的簡要介紹

    例如,你有一個神經(jīng)網(wǎng)絡(luò),通過該網(wǎng)絡(luò)可以獲取一些與房屋有關(guān)的數(shù)據(jù)并預(yù)測其價格。在這種情況下,你可以使用MSE(均方誤差)損失?;旧希谳敵鰹閷崝?shù)的情況下,應(yīng)使用此損失函數(shù)
    的頭像 發(fā)表于 04-17 10:01 ?3646次閱讀

    機器學(xué)習(xí)和深度學(xué)習(xí)中分類與回歸常用的幾種損失函數(shù)

    本文將介紹機器學(xué)習(xí)、深度學(xué)習(xí)中分類與回歸常用的幾種損失函數(shù),包括均方差損失 Mean Squared Loss、平均絕對誤差損失 Mean Absolute Error Loss、Hu
    的頭像 發(fā)表于 10-09 16:36 ?6271次閱讀
    機器學(xué)習(xí)和深度學(xué)習(xí)中分類與回歸常用的幾種<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>

    表示學(xué)習(xí)中7大損失函數(shù)的發(fā)展歷程及設(shè)計思路

    表示學(xué)習(xí)的目的是將原始數(shù)據(jù)轉(zhuǎn)換成更好的表達,以提升下游任務(wù)的效果。在表示學(xué)習(xí)中,損失函數(shù)的設(shè)計一直是被研究的熱點。損失指導(dǎo)著整個表示學(xué)習(xí)的過程,直接決定了表示學(xué)習(xí)的
    的頭像 發(fā)表于 07-08 14:23 ?2234次閱讀

    訓(xùn)練深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的常用5個損失函數(shù)

    被稱為損失函數(shù)。損失函數(shù)的選擇與神經(jīng)網(wǎng)絡(luò)模型從示例中學(xué)習(xí)的特定預(yù)測建模問題(例如分類或回歸)有關(guān)。在本文中我們將介紹常用的一些損失
    的頭像 發(fā)表于 10-19 11:17 ?870次閱讀
    訓(xùn)練深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的常用5個<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>

    語義分割25種損失函數(shù)綜述和展望

    本綜述提供了對25種用于圖像分割的損失函數(shù)的全面且統(tǒng)一的回顧。我們提供了一種新穎的分類法,并詳細審查了這些損失函數(shù)如何在圖像分割中被定制和利用,強調(diào)了它們的重要特征和應(yīng)用,并進行了系統(tǒng)
    的頭像 發(fā)表于 10-22 08:04 ?720次閱讀
    語義分割25種<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>綜述和展望

    RNN的損失函數(shù)與優(yōu)化算法解析

    RNN的損失函數(shù) RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))在處理序列數(shù)據(jù)的過程中,損失函數(shù)(Loss Function)扮演著重要的角色,它可以測量模型在訓(xùn)練中的表現(xiàn)
    的頭像 發(fā)表于 11-15 10:16 ?530次閱讀