機(jī)器學(xué)習(xí)-自己寫個(gè)線性回歸算法v0版-實(shí)現(xiàn)圖片分類

迭代30000次身辨,loss=0.0984,學(xué)習(xí)率=0.1芍碧,數(shù)字圖片分類效果一般

迭代40000次煌珊,loss=0.0352,學(xué)習(xí)率=0.1, 數(shù)字圖片分類效果較好

畫出了loss曲線圖泌豆,可以看出定庵,在loss=4附近,loss曲線發(fā)生短暫上升踪危,之后持續(xù)下降蔬浙;其中在迭代10000次左右后,下降速度趨緩贞远。

對(duì)預(yù)測(cè)值y按照閾值法進(jìn)行了分類畴博,分類函數(shù)為classify_id(result)


具體結(jié)果:

學(xué)習(xí)率=0.1

epoch=39999,loss=tensor([[0.0353]], grad_fn=),weights=tensor([ 0.2679,-1.1017, 75.4234, -27.5171, -49.4079, 15.8718, -13.4961, 95.7110, -14.0505,-56.6473, -106.9320, 0.5181, 102.3565], grad_fn=)



干貨

線性回歸(Linear Regression)

線性回歸假設(shè)目標(biāo)值與特征之間線性相關(guān),即滿足一個(gè)多元一次方程蓝仲。通過構(gòu)建損失函數(shù)俱病,來(lái)求解損失函數(shù)最小時(shí)的參數(shù)w和b。

\hat{y} =\omega x+b

線性回歸算法步驟:

1袱结、先令w=w0(初始化w)

2亮隙、把w0代入model輸出

3、觀察模型輸出\hat{y} 與期望值y*

4垢夹、如果輸出\hat{y} 與期望相同咱揍,求解完成(\hat{y} =y*)

5、如果不同棚饵,以一定規(guī)則更新w,即w1=R(w)

6掩完、把w1代入model噪漾,得到模型輸出

7、轉(zhuǎn)到第三步

線性回歸算法的關(guān)鍵問題有2個(gè):

1且蓬、如何觀察輸出與期望之間的差欣硼?

2、更新w的規(guī)則如何制定恶阴?

對(duì)于第一個(gè)關(guān)鍵問題——

定義Loss 函數(shù):loss=\sum_{i}^j(\hat{y} -y*)^2

解決第二個(gè)關(guān)鍵問題——第一種思路是用最小二乘法(least square method)诈胜;第二種思路,就用到大名鼎鼎的“梯度下降”(gradient descent)了冯事。

梯度下降法(gradient descent)是一個(gè)最優(yōu)化算法焦匈,常用于機(jī)器學(xué)習(xí)和人工智能當(dāng)中用來(lái)遞歸性地逼近最小偏差模型。

梯度下降是迭代法的一種,可以用于求解最小二乘問題(線性和非線性都可以)昵仅。在求解機(jī)器學(xué)習(xí)算法的模型參數(shù)缓熟,即無(wú)約束優(yōu)化問題時(shí)累魔,梯度下降(Gradient Descent)是最常采用的方法之一,另一種常用的方法是最小二乘法够滑。在求解損失函數(shù)的最小值時(shí)垦写,可以通過梯度下降法來(lái)一步步的迭代求解,得到最小化的損失函數(shù)和模型參數(shù)值彰触。反過來(lái)梯投,如果我們需要求解損失函數(shù)的最大值,這時(shí)就需要用梯度上升法來(lái)迭代了况毅。在機(jī)器學(xué)習(xí)中分蓖,基于基本的梯度下降法發(fā)展了兩種梯度下降方法,分別為隨機(jī)梯度下降法和批量梯度下降法俭茧。

