1. 程式人生 > >Hulu機器學習問題與解答系列 | 二十四:隨機梯度下降法

Hulu機器學習問題與解答系列 | 二十四:隨機梯度下降法

叠代 -s nbsp xib 大量 步長 空間 圖片 ges

Hulu優秀的作者們每天和公式抗爭,只為提升你們的技能,感動的話就把文章看完,然後哭一個吧技術分享圖片

今天的內容是

【隨機梯度下降法】

場景描述

深度學習得以在近幾年迅速占領工業界和學術界的高地,重要原因之一是數據量的爆炸式增長。如下圖所示,隨著數據量的增長,傳統機器學習算法的性能會進入平臺期,而深度學習算法因其強大的表示能力,性能得以持續增長,甚至在一些任務上超越人類。因此有人戲稱,“得數據者得天下”。

技術分享圖片

經典的優化方法,例如梯度下降法,每次叠代更新需要用到所有的訓練數據,這給求解大數據、大規模的優化問題帶來了挑戰。掌握基於大量訓練數據求解模型的方法,對於掌握機器學習,尤其是深度學習至關重要。

問題描述

針對訓練數據量過大的問題,當前有哪些優化求解算法?

先驗知識:概率論、梯度下降法

解答與分析

在機器學習中,優化問題的目標函數通常可以表示成

技術分享圖片

其中θ是待優化的模型參數,x是模型輸入,f(x, θ)是模型的實際輸出,y是模型的目標輸出,L(·,·)刻畫了模型在數據(x, y)上的損失,Pdata表示數據的分布,E表示期望。J(θ)刻畫了當參數為θ時,模型在所有數據上的平均損失,我們希望能夠找到使得平均損失最小的模型參數,也就是求解優化問題

技術分享圖片

為了求解該問題,梯度下降法的叠代更新公式為

技術分享圖片

其中α>0是步長。若采用所有訓練數據的平均損失來近似目標函數及其梯度,即

技術分享圖片

其中M表示訓練數據的個數,則對模型參數的單次更新需要遍歷所有的訓練數據,這在M

很大時是不可取的。

為了解決該問題,隨機梯度下降法(stochastic gradient descent, SGD)采用單個訓練數據的損失近似平均損失,即

技術分享圖片

因此,隨機梯度下降法用單個訓練數據即可對模型參數進行一次更新,大大加快了收斂速率。該方法也非常適用於數據源源不斷到來的在線場景。

為了降低梯度的方差從而使得算法的收斂更加穩定,也為了充分利用高度優化的矩陣運算操作,實際中我們會同時處理若幹訓練數據,該方法被稱為小批量梯度下降法(mini-batch gradient descent)。假設需要處理m個訓練數據{xi1, yi1, …, xim, yim},則目標函數及其梯度為

技術分享圖片

對於小批量梯度下降法,有三點需要註意的地方:

  1. 如何選取參數m?在不同的應用中,最優的m通常會不一樣,需要通過調參選取。一般m取2的冪次時能充分利用矩陣運算操作,所以我們可以在2的冪次中挑選最優的取值,例如64,128,256,512等。

  2. 如何挑選m個訓練數據?為了避免數據的特定順序給算法收斂帶來的影響,一般會在每次遍歷訓練數據之前,先對所有的數據進行隨機排序,然後順序挑選m個訓練數據進行訓練,直至遍歷完所有的數據。

  3. 如何選取學習速率α?為了加快收斂速率同時提高求解精度,通常會選取遞減的學習速率方案。算法一開始能夠以較快的速率收斂到最優解附近,再以較小的速率精細調整最優解。最優的學習速率方案也通常需要調參才能得到。

綜上,我們通常采用小批量梯度下降法解決訓練數據量過大的問題,每次叠代更新只需要處理m個訓練數據即可,其中m是一個遠小於總數據量M的常數,能夠大大加快收斂速率。


下一題預告

【初識生成式對抗網絡(GANs)】

場景描述

2014年的一天,Goodfellow與好友相約到酒吧聊天。也許平日裏工作壓力太大,腦細胞已耗盡了創作的激情,在酒吧的片刻放松催生了一個絕妙的學術點子,然後就有了GANs的傳說。GANs全稱為生成式對抗網絡,是一個訓練生成模型的新框架。

技術分享圖片

GANs自提出之日起,就迅速風靡深度學習的各個角落,GANs的變種更是雨後春筍般進入人們的視野,諸如:WGAN、InfoGAN、f-GANs、BiGAN、DCGAN、IRGAN等等。

技術分享圖片

GANs之火,就連任何初入深度學習的新手都能略說一二。GANs剛提出時沒有華麗的數學推演,描繪出的是一幅魅力感極強的故事畫面,恰好契合了東方文化中太極圖的深刻含義——萬物在相生相克中演化,聽起來很有意思。想象GANs框架是一幅太極圖,“太極生兩儀”,這裏“兩儀”就是生成器和判別器,生成器負責“生”,判別器負責“滅”,這一生一滅間有了萬物。具體說來,生成器在初始混沌中孕育有形萬物,判別器甄別過濾有形萬物,扮演一種末日大審判的角色。回到嚴謹的學術語言上,生成器從一個先驗分布中采得隨機信號,經過神經網絡的“妙手”轉換,得到一個模擬真實數據的樣本;判別器既接收來自生成器的模擬樣本,也接收來自實際數據集的真實樣本,我們不告訴判別器這個樣本是哪裏來的,需要它判斷樣本的來源。判別器試圖區分這兩類樣本,生成器則試圖造出迷惑判別器的模擬樣本,兩者自然構成一對“冤家”,置身於一種對抗的環境。然而,對抗不是目的,在對抗中讓雙方能力各有所長才是目的,理想情況下最終達到一種平衡,使得雙方的能力以臻完美,彼此都沒有了更進一步的空間。

技術分享圖片

問題描述

關於GANs,從基本理論到具體模型再到實驗設計,我們依次思考三個問題:

(1)GANs可看作一個雙人minimax遊戲,請給出遊戲的value function。我們知道在理想情況下最終會達到一個納什均衡點,此時生成器表示為G*,判別器表示為D*,請給出解(G*, D*)和value function的值;在未達到均衡時,我們將生成器G固定,去尋找當前下最優的判別器DG*,請給出DG*和此時的value function。至此的答案都很容易在原論文中找到,這裏進一步發問,倘若固定D,我們將G優化到底,那麽解GD*和此時的value function是什麽?

(2)發明GANs的初衷是為了更好地對概率生成模型作估計,我們知道在應用傳統概率生成模型(如:馬爾科夫場、貝葉斯網)時會涉及大量難以完成的概率推斷計算,GANs是如何避開這類計算的?

(3)實驗中訓練GANs的過程會如描述的那麽完美嗎,求解G的最小化目標函數

技術分享圖片

在訓練中會遇到什麽問題,你有什麽解決方案?

Hulu機器學習問題與解答系列 | 二十四:隨機梯度下降法