0
本文作者: 楊文 | 2018-01-31 16:53 |
雷鋒網(wǎng)AI研習(xí)社按:CS231n是斯坦福大學(xué)開(kāi)設(shè)的計(jì)算機(jī)視覺(jué)與深度學(xué)習(xí)的入門(mén)課程,授課內(nèi)容在國(guó)內(nèi)外頗受好評(píng)。但是只聽(tīng)課不復(fù)習(xí),不做作業(yè)來(lái)鞏固知識(shí)點(diǎn)的話,效果肯定不好。雷鋒網(wǎng)AI研習(xí)社在近期的線上公開(kāi)課上請(qǐng)來(lái)了一位技術(shù)大牛為大家來(lái)講解這門(mén)課的配套作業(yè)。
本文根據(jù)AI研習(xí)社公開(kāi)課上的直播視頻內(nèi)容整理而成,主要介紹Assignment 1的完成思路與重點(diǎn)部分代碼實(shí)現(xiàn)。如果你還沒(méi)開(kāi)始聽(tīng)CS231n,可直接點(diǎn)擊課程鏈接觀看回放視頻。
王煦中,CS碩士,主要研究方向?yàn)樽匀徽Z(yǔ)言處理與深度學(xué)習(xí)。知乎專(zhuān)欄喵神大人的深度工坊(http://t.cn/RTc9wfy)作者,日語(yǔ)及ACGN愛(ài)好者。
分享主題:CS231n課后作業(yè)講解第一講(含代碼實(shí)現(xiàn))作業(yè)鏈接:https://github.com/Observerspy/CS231n
分享提綱:
CS231n作業(yè)介紹,
kNN的介紹
關(guān)于SVM
關(guān)于Softmax
關(guān)于Two-Layer NN
關(guān)于Features
以下是分享內(nèi)容:
CS231n的全稱(chēng)是CS231n: Convolutional Neural Networks for Visual Recognition,即面向視覺(jué)識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)。該課程是斯坦福大學(xué)計(jì)算機(jī)視覺(jué)實(shí)驗(yàn)室推出的入門(mén)課程,授課內(nèi)容在國(guó)內(nèi)外頗受好評(píng)。所有課程資料、PPT等都可以在網(wǎng)絡(luò)上下載:http://cs231n.stanford.edu/syllabus.html。課程的目的是幫助學(xué)生深入了解深度學(xué)習(xí)框架的細(xì)節(jié),主要面向視覺(jué)識(shí)別任務(wù)(尤其是圖像分類(lèi)任務(wù))的端到端學(xué)習(xí)模型。
關(guān)于kNN
kNN主要分為兩步:第一步是訓(xùn)練,分類(lèi)器簡(jiǎn)單地記住所有的訓(xùn)練數(shù)據(jù)。
第二步是測(cè)試,比第一步要重要。每一個(gè)測(cè)試樣本要和每一個(gè)訓(xùn)練數(shù)據(jù)分別計(jì)算距離,選取k個(gè)最近的訓(xùn)練樣本的label,通過(guò)投票機(jī)制獲得預(yù)測(cè)值。
投票機(jī)制就是大家在一起對(duì)所有的類(lèi)投票,哪一個(gè)類(lèi)的投票數(shù)最多,這個(gè)測(cè)試樣本就會(huì)被分為該類(lèi)的下面。
這個(gè)作業(yè)主要分為三步,第一步用雙循環(huán)實(shí)現(xiàn)kNN, 雙循環(huán)就是對(duì)每個(gè)測(cè)試數(shù)據(jù)和每個(gè)訓(xùn)練數(shù)據(jù)分別計(jì)算,第一層循環(huán)就是對(duì)測(cè)試數(shù)據(jù)的循環(huán),第二層循環(huán)是對(duì)訓(xùn)練
下面使用單循環(huán)實(shí)現(xiàn)。單循環(huán)要求每個(gè)測(cè)試數(shù)據(jù)通過(guò)一次計(jì)算就可以得到和訓(xùn)練數(shù)據(jù)整體的距離。訓(xùn)練分為兩個(gè)部分,首先是每個(gè)測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)做差,需要注意參數(shù)axis的設(shè)置,用了廣播機(jī)制。
使用無(wú)循環(huán)實(shí)現(xiàn)
具體的實(shí)現(xiàn)代碼,可以觀看回放視頻學(xué)習(xí)。
最后的一個(gè)部分是預(yù)測(cè):np.argsort()可以對(duì)dist進(jìn)行排序選出k個(gè)最近的訓(xùn)練樣本的下標(biāo);np.bincount()會(huì)統(tǒng)計(jì)輸入數(shù)組出現(xiàn)的頻數(shù),結(jié)合np.argmax()就可以實(shí)現(xiàn)vote機(jī)制。
該部分作業(yè)要求在測(cè)試樣本中需要得到28%的準(zhǔn)確率。
關(guān)于線性多分類(lèi)SVM
推導(dǎo)SVM過(guò)程很復(fù)雜,這里不涉及過(guò)多問(wèn)題,用線性計(jì)算就可以了。注意下面這個(gè)式子匯總只有錯(cuò)誤的分類(lèi)才能產(chǎn)生loss。即j=i 正確分類(lèi)是沒(méi)有l(wèi)oss的。
分別對(duì)Wj和Wyi求導(dǎo),具體的實(shí)現(xiàn)代碼可以觀看視頻回播。這個(gè)作業(yè)要求在驗(yàn)證集上得到大約40%的正確率。
關(guān)于Softmax
Softmax的公式如圖
需要注意的是,所有的分類(lèi)問(wèn)題都是一對(duì)一的,一個(gè)測(cè)試樣本只能分到一個(gè)類(lèi)下面。
loss具體代碼實(shí)現(xiàn)過(guò)程可觀看視頻回放。有了loss之后,在j=i和j≠i的情況下,分別對(duì)w求導(dǎo):
這部分作業(yè)要求在驗(yàn)證集上達(dá)到35%的準(zhǔn)確率。
第四部分,關(guān)于 Two-Layer NN,實(shí)現(xiàn)兩層的神經(jīng)網(wǎng)絡(luò)
具體詳解過(guò)程見(jiàn)視頻回放。實(shí)現(xiàn)反向傳播后,要求調(diào)一些參數(shù)在測(cè)試集上達(dá)到48%以上的準(zhǔn)確率。
第五部分:特征
該部分不再直接輸入圖片,而是輸入圖片的特征。
使用SVM需要在驗(yàn)證集上達(dá)到44%的準(zhǔn)確率,使用雙層神經(jīng)網(wǎng)絡(luò)可以很輕松達(dá)到55%以上的準(zhǔn)確率,在測(cè)試機(jī)的分類(lèi)準(zhǔn)確率可達(dá)到59.4%。
以上為雷鋒網(wǎng)AI研習(xí)社公開(kāi)課上的關(guān)鍵內(nèi)容提要。視頻回放課程可到AI慕課學(xué)院觀看,或直接點(diǎn)擊鏈接:
http://www.mooc.ai/open/course/364。
作業(yè)鏈接:https://github.com/Observerspy/CS231n
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。