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},則目標函數及其梯度為
對於小批量梯度下降法,有三點需要注意的地方:
- 如何選取參數m?在不同的應用中,最優的m通常會不一樣,需要通過調參選取。一般m取2的冪次時能充分利用矩陣運算操作,所以我們可以在2的冪次中挑選最優的取值,例如64,128,256,512等。
- 如何挑選m個訓練數據?為了避免數據的特定順序給演算法收斂帶來的影響,一般會在每次遍歷訓練數據之前,先對所有的數據進行隨機排序,然後順序挑選m個訓練數據進行訓練,直至遍歷完所有的數據。
- 如何選取學習速率α?為了加快收斂速率同時提高求解精度,通常會選取遞減的學習速率方案。演算法一開始能夠以較快的速率收斂到最優解附近,再以較小的速率精細調整最優解。最優的學習速率方案也通常需要調參才能得到。
綜上,我們通常採用小批量梯度下降法解決訓練數據量過大的問題,每次迭代更新只需要處理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」微信公號,點擊菜單欄「機器學習」獲得更多系列文章。下期再見。
http://weixin.qq.com/r/_EMrM0TEAhl9rQBQ9xbq (二維碼自動識別)
推薦閱讀:
※面試有什麼需要注意的一些小細節?
※如何看待設計師面試讓你上機做東西這件事?
※從源碼角度分析Handler
※有哪些話是面試的時候千萬不能說的?
※假冒的人為何會通過面試?