機器學習就是需找一種函數(shù)f(x)并進行優(yōu)化滤愕, 且這種函數(shù)能夠做預測厂僧、分類鸟召、生成等工作胆绊。
那么其實可以總結出關于“如何找到函數(shù)f(x)”的方法論∨纺迹可以看作是機器學習的“三板斧”:
第一步:定義一個函數(shù)集合(define a function set)
第二步:判斷函數(shù)的好壞(goodness of a function)
第三步:選擇最好的函數(shù)(pick the best one)
我們先把目光放在第三步上:How to pick the best one ? 我們的目標是讓損失函數(shù)最小化压状。這就引出了下面需要介紹的方法:梯度下降是目前機器學習、深度學習解決最優(yōu)化問題的算法中跟继,最核心种冬、應用最廣的方法。
1舔糖、為什么我們需要梯度下降算法:
?如果我們拋開具體場景碌廓,僅從數(shù)學抽象的角度來看:每個模型都有自己的損失函數(shù),不管是監(jiān)督式學習還是非監(jiān)督式學習剩盒。損失函數(shù)包含了若干個位置的模型參數(shù),比如在多元線性回歸中,損失函數(shù):??辽聊,其中向量表示未知的模型參數(shù)纪挎,我們就是要找到使損失函數(shù)盡可能小的參數(shù)未知模型參數(shù)。
在學習簡單線性回歸時跟匆,我們使用最小二乘法來求損失函數(shù)的最小值异袄,但是這只是一個特例。在絕大多數(shù)的情況下玛臂,損失函數(shù)是很復雜的(比如邏輯回歸)烤蜕,根本無法得到參數(shù)估計值的表達式。因此需要一種對大多數(shù)函數(shù)都適用的方法迹冤。這就引出了“梯度算法”讽营。
首先梯度下降(GradientDescent, GD),不是一個機器學習算法泡徙,而是一種基于搜索的最優(yōu)化方法橱鹏。梯度下降(GradientDescent, GD)優(yōu)化算法,其作用是用來對原始模型的損失函數(shù)進行優(yōu)化堪藐,以便尋找到最優(yōu)的參數(shù)莉兰,使得損失函數(shù)的值最小。
要找到使損失函數(shù)最小化的參數(shù)礁竞,如果純粹靠試錯搜索糖荒,比如隨機選擇1000個值,依次作為某個參數(shù)的值模捂,得到1000個損失值捶朵,選擇其中那個讓損失值最小的值,作為最優(yōu)的參數(shù)值枫绅,那這樣太笨了泉孩。我們需要更聰明的算法,從損失值出發(fā)并淋,去更新參數(shù)寓搬,且要大幅降低計算次數(shù)。
梯度下降算法作為一個聰明很多的算法县耽,抓住了參數(shù)與損失值之間的導數(shù)句喷,也就是能夠計算梯度(gradient),通過導數(shù)告訴我們此時此刻某參數(shù)應該朝什么方向兔毙,以怎樣的速度運動唾琼,能安全高效降低損失值,朝最小損失值靠攏澎剥。
2锡溯、理解梯度下降算法
?既然是選擇一個方向下山,那么這個方向怎么選?每次該怎么走祭饭?選方向在算法中是以隨機方式給出的芜茵,這也是造成有時候走不到真正最低點的原因。如果選定了方向倡蝙,以后每走一步九串,都是選擇最陡的方向,直到最低點寺鸥≈砼ィ總結起來就一句話:隨機選擇一個方向,然后每次邁步都選擇最陡的方向胆建,直到這個方向上能達到的最低點烤低。
梯度算法有一個比較致命的問題:
從理論上,它只能保證達到局部最低點眼坏,而非全局最低點拂玻。在很多復雜函數(shù)中有很多極小值點,我們使用梯度下降法只能得到局部最優(yōu)解宰译,而不能得到全局最優(yōu)解檐蚜。那么對應的解決方案如下:首先隨機產(chǎn)生多個初始參數(shù)集,即多組沿侈;然后分別對每個初始參數(shù)集使用梯度下降法闯第,直到函數(shù)值收斂于某個值;最后從這些值中找出最小值缀拭,這個找到的最小值被當作函數(shù)的最小值咳短。當然這種方式不一定能找到全局最優(yōu)解,但是起碼能找到較好的蛛淋。對于梯度下降來說咙好,初始點的位置,也是一個超參數(shù)褐荷。
總結:
?在機器學習的“三板斧”中勾效,第三步的目標是讓損失函數(shù)最小化,從而引出了梯度下降法叛甫,這一目前機器學習层宫、深度學習解決最優(yōu)化問題的算法中,最核心其监、應用最廣的方法萌腿。所謂梯度下降,是一種基于搜索的最優(yōu)化方法抖苦,其作用是用來對原始模型的損失函數(shù)進行優(yōu)化毁菱,找到使損失函數(shù)(局部)最小的參數(shù)米死。
首先對梯度下降有一個整體的印象:梯度是向量,是多元函數(shù)的導數(shù)鼎俘,指向誤差值增加最快的方向哲身。我們沿著梯度的反方向進行線性搜索,從而減少誤差值贸伐,是為梯度下降。然后我們通過“下山”這樣的模擬場景怔揩,以及嚴謹?shù)臄?shù)據(jù)公式推導深刻理解了梯度下降算法捉邢,并引出了學習率的概念。最后我們給出了梯度下降方法的不足和改進方法商膊。