如果說在機(jī)器學(xué)習(xí)領(lǐng)域有哪個(gè)優(yōu)化算法最廣為認(rèn)知咆疗,用途最廣,非梯度下降算法莫屬母债。梯度下降算法是一種非常經(jīng)典的求極小值的算法午磁,比如在線性回歸里我們可以用最小二乘法去解析最優(yōu)解,但是其中會(huì)涉及到對(duì)矩陣求逆毡们,由于多重共線性問題的存在是很讓人難受的迅皇,無(wú)論進(jìn)行L1正則化的Lasso回歸還是L2正則化的嶺回歸,其實(shí)并不讓人滿意衙熔,因?yàn)樗鼈兊漠a(chǎn)生是為了修復(fù)此漏洞登颓,而不是為了提升模型效果,甚至使模型效果下降红氯。但是換一種思路框咙,比如用梯度下降算法去優(yōu)化線性回歸的損失函數(shù),完全就可以不用考慮多重共線性帶來(lái)的問題痢甘。其實(shí)不僅是線性回歸喇嘱,邏輯回歸同樣是可以用梯度下降進(jìn)行優(yōu)化,因?yàn)檫@兩個(gè)算法的損失函數(shù)都是嚴(yán)格意義上的凸函數(shù)塞栅,即存在全局唯一極小值者铜,較小的學(xué)習(xí)率和足夠的迭代次數(shù),一定可以達(dá)到最小值附近放椰,滿足精度要求是完全沒有問題的作烟。并且隨著特征數(shù)目的增多(列如100000),梯度下降的效率將遠(yuǎn)高于去解析標(biāo)準(zhǔn)方程的逆矩陣砾医。神經(jīng)網(wǎng)絡(luò)中的后向傳播算法其實(shí)就是在進(jìn)行梯度下降拿撩,GDBT(梯度提升樹)每增加一個(gè)弱學(xué)習(xí)器(CART回歸樹),近似于進(jìn)行一次梯度下降,因?yàn)槊恳豢没貧w樹的目的都是去擬合此時(shí)損失函數(shù)的負(fù)梯度如蚜,這也可以說明為什么GDBT往往沒XGBoost的效率高绷雏,因?yàn)樗鼪]辦法擬合真正的負(fù)梯度头滔,而Xgboost 的每增加的一個(gè)弱學(xué)習(xí)器是使得損失函數(shù)下降最快的解析解。



以上是自己實(shí)現(xiàn)梯度算法的原理涎显,python代碼如下

自己寫梯度下降 實(shí)現(xiàn)模型訓(xùn)練


自己實(shí)現(xiàn)梯度下降前坤检,需要推導(dǎo)出計(jì)算梯度的公式,對(duì)于我這種數(shù)學(xué)就飯吃的人就不友好了期吓。

遇到問題不要慌早歇,調(diào)用庫(kù)來(lái)幫忙!

我們可以使用pytorch讨勤,它把求取梯度的方法內(nèi)嵌了箭跳。下面是調(diào)用pytorch實(shí)現(xiàn)的代碼

使用pytorch的梯度下降實(shí)現(xiàn)模型訓(xùn)練


下面是轉(zhuǎn)載


一、算法簡(jiǎn)介

1.1 什么是回歸分析

回歸分析是一種預(yù)測(cè)性的建模技術(shù)潭千,它研究的是因變量(目標(biāo))和自變量(預(yù)測(cè)器)之間的關(guān)系谱姓。這種技術(shù)通常用于預(yù)測(cè)分析,時(shí)間序列模型以及發(fā)現(xiàn)變量之間的因果關(guān)系刨晴。通常使用曲線/線來(lái)擬合數(shù)據(jù)點(diǎn)屉来,目標(biāo)是使曲線到數(shù)據(jù)點(diǎn)的距離差異最小。

1.2 線性回歸

線性回歸是回歸問題中的一種狈癞,線性回歸假設(shè)目標(biāo)值與特征之間線性相關(guān)茄靠,即滿足一個(gè)多元一次方程。通過構(gòu)建損失函數(shù)蝶桶,來(lái)求解損失函數(shù)最小時(shí)的參數(shù)w和b慨绳。通長(zhǎng)我們可以表達(dá)成如下公式:

