個(gè)人網(wǎng)頁設(shè)計(jì)包含html和css南寧網(wǎng)站優(yōu)化公司電話
需求:
想要找到一條直線,能更好的擬合這一些點(diǎn)
如何確定上述直線就是最優(yōu)解呢?
由計(jì)算機(jī)算出所有點(diǎn)與我們擬合直線的誤差,常見的是均方誤差
例如:P1與直線之間的誤差為e1
將P1坐標(biāo)帶入直線并求誤差得:
推廣到所有點(diǎn):
整合:
由于xi, yi都為已知點(diǎn),那么它們就是常數(shù)
化簡(jiǎn):
這個(gè)誤差函數(shù)就稱為代價(jià)函數(shù),其中a, b, c為常數(shù),w為直線得斜率
目標(biāo):
找到一個(gè)斜率w能使這條直線能更好得擬合上述所有點(diǎn),反應(yīng)出來的實(shí)質(zhì)就是e最小
簡(jiǎn)而言之就是找到一個(gè)最優(yōu)解w0使e最小
對(duì)于最優(yōu)解w0,當(dāng)w > w0時(shí)w位置所對(duì)應(yīng)導(dǎo)數(shù)(也稱斜率或梯度)大于零,w < w0時(shí)導(dǎo)數(shù)小于零
所以為了更好的迭代出最優(yōu)解,得出以下迭代公式:
等高線大致可以這樣理解:
學(xué)習(xí)率過大過小都不行,太大了下降過快,太小了太慢
為什么不直接用 w = -b/2*a求解?
要擬合這些點(diǎn),直線就得是y = k * x + b,這可有兩個(gè)變量
按照上述理論求代價(jià)函數(shù)為了防止與常數(shù)向量表示重復(fù),我用x = k, y = b
最后得到:
其中a,b,c,d,e,f均為常數(shù)
那么此方程就一個(gè)三維的了,x = -b/2a也不頂用了
求解過程:
使用梯度下降優(yōu)化 k 和 b 的基本步驟:1.初始化 k 和 b 的值。2.定義損失函數(shù),常見的選擇是均方誤差(Mean Squared Error)損失函數(shù)。
它可以表示為 loss = (1/N) * sum( (y - (kx + b))^2 ),其中 N 是點(diǎn)的數(shù)量,y 是真實(shí)的 y 值,x 是對(duì)應(yīng)的 x 值。3.計(jì)算損失函數(shù)關(guān)于 k 和 b 的梯度。這可以通過計(jì)算損失函數(shù)對(duì) k 和 b 的偏導(dǎo)數(shù)來實(shí)現(xiàn)。4.使用梯度下降算法更新 k 和 b。梯度下降的更新規(guī)則為 k = k - learning_rate * gradient_k,b = b - learning_rate * gradient_b,其中 learning_rate 是學(xué)習(xí)率,
gradient_k 和 gradient_b 是損失函數(shù)關(guān)于 k 和 b 的梯度。重復(fù)步驟 3 和 4,直到達(dá)到停止條件(例如達(dá)到一定的迭代次數(shù)或損失函數(shù)的變化小于某個(gè)閾值)。
計(jì)算機(jī)會(huì)不斷得通過這個(gè)梯度下降的過程找到最優(yōu)解x, y,這也就是為什么學(xué)習(xí)次數(shù)達(dá)到一定量構(gòu)建出來的模型也更精確
疑惑:
1、為什么損失函數(shù)最小對(duì)應(yīng)的損失函數(shù)對(duì)k的偏導(dǎo)與損失函數(shù)對(duì)應(yīng)b的偏導(dǎo)值趨近于零?
當(dāng)損失函數(shù)對(duì)模型參數(shù)的偏導(dǎo)數(shù)趨近于零時(shí),意味著在該參數(shù)值附近,損失函數(shù)的變化非常小,再進(jìn)行參數(shù)更新可能不會(huì)有明顯的改進(jìn)。這時(shí),我們可以認(rèn)為模型已經(jīng)接近局部最優(yōu)解,損失函數(shù)的值也趨近于最小值。
具體來說,對(duì)于線性回歸模型中的參數(shù) k 和 b,損失函數(shù)對(duì) k 的偏導(dǎo)數(shù)和對(duì) b
的偏導(dǎo)數(shù)的趨近于零表示在當(dāng)前參數(shù)值附近,沿著每個(gè)參數(shù)的變化方向,損失函數(shù)的變化非常小。這可以解釋為損失函數(shù)對(duì)參數(shù)的梯度幾乎為零,即在該點(diǎn)附近的斜率幾乎為零,導(dǎo)致參數(shù)不會(huì)有太大的變化。當(dāng)參數(shù)的梯度趨近于零時(shí),梯度下降算法會(huì)收斂,即停止參數(shù)更新,認(rèn)為找到了局部最優(yōu)解或者接近最優(yōu)解。這是梯度下降算法的終止條件之一。但需要注意的是,梯度下降可能會(huì)停在局部最優(yōu)解而非全局最優(yōu)解,因此在實(shí)際應(yīng)用中,可以通過調(diào)節(jié)學(xué)習(xí)率等參數(shù)來控制梯度下降的迭代過程,以更好地找到最優(yōu)解。
2、什么是局部最優(yōu)解和全局最優(yōu)解?
這也正是為什么利用機(jī)器學(xué)習(xí)產(chǎn)生的模型會(huì)產(chǎn)生大的誤差
3、怎么能確保這個(gè)最小值e是全局最小而不是局部最小
為了確保找到的最小值是全局最小而不是局部最小,我們可以采用以下方法:
1、使用隨機(jī)初始化參數(shù)的方法。通過多次運(yùn)行算法并隨機(jī)初始化參數(shù),可以增加找到全局最小的概率。
2、調(diào)整學(xué)習(xí)率。如果學(xué)習(xí)率過大,可能會(huì)導(dǎo)致算法在最小值附近震蕩而無法收斂到全局最小;如果學(xué)習(xí)率過小,則算法可能會(huì)陷入局部最小。因此,需要適當(dāng)調(diào)整學(xué)習(xí)率的大小。
3、使用動(dòng)量法或自適應(yīng)學(xué)習(xí)率法等優(yōu)化算法。這些算法可以在梯度變化緩慢時(shí)加速收斂,而在梯度變化劇烈時(shí)減小更新幅度,從而避免陷入局部最小。
4、添加正則化項(xiàng)。正則化項(xiàng)可以限制模型的復(fù)雜度,防止模型過度擬合訓(xùn)練數(shù)據(jù),從而提高模型的泛化能力。同時(shí),正則化項(xiàng)也可以使損失函數(shù)更加平滑,減少陷入局部最小的可能性。
學(xué)習(xí)渠道:梯度下降 & Chatgdp