神經網絡中的各種損失函數介紹

2020-12-06 人工智慧遇見磐創

不同的損失函數可用於不同的目標。在這篇文章中,我將帶你通過一些示例介紹一些非常常用的損失函數。這篇文章提到的一些參數細節都屬於tensorflow或者keras的實現細節。

損失函數的簡要介紹

損失函數有助於優化神經網絡的參數。我們的目標是通過優化神經網絡的參數(權重)來最大程度地減少神經網絡的損失。通過神經網絡將目標(實際)值與預測值進行匹配,再經過損失函數就可以計算出損失。然後,我們使用梯度下降法來優化網絡權重,以使損失最小化。這就是我們訓練神經網絡的方式。

均方誤差

當你執行回歸任務時,可以選擇該損失函數。顧名思義,這種損失是通過計算實際(目標)值和預測值之間的平方差的平均值來計算的。

例如,你有一個神經網絡,通過該網絡可以獲取一些與房屋有關的數據並預測其價格。在這種情況下,你可以使用MSE(均方誤差)損失。基本上,在輸出為實數的情況下,應使用此損失函數。

二元交叉熵

當你執行二元分類任務時,可以選擇該損失函數。如果你使用BCE(二元交叉熵)損失函數,則只需一個輸出節點即可將數據分為兩類。輸出值應通過sigmoid激活函數,以便輸出在(0-1)範圍內。

例如,你有一個神經網絡,該網絡獲取與大氣有關的數據並預測是否會下雨。如果輸出大於0.5,則網絡將其分類為會下雨;如果輸出小於0.5,則網絡將其分類為不會下雨。即概率得分值越大,下雨的機會越大。

訓練網絡時,如果標籤是下雨,則輸入網絡的目標值應為1,否則為0。

重要的一點是,如果你使用BCE損失函數,則節點的輸出應介於(0-1)之間。這意味著你必須在最終輸出中使用sigmoid激活函數。因為sigmoid函數可以把任何實數值轉換(0–1)的範圍。(也就是輸出概率值)

如果你不想在最後一層上顯示使用sigmoid激活函數,你可以在損失函數的參數上設置from logits為true,它會在內部調用Sigmoid函數應用到輸出值。

多分類交叉熵

當你執行多類分類任務時,可以選擇該損失函數。如果使用CCE(多分類交叉熵)損失函數,則輸出節點的數量必須與這些類相同。最後一層的輸出應該通過softmax激活函數,以便每個節點輸出介於(0-1)之間的概率值。

例如,你有一個神經網絡,它讀取圖像並將其分類為貓或狗。如果貓節點具有高概率得分,則將圖像分類為貓,否則分類為狗。基本上,如果某個類別節點具有最高的概率得分,圖像都將被分類為該類別。

為了在訓練時提供目標值,你必須對它們進行一次one-hot編碼。如果圖像是貓,則目標向量將為(1,0),如果圖像是狗,則目標向量將為(0,1)。基本上,目標向量的大小將與類的數目相同,並且對應於實際類的索引位置將為1,所有其他的位置都為零。

如果你不想在最後一層上顯示使用softmax激活函數,你可以在損失函數的參數上設置from logits為true,它會在內部調用softmax函數應用到輸出值。與上述情況相同。

稀疏多分類交叉熵

該損失函數幾乎與多分類交叉熵相同,只是有一點小更改。

使用SCCE(稀疏多分類交叉熵)損失函數時,不需要one-hot形式的目標向量。例如如果目標圖像是貓,則只需傳遞0,否則傳遞1。基本上,無論哪個類,你都只需傳遞該類的索引。

這些是最重要的損失函數。訓練神經網絡時,可能會使用這些損失函數之一。

下面的連結是Keras中所有可用損失函數的原始碼。

