1. 程式人生 > >五、改進神經網路的學習方法(1):交叉熵代價函式

五、改進神經網路的學習方法(1):交叉熵代價函式

本部落格主要內容為圖書《神經網路與深度學習》和National Taiwan University (NTU)林軒田老師的《Machine Learning》的學習筆記,因此在全文中對它們多次引用。初出茅廬,學藝不精,有不足之處還望大家不吝賜教。

1. 均方誤差函式的侷限性

  在之前的部落格《三、神經網路的訓練》中介紹過代價函式,在那一節中為了方便理解,採用了常用的均方誤差函式作為代價函式,但實際應用中卻有著很大侷限性。採用均方誤差作為代價函式會使得神經網路在輸出結果錯誤很大的情況下仍僅具有較小的引數更新速度,使得神經網路的訓練變得困難。
  我們從原理上考慮出現這種情況的原因,引數的更新速度較慢體現在神經網路中就是偏導數的值很小。從反向傳播的四個基本等式入手,考慮其中後三個等式,如

(1)

δl=((wl+1)Tδl+1)σ(zl)Cblj=δjlCwjkl=al1kδlj(1)
從中可以明顯看出 σ(z) 對於函式的導數值影響很大,當sigmoid函式的輸出值接近於1或者0的時候,σ(z) 的值會近似於0。這就是網路更新引數的速度變得很慢的根源,也就是均方誤差函式中的侷限性。
  為了加深理解,在此對均方誤差函式的侷限性進行舉例說明,比如說現在輸入資料的期望輸出(實際類別)為1,如果此時神經網路的輸出值也接近於1,雖然此時的學習速度也會很慢,但這是我們可以忍受的,因為已經很靠近真實值了;但是如果輸出值為0,此時對於分類問題來講是一個很大的分類錯誤,但是此時的學習速度仍然是緩慢的,是我們無法忍受的。也就是說侷限性具體表現在對於輸出錯誤較大,而引數學習速度卻很慢這件事情上。

2. 交叉熵代價函式簡介

2.1 什麼是交叉熵函式

  定義交叉熵函式的形式如公式(2)所示

C=1nx[ylna+(1y)ln(1a)](2)
這個函式特點在於當神經網路的輸出值與期望的輸出值較為接近的時候,函式值近似為零,所以常常認為交叉熵是對驚訝程度的測度。假設我們將神經元的輸出值 a 當作根據輸入的 x 預測輸出值是 y=1 的概率,很明顯 1a 是預測輸出值是 y=0 的概率,而交叉熵就是衡量我們知道期望輸出值後的平均驚訝程度。如果輸出我們期望的結果,平均驚訝程度(即不確定性)就會⼩⼀點;反之,平均驚訝程度(即不確定性)就⼤⼀些。
  在剛接觸交叉熵時,很難⼀下⼦記住那些諸如 ya
的表示式對應的位置,有時會寫成如下的錯誤形式
C=1nx[alny+(1a)ln(1y)](3)
這是一種明顯的錯誤形式,主要原因在於當 y 的取值為0或者1的時候表示式是違法的,而 a 的值是無限接近於0和1但不能達到0和1的,因此不是違法的。同樣的,我們可以利用這個特性對交叉熵函式的表示式進行記憶。

