深度學習乃至機器學習和凸論有什麼本質聯絡?

時間 2021-05-05 19:56:40

1樓:Gavin Hu

個人見解:

因為 large scale deep learning 是目前的研究熱點,也是 deep learning 展現威力的領域。這裡 large scale 體現在 model size 和資料集大小兩個方面。在工業界最受關注的工作,包括 Google 的 distbelief,GoogLeNet 和 Microsoft Project Adam 等都涉及到非常大規模的 distributed model training。

而為了實現 large scale deep learning,快速的(分布式) training 演算法就變得尤為重要。training 的過程本質上講就是做 optimization,所以大家都喜歡在最優化領域裡尋找答案。convex optimization 由於有 convexity 這麼強的條件,因此往往更容易設計出快速演算法(例如:

ADMM)。

但是,deep learning 的 objective 實際並不滿足 convexity,所以把 convex optimization 拍到 deep learning 上,等於是用凸優化演算法求解非凸問題。如果你的目標是做 optimization,這樣做可能會得到很差的結果。然而對於 machine learning,演算法是凸或非凸好像真的不那麼敏感,因為 objective 幾乎總是 noisy 的,而各種各樣的 regularization 和 stochasticity 幾乎總是能避開很差的 local optima。

說到這裡不得不提一下 Microsoft Research 有位撼地神牛 Leon Bottou 專門研究用 SGD(隨機梯度下降)做大規模機器學習,他發現對於 SGD 這種在 optimization 領域效果極差的演算法,用在 machine learning 上卻出奇的好。所以這也體現了 learning 和 optimization 的區別吧。

2樓:Ger Young

機器學習的問題,可以轉化成優化問題,即求解最小值J(x)的問題。

對於優化問題來說,凸函式存在乙個很棒的性質:區域性最優點即是全域性最優點。

二維的凸函式和非凸函式的影象如下圖所示:

三維的凸函式的非凸函式的影象如下圖所示:

那麼,為什麼凸函式(區域性最優值即為全域性最優值)有利於求解機器學習(優化問題)呢?

如果我們可以遍歷所有點(二維線上的點和三維面上的點),那麼肯定可以找到最優值,但是遍歷所有點計算量十分巨大,尤其當特徵比較多的時候會遇到維度災難。

所以,一般採用梯度下降法,即尋找下降的方向。如果不是凸函式的話,那麼可能收斂到區域性最優值,便達不到我們想要的結果了。

下面,舉乙個例子:

logistic 回歸的Cost函式

1.正常下的Cost是這樣的

但是這樣Cost-theta是非凸函式,也就是存在很多區域性最優值,這樣以來我們利用梯度下降的方法便得不到全域性最優值。

2.最終的Cost是這樣的

通過Log函式將其轉化為凸函式,這樣就能夠使用梯度下降等方法,快速得到全域性最優值了。

3樓:

基本上一切convexity理論相關的著作一上來都會這麼告訴你:因為幾乎一切learning的問題最後都可以劃歸為某種約束條件下的優化問題。很多優化問題都具有(或者可以通過某些轉化而具有)一些很優良的性質,這些很優良的性質使得我們可以高效地求解優化問題(比如使用梯度方法),而convexity是其中最重要的性質之一。

深度學習和機器學習有什麼區別?

深度學習就是多層神經網路,機器學習就是傳統的那一堆模型,lr,svm,各種決策樹,knn之類。至於單隱層的簡單神經網路,歐美目前越來越傾向於劃分到深度學習裡面。 總的來說機器學習分為監督學習和無監督學習,其中監督學習的演算法大致有knn svm 邏輯回歸神經網路決策樹等,無監督學習的演算法,如聚類等...

學習python和機器學習演算法,深度學習演算法就是學不會,心情很壓抑怎麼辦?

陽光 不知道你多大年齡,阿姨我今年快48了,去年開始學習機器學習,深度學習,也經歷很多燒腦的日子,但是要相信自己,多去網上搜尋,書讀百遍其意自現,死磕到底,沒什麼學不會的,想想又不是讓你造原子彈 我執 看到這個題目我頓時會心一笑,彷彿見到了過去的自己.回答分割線 我想題主應該是想問怎麼快速的學習演算...

機器學習和深度學習的區別和聯絡?

深度學習只是機器學習的一小塊,只是現在發展的最火,導致其名聲在外。深度學習特指由神經網路構成的多層結構,層數少了就不叫深度學習了。但是除去深度學習,機器學習還有很多傳統方法,PCA,SVM,Clustering,Tree等等方法。就我個人而言,普通工作深度學習用的其實並不多,各種基於樹的模型用的更加...