梯度下降,是一種基于搜索的最優(yōu)化方法,其作用是用來(lái)對(duì)原始模型的損失函數(shù)進(jìn)行優(yōu)化,找到使損失函數(shù)(局部)最小的參數(shù)。
梯度是向量,是多元函數(shù)的導(dǎo)數(shù),指向誤差值增加最快的方向。我們沿著梯度的反方向進(jìn)行線性搜索,從而減少誤差值,是為梯度下降。
梯度是向量,求梯度就要求導(dǎo)數(shù)。在python中,除了自己手動(dòng)計(jì)算以外,還有兩個(gè)常用的求導(dǎo)方法:Scipy & Sympy
使用向量化的方式編寫(xiě)代碼,但是發(fā)現(xiàn)在真實(shí)數(shù)據(jù)中效果比較差,這是因?yàn)閿?shù)據(jù)的規(guī)模不一樣,因此在梯度下降之前需要使用歸一化
兩種梯度下降法:
批量梯度下降法 Batch Gradient Descent
隨機(jī)梯度下降法 Stochastic Gradient Descent
批量梯度下降法每次對(duì)所有樣本都看一遍,缺點(diǎn)是慢,缺點(diǎn)是穩(wěn)定。隨機(jī)梯度下降法每次隨機(jī)看一個(gè),優(yōu)點(diǎn)是快,缺點(diǎn)是不穩(wěn)定。
其實(shí)還有一種中和二者優(yōu)缺點(diǎn)的方法小批量梯度下降法 MBGD(Mini-Batch Gradient Descent):在每次更新時(shí)用b個(gè)樣本,其實(shí)批量的梯度下降就是一種折中的方法,用一些小樣本來(lái)近似全部。優(yōu)點(diǎn):減少了計(jì)算的開(kāi)銷(xiāo)量,降低了隨機(jī)性。
在機(jī)器學(xué)習(xí)領(lǐng)域,隨機(jī)具有非常大的意義,因?yàn)橛?jì)算速度很快。對(duì)于復(fù)雜的損失函數(shù)來(lái)說(shuō),隨機(jī)可以跳出局部最優(yōu)解,并且有更快的速度。
未完待補(bǔ)充。