花書十一章筆記(損失函式,優化演算法,啟用函式)

2021-10-24 07:53:25 字數 4667 閱讀 2948

最近實驗室在一起讀花書,每個人講一兩章,剛好自己讀了十一章所以結合以往的知識進行一下記錄;十一章主要是介紹的應用的方**,goodfellow介紹的範圍還是挺廣的,從確定損失函式、效能度量,到搭建end-to-end的系統,其中包括了模型、優化方法、正則化等等

誤差就是實際**數和樣本真實標籤之間的差異,訓練集上稱為訓練誤差,新樣本上為泛化誤差,同時度量但是肯定更加關心泛化誤差。

而誤差的度量用損失函式,一般來說,損失函式越小,模型的魯棒性就越好。

損失根據不同型別的任務有很多種,下面我們來介紹其中常用的。

(1)分類任務

0-1 loss

yi=yi_hat時,損失函式值為1,否則為0,這個損失函式很明顯的缺點就是無法求導,在依賴於反向傳播的深度學習模型中無法使用,實際中也基本上不會用,更多是啟發新損失函式的產生

熵與交叉熵

熵是度量資訊量的,熵越小,表示資訊量越少,交叉熵也是分類任務中最常用的。

定義:給定兩個概率分布,p(x)和q(x),p為已知分布,q為未知分布,則其交叉熵函式是兩個分布的互資訊,可以反應相關程度。

在模型中,y為樣本標籤分布,f為需要學習的模型,則兩者的交叉熵函式為:

l(f,y)=-∑∑yij*log(f(xij))

其中,f(xij)表示的是基於第i個樣本**的標籤為j類的概率,yij=0 or 1,表示第i個樣本的真實標籤是否為j類

softmax及其變種

當交叉熵中的f(xij)表現為softmax概率的形式時,就是softmax損失函式

其中,softmax概率=exp/∑exp

softmax顧名思義就是soft版本下的max,如果是hard版本下的max就是相當於直接求最大值,同樣也會存在不可導,只有在最大值那個點上才會有梯度,所以softmax更加合理

kl散度

散度的概念其實和熵有相似,都可以反應兩個分布的相似程度

dkl(p|q)=∑pi*log(pi/qi)≥0,當pi=qi時,dkl=0

kl散度的定義將對數拆開寫成相減的形式其實就是p的熵減去p、q的交叉熵

hinge loss

主要用於svm中,如果分類正確,則loss=0,如果錯誤,則為1-f(x),所以它的形式是乙個分段不平滑的曲線,一般用來解決svm中的間距最大化問題

(p.s. 間距最大化:svm用來尋找資料集的最佳分割超平面,目標就是找到資料集中靠近這個決策邊界(分割平面)的點與決策邊界的距離最大時,就是最好的決策邊界)

exponential loss和logistic loss

exponential loss:l(f(x),y)=exp,這個損失函式主要用於adaboost,有較大的梯度;

logistic loss:l(f(x),y)=ln(1+exp)/ln2

小結以上就是分類任務中比較常用的損失函式,可以看到其形式很多都是對數損失,這是和熵的定義以及極大似然估計決定的

(2)回歸任務

l1、l2

l1就是絕對值求和,l2就是平方和,l1這個損失函式是不平滑,而l2又容易產生梯度**,因此有很多改進,比如目標檢測中fast-rcnn用的平滑的l1,當x的絕對值小於1時,l=0.5x^2;否則的話,l=x的絕對值-0.5;

它表達的含義就是x比較小的時候,就是l2,保持平滑;x比較大的時候,就是l1,限制梯度**

再比如基於huber函式的改進

perceptual loss

感知損失,由於自己沒有用過所以就不具體寫了

(3)其他

近年來,產生了很多綜合許多任務的模型,簡單介紹兩個最火的

gan生成對抗網路,利用生成模型和判別模型的博弈進行迭代優化,這種博弈的模型思想在其他領域也有很多應用,比如課程學習等等

gan的損失函式的研究是乙個很大的領域,現在已經有十種損失函式了,發表的**有上千篇,最普通的gan的損失函式形式為:

min max v(d,g)=ex~pdata(x)【logd(x)】+

ex~pz(z)【1-logd(g(z))】

bert

bert是nlp近年來最出色的成就,它的損失函式包括兩個部分

第一部分是mask-lm的單詞級別的分類任務,我們知道bert在每一段語句內都會隨機mask一部分單詞,用來學習和訓練單詞級別的資訊,最終評估這些資訊的就是這個損失函式

第二部分就是句子級別的分類任務,也就是bert裡面的sentence推測任務,它們的損失函式形式還是logp的形式

效能度量也就是評估模型訓練好壞的指標,都是基於混淆矩陣的,對於二分類問題,其混淆矩陣為:

(1)error rate和acc

acc=(tp+tn)/(p+n)

實際應用中這個指標用的不多,因為大部分樣本都會存在類別不平衡的情況,或者說我們更關心的是某一類錯誤(第ⅰ類錯誤和第ⅱ類錯誤)

(2)precision和recall

精確率和召回率

precision=tp/(tp+fp),表示**為正例的樣本中實際為正例的比例

recall=tp/(tp+fn),表示有多少個真實為正例的樣本被**為正例

這兩個指標從定義上來看是存在互相矛盾的,所以實際應用中客戶端的需求往往也是在保證其中乙個指標達到多少的情況下,盡量提高另外乙個