2.2 為什麼交叉熵函式可以做代價函式

  交叉熵函式可以做代價函式的原因主要有三點,前兩點是與均方誤差函式的相似性,而最後一點是其獨有的優點。

  • 非負性
    (2)中的求和中的所有獨⽴的項都是負的,因為對數函式的定義域是(0,1),且求和前⾯有⼀個負號,因此整個等式是滿足非負性的。
  • 可解釋性
    如果對於所有的訓練輸⼊ x,神經元實際的輸出接近⽬標值,那麼交叉熵將接近0,與之前的代價函式具有相似的含義。
  • 避免學習率降低
    為了證明在神經網路中交叉熵函式可以避免學習率降低,我們需要計算交叉熵函式關於權重的偏導數。在這裡僅僅使用一個簡單的多輸入神經元為例進行說明,用 a=σ(z) 代替等式,應用鏈式法則對代價函式的權重求偏導數,因為只有一個神經元,所以 wj 就是某一個權重,而不是代表某一層權重的向量,這一點與之前講的有所不同,通過計算得到如下的結果
    Cwj=1nx(yσ(z)(1y)1σ(z))σwj=1nx(yσ(z)(1y)1σ(z))σ(z)xj(4)
    通分化簡後可以得到
    Cwj=1nxσ(z

    相關推薦

    改進神經網路學習方法1交叉代價函式

    本部落格主要內容為圖書《神經網路與深度學習》和National Taiwan University (NTU)林軒田老師的《Machine Learning》的學習筆記,因此在全文中對它們多次引用。初出茅廬,學藝不精,有不足之處還望大家不吝賜教。

    神經網路學習筆記1Image Classification

    學習網站: 資料驅動方法 KNN(例如採用L1曼哈頓距離) 程式碼如下: import numpy as np class NearestNeighbor: def train(self,X,y): self.Xtrain=X self

    改進神經網路學習方法2Softmax輸出層

    本部落格主要內容為圖書《神經網路與深度學習》和National Taiwan University (NTU)林軒田老師的《Machine Learning》的學習筆記,因此在全文中對它們多次引用。初出茅廬,學藝不精,有不足之處還望大家不吝賜教。

    深度學習方法神經網路weight引數怎麼初始化

    歡迎轉載,轉載請註明:本文出自Bin的專欄blog.csdn.net/xbinworld。  技術交流QQ群:433250724,歡迎對演算法、技術感興趣的同學加入。 神經網路,或者深度學習演算法的引數初始化是一個很重要的方面,傳統的初始化方法從高斯分佈中隨機初始化引數

    深度卷積神經網路學習筆記

    1.卷積操作實質:       輸入影象(input volume),在深度方向上由很多slice組成,對於其中一個slice,可以對應很多神經元,神經元的weight表現為卷積核的形式,即一個方形的濾波器(filter)(如3X3),這些神經元各自分別對應影象中的某一個區域性區域(local region

    神經網路學習筆記:感知機收斂定理

       先對與操作進行討論,與(AND)操作需要將(0,0)(0,1)(1,0,)(1,1)進行二分類,結果輸出0或者1,顯然前三個點對應輸出為0的類,最後一個點對應輸出為1的類,這四個點在二維平面上一畫很容易看出,有無數條線可以將其分類。故是線性可分的類,同理可證或,非邏輯操作。

    深度學習R1從零開始建立完全連線的神經網路

    作者:PENG ZHAO 我要感謝Feiwen, Neil和所有其他的技術評論家和讀者,他們為本文提出了寶貴的意見和建議。 背景 深度神經網路(DNN)近年來取得了在影象識別、自然語言處理和自動駕駛領域取得了巨大成就,如圖1所示,從2012至2015

    神經網路學習筆記2

    神經網路學習筆記(2)   本文是神經網路學習筆記的第二部分,緊接著筆者的神經網路學習筆記(1),主要內容為對總結神經網路的常用配置方式,包括如下幾點:(1)資料預處理;(2)權重初始化;(3)正則化與Dropout;(4)損失函式。   1、資料預處理   對於神經網路而言,資料的預處理常見的方法主要包括0

    養成良好的學習習慣-淺談學習方法1

    養成 學習習慣 良好的 淺談學習方法(1) 1.老男孩教育要培訓什麽? 思想技術 知識 2.養成良好的學習習慣和聽課習慣 1)帶一支筆和本,記錄老師講解的內容 2 總結時 ,記錄關鍵的信息,抓重點 3) 聽課習慣:調動所有感官學習 眼睛看、勤動手(

    神經網路簡單理解梯度彌散

    這裡C(w)為最後的代價函式,它權值w的函式。每一層的加權輸入為ZJ=W×aj-1+b。每一層的輸出為aj,aj=φ(ZJ),這裡φ是啟用函式。 反向傳播更新的是每一層神經元連線的權重w,即求C(w)對每一層w 的偏導數。反向傳播首先求C對W4的偏導數,所以公式為: 同理,由於W

    斯坦福CS231n計算機視覺-神經網路訓練細節1

    引用:https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit 本節課沒有從頭講解神經網路,而是講了一些神經網路的細節問題。 兩個需要注意的問題 1、訓練樣本不夠多沒事,使用預訓練好的卷積神經網路,所以不用擔

    深度學習方法最新SqueezeNet 模型詳解,CNN模型引數降低50倍,壓縮461倍!

    歡迎轉載,轉載請註明:本文出自Bin的專欄blog.csdn.net/xbinworld。 技術交流QQ群:433250724,歡迎對演算法、技術感興趣的同學加入。 本文講一下最新由UC Berkeley和Stanford研究人員一起完成的Sque

    【H.264/AVC視訊編解碼技術詳解】十H.264的變換編碼H.264整數變換和量化的實現

    《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼

    線性代數的本質學習筆記1向量線性組合張成SPAN線性變換

      本文主要內容為《線性代數的本質》學習筆記,內容和圖片主要參考 學習視訊 ,感謝3Blue1Brown對於本視訊翻譯的辛苦付出。有的時候跟不上字幕,所有在這裡有些內容參考了此篇部落格。在這裡我主要記錄下自己覺得重要的內容以及一些相關的想法,希望能與大家

    深度學習方法自然語言處理中的Encoder-Decoder模型,基本Sequence to Sequence模型

    歡迎轉載,轉載請註明:本文出自Bin的專欄blog.csdn.net/xbinworld。技術交流QQ群:433250724,歡迎對演算法、技術感興趣的同學加入。 Encoder-Decoder(編碼-解碼)是深度學習中非常常見的一個模型框架,比如無監督演

    Linux網路學習筆記域名解析(DNS)——以 CoreDNS 為例

    >個人筆記,觀點不一定正確. 適合對 Kubernetes 有一定了解的同學。 ## 前言 最近一直在學習 Kubernetes,但是手頭沒有個自有域名,要測試 ingress 就比較麻煩,每次都是手動改 hosts 檔案。。 今天突然想到——K8s 內部就是用 DNS 做的服務發現,我為啥不自己弄一個

    【開源】OSharp框架學習系列1總體設計及系列導航

    正是 html 組織 內聚性 權限 是什麽 enc 3-0 分發 OSharp是什麽?   OSharp是個快速開發框架,但不是一個大而全的包羅萬象的框架,嚴格的說,OSharp中什麽都沒有實現。與其他大而全的框架最大的不同點,就是OSharp只做抽象封裝,不做實現。依賴註

    SpringBoot學習筆記1配置Mybatis

    target oca run class .com gpo connect auto users SpringBoot學習筆記(1):配置Mybatis 參考資料:   1.AndyLizh的博客   2.xiaolyuh123的博客 快速開始 添加Mybatis依賴(

    Redis學習筆記1Redis的說明與安裝

    sets cti ansi c sde pos AR bsd 學習 ash Redis學習筆記(1):Redis說明的安裝 說明 什麽是Redis REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-v

    Node.js學習筆記1Node.js快速開始

    path 文本文 下載 啟動程序 直接 查看 學習筆記 完成後 編輯器 Node.js學習筆記(1):Node.js快速開始 Node.js的安裝 下載 官方網址:https://nodejs.org/en/ 說明:   在Windows上安裝時務必選擇全部組件,包括勾選