0
| 本文作者: 楊文 | 2018-01-31 16:53 |
雷鋒網(wǎng)AI研習(xí)社按:CS231n是斯坦福大學(xué)開設(shè)的計算機視覺與深度學(xué)習(xí)的入門課程,授課內(nèi)容在國內(nèi)外頗受好評。但是只聽課不復(fù)習(xí),不做作業(yè)來鞏固知識點的話,效果肯定不好。雷鋒網(wǎng)AI研習(xí)社在近期的線上公開課上請來了一位技術(shù)大牛為大家來講解這門課的配套作業(yè)。
本文根據(jù)AI研習(xí)社公開課上的直播視頻內(nèi)容整理而成,主要介紹Assignment 1的完成思路與重點部分代碼實現(xiàn)。如果你還沒開始聽CS231n,可直接點擊課程鏈接觀看回放視頻。
王煦中,CS碩士,主要研究方向為自然語言處理與深度學(xué)習(xí)。知乎專欄喵神大人的深度工坊(http://t.cn/RTc9wfy)作者,日語及ACGN愛好者。
分享主題:CS231n課后作業(yè)講解第一講(含代碼實現(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的全稱是CS231n: Convolutional Neural Networks for Visual Recognition,即面向視覺識別的卷積神經(jīng)網(wǎng)絡(luò)。該課程是斯坦福大學(xué)計算機視覺實驗室推出的入門課程,授課內(nèi)容在國內(nèi)外頗受好評。所有課程資料、PPT等都可以在網(wǎng)絡(luò)上下載:http://cs231n.stanford.edu/syllabus.html。課程的目的是幫助學(xué)生深入了解深度學(xué)習(xí)框架的細節(jié),主要面向視覺識別任務(wù)(尤其是圖像分類任務(wù))的端到端學(xué)習(xí)模型。

關(guān)于kNN
kNN主要分為兩步:第一步是訓(xùn)練,分類器簡單地記住所有的訓(xùn)練數(shù)據(jù)。
第二步是測試,比第一步要重要。每一個測試樣本要和每一個訓(xùn)練數(shù)據(jù)分別計算距離,選取k個最近的訓(xùn)練樣本的label,通過投票機制獲得預(yù)測值。

投票機制就是大家在一起對所有的類投票,哪一個類的投票數(shù)最多,這個測試樣本就會被分為該類的下面。
這個作業(yè)主要分為三步,第一步用雙循環(huán)實現(xiàn)kNN, 雙循環(huán)就是對每個測試數(shù)據(jù)和每個訓(xùn)練數(shù)據(jù)分別計算,第一層循環(huán)就是對測試數(shù)據(jù)的循環(huán),第二層循環(huán)是對訓(xùn)練

下面使用單循環(huán)實現(xiàn)。單循環(huán)要求每個測試數(shù)據(jù)通過一次計算就可以得到和訓(xùn)練數(shù)據(jù)整體的距離。訓(xùn)練分為兩個部分,首先是每個測試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)做差,需要注意參數(shù)axis的設(shè)置,用了廣播機制。

使用無循環(huán)實現(xiàn)

具體的實現(xiàn)代碼,可以觀看回放視頻學(xué)習(xí)。
最后的一個部分是預(yù)測:np.argsort()可以對dist進行排序選出k個最近的訓(xùn)練樣本的下標(biāo);np.bincount()會統(tǒng)計輸入數(shù)組出現(xiàn)的頻數(shù),結(jié)合np.argmax()就可以實現(xiàn)vote機制。

該部分作業(yè)要求在測試樣本中需要得到28%的準(zhǔn)確率。
關(guān)于線性多分類SVM
推導(dǎo)SVM過程很復(fù)雜,這里不涉及過多問題,用線性計算就可以了。注意下面這個式子匯總只有錯誤的分類才能產(chǎn)生loss。即j=i 正確分類是沒有l(wèi)oss的。

分別對Wj和Wyi求導(dǎo),具體的實現(xiàn)代碼可以觀看視頻回播。這個作業(yè)要求在驗證集上得到大約40%的正確率。
關(guān)于Softmax
Softmax的公式如圖

需要注意的是,所有的分類問題都是一對一的,一個測試樣本只能分到一個類下面。
loss具體代碼實現(xiàn)過程可觀看視頻回放。有了loss之后,在j=i和j≠i的情況下,分別對w求導(dǎo):

這部分作業(yè)要求在驗證集上達到35%的準(zhǔn)確率。
第四部分,關(guān)于 Two-Layer NN,實現(xiàn)兩層的神經(jīng)網(wǎng)絡(luò)

具體詳解過程見視頻回放。實現(xiàn)反向傳播后,要求調(diào)一些參數(shù)在測試集上達到48%以上的準(zhǔn)確率。
第五部分:特征
該部分不再直接輸入圖片,而是輸入圖片的特征。

使用SVM需要在驗證集上達到44%的準(zhǔn)確率,使用雙層神經(jīng)網(wǎng)絡(luò)可以很輕松達到55%以上的準(zhǔn)確率,在測試機的分類準(zhǔn)確率可達到59.4%。
以上為雷鋒網(wǎng)AI研習(xí)社公開課上的關(guān)鍵內(nèi)容提要。視頻回放課程可到AI慕課學(xué)院觀看,或直接點擊鏈接:
http://www.mooc.ai/open/course/364。
作業(yè)鏈接:https://github.com/Observerspy/CS231n
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。