(https://github.com/keras-team/keras/blob/c658993cf596fbd39cf800873bc457e69cfb0cdb/keras/backend/numpy_backend.py)

相關焦點

  • 乾貨|不同的損失函數會對深度神經網絡帶來什麼樣的影響?
    二次損失函數會在神經元犯了明顯錯誤的情況下使得網絡學習緩慢,而使用交叉熵損失函數則會在明顯犯錯的時候學的更快。 今天,我們主要來談談不同的損失函數會對深度神經網絡帶來什麼樣的影響?
  • 神經網絡中的損失函數正則化和 Dropout 並手寫代碼實現
    在深度神經網絡中最常用的方法是Regularization和dropout。 在本文中,我們將一起理解這兩種方法並在python中實現它們Regularization 正則化正則化通過在損失函數的末尾添加額外的懲罰項來幫助防止模型過度擬合。
  • Pytorch_第九篇_神經網絡中常用的激活函數
    神經網絡中常用的激活函數Introduce理論上神經網絡能夠擬合任意線性函數,其中主要的一個因素是使用了非線性激活函數(因為如果每一層都是線性變換,那有啥用啊,始終能夠擬合的都是線性函數啊)。本文主要介紹神經網絡中各種常用的激活函數。以下均為個人學習筆記,若有錯誤望指出。
  • 港科大博士生侯璐:基於損失函數的神經網絡量化方法|分享總結
    為了解決這個問題, 最近有許多針對於神經網絡壓縮和加速的工作被提出, 例如神經網絡剪枝, 權重矩陣低秩分解,權重量化等。這次分享主要是針對於權重量化這一類方法。近期,在雷鋒網 GAIR 大講堂上,來自香港科技大學的博士生侯璐同學分享了深度學習網絡的權重量化的一些最新進展。以及幾篇ICLR的論文解讀。
  • 神經網絡中的激活函數
    什麼是神經網絡激活函數?激活函數有助於決定我們是否需要激活神經元。如果我們需要發射一個神經元那麼信號的強度是多少。激活函數是神經元通過神經網絡處理和傳遞信息的機制為什麼在神經網絡中需要一個激活函數?在神經網絡中,z是輸入節點與節點權值加上偏差的乘積。
  • 神經網絡為何非激活函數不可?
    本文作者 Vandit Jain 對激活函數的相關知識進行了一個較為全面的總結,重點聚焦於以下幾個方面:一、激活函數是什麼?簡單地說,激活函數就是加入到人工神經網絡中的一個函數,目的在於幫助神經網絡從數據中學習複雜模式。
  • 淺談keras中的metrics作用-神經網絡評價指標
    #科技新星創作營# #機器學習# #深度學習# #神經網絡#背景介紹最近在用keras寫模型的時候,參考別人代碼時,經常能看到各種不同的metrics,因此會產生這麼幾個問題:metrics評價都對哪些指標進行評價?
  • 機器學習中常用的5種回歸損失函數
    在實際應用中,選取損失函數會受到諸多因素的制約,比如是否有異常值、機器學習算法的選擇、梯度下降的時間複雜度、求導的難易程度以及預測值的置信度等等。因此,不存在一種損失函數適用於處理所有類型的數據。這篇文章就講介紹不同種類的損失函數以及它們的作用。損失函數大致可分為兩類:分類問題的損失函數和回歸問題的損失函數。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    這篇文章介紹了不同優化算法之間的主要區別,以及如何選擇最佳的優化方法。 什麼是優化算法? 優化算法的功能,是通過改善訓練方式,來最小化(或最大化)損失函數E(x)。 模型內部有些參數,是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數,就形成了損失函數E(x)。
  • 理清神經網絡中的數學知識
    導讀:首先我想在這裡聲明的是,本篇文章針對的是一些已經具備一定神經網絡知識的人。意在幫助大家梳理神經網絡中涉及的數學知識,以及理解其物理含義。希望大家讀過之後,可以使大家對於神經網絡有更多角度的理解,幫助大家推導以及理解其中的數學公式。
  • 神經網絡中避免過擬合5種方法介紹
    打開APP 神經網絡中避免過擬合5種方法介紹 THU數據派 發表於 2020-02-04 11:30:00 本文介紹了5種在訓練神經網絡中避免過擬合的技術。
  • 人工神經網絡的驅動者:激活函數是什麼?
    從技術上來講,某個節點的激活函數將其在神經網絡中前一個節點的數據輸入,並輸出一個確定值,這個值繼而指導後續節點如何發動來響應特定輸入信號。本文剖析由激活函數組成的神經網絡,以及神經網絡的生物類似物,並簡要介紹幾種常用的激活函數。神經網絡的結構作為一名數據科學愛好者,你一定見過上面的這張圖片或者與之相似的圖片。這張圖片是對雙層神經網絡工作流程的經典描述。
  • 從ReLU到GELU,一文概覽神經網絡的激活函數
    選自mlfromscratch作者:Casper Hansen機器之心編譯參與:熊貓、杜偉激活函數對神經網絡的重要性自不必多言,機器之心也曾發布過一些相關的介紹文章,比如《一文概覽深度學習中的激活函數但在將該值發送給下一層之前,我們要使用一個激活函數對這個輸出進行縮放。本文將介紹不同的激活函數。在閱讀本文之前,你可以閱讀我前一篇介紹神經網絡中前向傳播和反向傳播的文章,其中已經簡單地提及過激活函數,但還未介紹其實際所做的事情。本文的內容將建立在你已了解前一篇文章知識的基礎上。
  • 改善神經網絡方面的各種術語和方法
    全文共2734字,預計學習時長5分鐘深層神經網絡可以解決諸如自然語言處理、機器視覺、語音合成等複雜任務。提高深層神經網絡的性能與理解其工作原理同樣重要。這篇文章將解釋改善神經網絡方面的各種術語和方法。偏差與方差偏差與方差是體現網絡在訓練集和測試集中性能的兩個基本術語。下列兩類問題可以輕鬆直觀地解釋偏差與方差。
  • 深度學習中常見的損失函數
    在深度學習分類任務中,我們經常會使用到損失函數,今天我們就來總結一下深度學習中常見的損失函數。由於0-1損失函數隻取決於正負號,是一個非凸的函數,在求解過程中,存在很多的不足,通常在實際應用中使用其替代函數。
  • 機器學習經典損失函數比較
    我們常常將最小化的函數稱為損失函數,它主要用于衡量模型的預測能力。在尋找最小值的過程中,我們最常用的方法是梯度下降法,這種方法很像從山頂下降到山谷最低點的過程。 雖然損失函數描述了模型的優劣為我們提供了優化的方向,但卻不存在一個放之四海皆準的損失函數。損失函數的選取依賴於參數的數量、局外點、機器學習算法、梯度下降的效率、導數求取的難易和預測的置信度等方面。
  • 訓練神經網絡的五大算法
    問題的抽象 人們把神經網絡的學習過程轉化為求損失函數f的最小值問題。一般來說,損失函數包括誤差項和正則項兩部分。誤差項衡量神經網絡模型在訓練數據集上的擬合程度,而正則項則是控制模型的複雜程度,防止出現過擬合現象。 損失函數的函數值由模型的參數(權重值和偏置值)所決定。我們可以把兩部分參數合併為一個n維的權重向量,記為w。下圖是損失函數f(w)的圖示。
  • 機器學習算法中的7個損失函數的詳細指南
    介紹想像一下-你已經在給定的數據集上訓練了機器學習模型,並準備好將它交付給客戶。但是,你如何確定該模型能夠提供最佳結果?是否有指標或技術可以幫助你快速評估數據集上的模型?當然是有的,簡而言之,機器學習中損失函數可以解決以上問題。
  • 從最優化的角度看待 Softmax 損失函數
    Softmax交叉熵損失函數應該是目前最常用的分類損失函數了,在大部分文章中,Softmax交叉熵損失函數都是從概率角度來解釋的,本周二極市就推送了一篇Softmax相關文章:一文道盡softmax loss及其變種。本文將嘗試從最優化的角度來推導出Softmax交叉熵損失函數,希望能夠啟發出更多的研究思路。
  • 引入魯棒性作為連續參數,這種新的損失函數實現了自適應、隨時變換
    最為常見的損失函數包括平方損失、指數損失、log 對數損失等損失函數。這裡回顧了一種新的損失函數,通過引入魯棒性作為連續參數,該損失函數可以使圍繞最小化損失的算法得以推廣,其中損失的魯棒性在訓練過程中自動自我適應,從而提高了基於學習任務的性能。