(3)fβ-score

綜合precision和recall兩個指標來看

β=1時,為f1-score,給予兩個指標同樣的權重

β>1時,recall更重要

β<1時,precision更重要

(4)靈敏度(sensitivity)和特異性(specificity)

靈敏度=recall,特異性=tn/(fp+tn),表示真實為負例的樣本被**為負例的比例,這兩個指標不會受到樣本類別不平衡的影響,因為它們的分母就是p和n

(5)pr曲線和roc曲線,以及auc

tpr=tp/(tp+fn)=recall=靈敏度

fpr=fp/(tn+fp)=1-特異性

pr曲線:以precision和recall為y、x軸畫出每個樣本點基於**為正的概率的閾值來畫圖,曲線下的面積是auc,越大越好,也即曲線越接近右上角越好(說明precision和recall都大)

roc曲線:以tpr和fpr為y、x軸畫圖,面積為auc,圖形越接近左上角越好

(1)sigmoid

函式形式為f(x)=1/(1+exp),取值範圍為0~1,可以解釋為乙個神經元的啟用率;

缺點:輸入的x的絕對值較大時,梯度變為0,使得引數不能再更新

在神經網路中,如果是二分類問題,那麼輸出層一般是sigmoid,中間其他層可以用relu

(2)tanh

tanh(x)=sinh(x)/cosh(x)=(exp-exp)/(exp+exp)

取值範圍為-1~1,仍然會sigmoid函式的問題

(3)relu

在cnn中常用,負數直接歸0,正數保持原樣輸出

缺點:負數區域為0的現象叫做dead relu,所以如果用relu,設定學習率的時候就要小心,不能讓網路**現很多dead神經元

relu的幾個改進

leakyrelu

f(x)=max(0.01x,x),在負數區域不再dead

prelu

f(x)=max(ax,x),a是可以學習的引數

eluf(x)=x,x>0;α(exp-1),x≤0

(4)maxout:對relu家族的統一

本質上就是新增了一層(啟用函式層),來學習啟用函式本身

maxout層中每個神經元的計算公式為:

hi(x)=max j∈[1,k] zij,其中,zij=x』wij+bij,m和k為需要學習的引數,mk為bij的大小

(1)bgd(批量梯度下降)

利用所有樣本,θ=θ-η·▽j(θ)

(2)sgd(隨機梯度下降)

單個樣本,隨機取樣

θ=θ-η·▽j(θ;x(i),y(i))

(3)mbgd(小批量梯度下降)

mini-batch個樣本

θ=θ-η·▽j(θ;x(i,i+n),y(i,i+n))

超引數為batch-size和學習率η

vt=γv(t-1)+ηt*gt

χt=χ(t-1)-vt

γ為衰減因子

vt=γv(t-1)+η·▽j(θ-γv(t-1))

xθ=θ-vt

st=s(t-1)+gt⊙gt

χt=χ(t-1)-η/sqrt(st+ε)⊙gt

st=γs(t-1)+(1-γ)gt⊙gt

χt=χ(t-1)-η/sqrt(st+ε)⊙gt

st=γs(t-1)+(1-γ)gt⊙gt

χt=χ(t-1)-(γ△x(t-1))/sqrt(st+ε)⊙gt

rmsprop+momentum

優化演算法的研究是乙個比較龐大的領域,近期還有比如adamw,清華的一篇文章也有乙個新的優化演算法;最近自己在做的也有將元學習思想融入到優化演算法中

最後想補充一下自己最近讀文章看到的兩種新的優化計術,這兩種計術可以直接嵌入到以上的優化演算法中。

第一種是基於元學習思想的pumpout演算法,用來處理資料集中含有雜訊標籤的問題,對乾淨標籤樣本做梯度下降,對雜訊標籤樣本做梯度上公升。元學習不是一種演算法,只是一類思想,這篇文章的思想就是想主動來對抗雜訊標籤,從而阻止雜訊標籤對神經網路訓練過程中引數收斂的影響。

第二種是阿里達摩院剛剛發布的一篇文章,對梯度向量直接中心化來處理,同樣可以大幅提公升建模效果。

損失函式及其優化演算法

損失函式 loss function 也叫代價函式 cost function 是神經網路優化的目標函式,神經網路訓練或者優化的過程就是最小化損失函式的過程 損失函式值小了,對應 的結果和真實結果的值就越接近 交叉熵 cross entropy 代價函式 於資訊理論中熵的概念。是目前神經網路分類問題...

花書讀書筆記(七) 深度模型中的優化

全部筆記的彙總貼 深度學習 花書 讀書筆記彙總貼 在大多數機器學習問題中,我們關注某些效能度量p pp,其定義於測試集上並且可能是不可解的。因此,我們只是間接地優化p pp。我們希望通過降低代價函式j j j 來提高p pp。這一點與純優化不同,純優化最小化目標j jj本身。優化通常是乙個極其困難的...

機器學習之優化演算法(一)之損失函式

分類演算法的方式有多種多樣,並沒有乙個統一的標準,這裡只是其中一種形式。上圖參考自這裡。損失函式被稱為 cost function,object function,loss function等,這裡不區分幾種用法的微小區別。機器學習離不開目標函式,我們分析一下目標函式 其中,前一項是經驗風險,後一項...