神經網路的損失函數為什麼是非凸的?
從那張大家都看過的機器學習教程上的那個圖.有了對非凸函數的概念,但是為什麼神經網路的損失函數是非凸函數呢?有什麼證明方法嗎?
Ian Goodfellow曾經給在quora回答過,以下是原文:
There are various ways to test for convexity.
One is to just plot a cross-section of the function and look at it. If it has a non-convex shape, you don』t need to write a proof; you have disproven convexity by counter-example.
If you want to do this with algebra, one way is just to take the second derivatives of a function. If the second derivative of a function in 1-D space is ever negative, the function isn』t convex.
For neural nets, you have millions of parameters, so you need a test that works in high-dimensional space. In high-dimensional space, it turns out we can take the second derivative along one specific direction in space. For a unit vector d giving the direction and a Hessian matrix H of second derivatives, this is given by
For most neural nets and most loss functions, it』s very easy to find a point in parameter space and a direction where is negative.
https://www.quora.com/How-can-you-prove-that-the-loss-functions-in-Deep-Neural-nets-are-non-convex
來來來,從最簡單的只有兩個權重的網路結構開始
一個feature,一個hidden unit,一個output,層間權重分別是u和v,輸入是1,不要激活函數(或者說取phi(x) = x),先不考慮loss
那output(u, v) = uv,它的二階矩陣恆為(0, 1; 1, 0),有倆特徵值-1和1,不正定。所以這個output函數是非凸的,圖像是馬鞍面
加個非負非常數的loss函數f吧,就是loss = f(output),
- 如果f非凸,那loss非凸,因為uv遍歷實數
- 如果f凸,f""(x)大於或者等於0,不恆等於0,f"(x)不恆等於0,考慮軌跡v=u^(a-1),x=uv,可以證明xf"(x)不恆等於0,否則f"(x)恆等於0,然後
- 如果存在某點xf"(x)&>0, f""(x)=0, 取0&0,取max(0, 1/M-1)&
- 如果存在某點xf"(x)&<0, f""(x)=0, 取a&>1。如果f""(x)&>0,令M=f"(x)/(xf""(x)),如果M&>-1,取a&>1,如果M&<-1,取1&
對更複雜的網路結構,權重的維數往上走,那固定所有其它的權重,只留兩個不在同一層的u,v,然後仿上分析,所有的loss關於這兩個權重都是非凸的,那對於所有的整體的權重就還是非凸的了
=====
補充一下u,v中間那個unit上有非常數的激活函數phi的情況,這時候output = phi(u)v
- 如果phi是線性的,那仿phi(x)=x可以說明output非凸
- 如果phi非凸,那output在v=1上是非凸的,所以output非凸
- 如果phi非線性且凸,那output在v=1上凸,在v=-1上凹,所以output非凸
=====
多謝 @年邁的老法師 私信告知,f凸單調增的時候,在u=-v上凸性不定,不一定凹,那之前看著痛快的證明就沒用了。。。已經修改,以及對之前回答的誤導說抱歉=_=
關於這個問題已經有不止一種證明了,假設和結論的強弱也各不相同,下面給出我自己的一個證明.
主要思路是,任意的凸函數的最優點是唯一的. 假設一個最優點A後,如果總能找到另一點B,使AB點的損失值相等, 輔以證明AB不是同一點, 那麼就能說明原函數是非凸的了. 下面貼證明
這個證明我自己也沒回頭看一遍, 各路大神發現問題私信我就行了, 請不要在評論區打臉!!!
別的不說,光是權重空間的對稱性就能說明這個非凸問題了。
補充一下,本來只是想給一個形象點的表述,所以只是考慮了一般情況。排除最小值點處所有變數都相等的情況,感謝評論區~先說明一下,可能國內教材管Convex Function叫凹函數?
這裡都說英文吧,我是已經搞不清楚了。
這裡都用一個二維來說明:
convex function:曲線上任意兩點連線上的點所對應的函數值不大於該兩點的連線上的值。
concave function:曲線上任意兩點的連線上的點所對應的函數值不小於該兩點的連線上的值。
如果你觀察這兩個圖,就會發現convex函數是有全局最小值的。concave函數是有全局最大值的。
想想看你訓練神經網路是幹嘛呢?求一個最小的損失函數的值啊。所以這是個優化問題。
如果你的損失函數是個convex函數,那就有全局最優值了,我要是能設計出來一個convex的損失函數,那麼就不存在局部最小值的問題了。然而事實上是我們是有局部最小值的,因此損失函數肯定是非convex函數。
另一個思路,只要這個函數有一部分不滿足convex,那麼它就不是convex的,舉一反例即可。
為什麼會邀請我一個藝術生回答這種高智商的問題,我很費解啊要不就是手滑,要不就是他的智商跟我一樣捉急吧
大概可以這樣想,神經網路是universal function approximator,所以它可以擬合一個非凸函數。於是我們可以找到一個對輸入是非凸的函數,然後把此刻的輸入和對應的第一層的weight調換一下,那麼這個神經網路就對第一層的weight非凸了,於是這個神經網路對所有的weight是非凸的。
可以看下上鏡圖,上鏡圖凸集才能保證函數是凸函數。
更重要的,像題主所提的函數,擬凸性質有時都難以保證。
神經網路損失函數非凸的原因是因為其可能存在多個局部最小值. 具體的來自於模型的可辨識問題,原因有很多,比如權重空間對稱性、線性整流網路或maxout網路中對權重適當縮放從而保持模型等價等等
「數學邏輯想不通時反證法很重要」。一個優化問題的目標函數是凸的才叫凸優化。所以你只需要用convexity要證明一個神經網路的目標函數不是凸函數即可。
個人理解,損失函數是非凸的主要原因是網路中存在很多非線性激活函數。
***被點名了******
個人不研究神經網路, convex or nonconvex 取決於函數的性質。
樓主可否給出一個表達形式呢?
推薦閱讀:
※如何評價邢波(Eric Xing)老師實驗室開發的深度學習平台 Poseidon?
※wasserstein 距離的問題?
※圖森科技的演算法實習生和地平線的人工智慧演算法實習生如何選擇?
※如何評價文章「谷歌太可怕?專家:中國智能晶元引領世界」?
※如何評價九言科技推出的DL inference SDK In-Prestissimo(絕影)?
TAG:機器學習 | 凸優化 | 神經網路 | 深度學習DeepLearning | 非凸優化 |