y^為預(yù)測(cè)值,自變量x和因變量y是已知的真竖,而我們想實(shí)現(xiàn)的是預(yù)測(cè)新增一個(gè)x脐雪,其對(duì)應(yīng)的y是多少。因此恢共,為了構(gòu)建這個(gè)函數(shù)關(guān)系战秋,目標(biāo)是通過已知數(shù)據(jù)點(diǎn),求解線性模型中w和b兩個(gè)參數(shù)旁振。

1.3 目標(biāo)/損失函數(shù)

求解最佳參數(shù),需要一個(gè)標(biāo)準(zhǔn)來(lái)對(duì)結(jié)果進(jìn)行衡量涨岁,為此我們需要定量化一個(gè)目標(biāo)函數(shù)式拐袜,使得計(jì)算機(jī)可以在求解過程中不斷地優(yōu)化。

針對(duì)任何模型求解問題梢薪,都是最終都是可以得到一組預(yù)測(cè)值y^ 蹬铺,對(duì)比已有的真實(shí)值 y ,數(shù)據(jù)行數(shù)為 n 秉撇,可以將損失函數(shù)定義如下:

即預(yù)測(cè)值與真實(shí)值之間的平均的平方距離甜攀,統(tǒng)計(jì)中一般稱其為MAE(mean square error)均方誤差秋泄。把之前的函數(shù)式代入損失函數(shù),并且將需要求解的參數(shù)w和b看做是函數(shù)L的自變量规阀,可得

現(xiàn)在的任務(wù)是求解最小化L時(shí)w和b的值恒序,

即核心目標(biāo)優(yōu)化式為

求解方式有兩種:

1)最小二乘法(least square method)

求解 w 和 b 是使損失函數(shù)最小化的過程,在統(tǒng)計(jì)中谁撼,稱為線性回歸模型的最小二乘“參數(shù)估計(jì)”(parameter estimation)歧胁。我們可以將 L(w,b) 分別對(duì) w 和 b 求導(dǎo),得到

令上述兩式為0厉碟,可得到 w 和 b 最優(yōu)解的閉式(closed-form)解:


2)梯度下降(gradient descent)

梯度下降核心內(nèi)容是對(duì)自變量進(jìn)行不斷的更新(針對(duì)w和b求偏導(dǎo))喊巍,使得目標(biāo)函數(shù)不斷逼近最小值的過程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市箍鼓,隨后出現(xiàn)的幾起案子崭参,更是在濱河造成了極大的恐慌,老刑警劉巖款咖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何暮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡之剧,警方通過查閱死者的電腦和手機(jī)郭卫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)背稼,“玉大人贰军,你說我怎么就攤上這事⌒分猓” “怎么了词疼?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)帘腹。 經(jīng)常有香客問我贰盗,道長(zhǎng),這世上最難降的妖魔是什么阳欲? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任舵盈,我火速辦了婚禮,結(jié)果婚禮上球化,老公的妹妹穿的比我還像新娘秽晚。我一直安慰自己,他們只是感情好筒愚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布赴蝇。 她就那樣靜靜地躺著,像睡著了一般巢掺。 火紅的嫁衣襯著肌膚如雪句伶。 梳的紋絲不亂的頭發(fā)上劲蜻,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音考余,去河邊找鬼先嬉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛秃殉,可吹牛的內(nèi)容都是我干的坝初。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钾军,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鳄袍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吏恭,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拗小,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后樱哼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哀九,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年搅幅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阅束。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茄唐,死狀恐怖息裸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沪编,我是刑警寧澤呼盆,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站蚁廓,受9級(jí)特大地震影響访圃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜相嵌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一腿时、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饭宾,春花似錦批糟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)笆搓。三九已至性湿,卻和暖如春纬傲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肤频。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工叹括, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宵荒。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓汁雷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親报咳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侠讯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355