來源 | 知乎@杜客
現為美國史丹佛大學教授和谷歌雲人工智慧和機器學習首席科學家的李飛飛擁有眾多頭銜,毫無疑問是人工智慧領域的大 IP。她在史丹佛開設的機器視覺課程 CS231n 一直以來都是王牌課程,惠及數十萬的人工智慧愛好者。筆者最近在知乎發現@杜客及其團隊釋出了該課程非常全面的官方中文翻譯筆記,特此整理出來,供大家交流學習!感謝@杜客團隊!
CS231n 簡介
CS231n的全稱是CS231n: Convolutional Neural Networks for Visual Recognition,即面向視覺識別的卷積神經網路。課程地址:
http://vision.stanford.edu/teaching/cs231n/index.html
該課程是史丹佛大學計算機視覺實驗室推出的課程。需要注意的是,目前大家說CS231n,大都指的是2016年冬季學期(一月到三月)的最新版本。
課程描述:請允許我們引用課程主頁上的官方描述如下:
計算機視覺在社會中已經逐漸普及,並廣泛運用於搜尋檢索、影象理解、手機應用、地圖導航、醫療製藥、無人機和無人駕駛汽車等領域。而這些應用的核心技術就是影象分類、影象定位和影象探測等視覺識別任務。近期神經網路(也就是“深度學習”)方法上的進展極大地提升了這些代表當前發展水平的視覺識別系統的效能。 本課程將深入講解深度學習框架的細節問題,聚焦面向視覺識別任務(尤其是影象分類任務)的端到端學習模型。在10周的課程中,學生們將會學習如何實現、訓練和除錯他們自己的神經網路,並建立起對計算機視覺領域的前沿研究方向的細節理解。最終的作業將包括訓練一個有幾百萬引數的卷積神經網路,並將其應用到最大的影象分類資料庫(ImageNet)上。我們將會聚焦於教授如何確定影象識別問題,學習演算法(比如反向傳播演算法),對網路的訓練和精細調整(fine-tuning)中的工程實踐技巧,指導學生動手完成課程作業和最終的課程專案。本課程的大部分背景知識和素材都來源於ImageNet Challenge競賽。
課程內容:官方課程安排及資源獲取請看下方連結:
http://vision.stanford.edu/teaching/cs231n/syllabus.html
通過檢視官方課程表,我們可以看到 CS231n 課程資源主要由授課視訊與PPT,授課知識詳解筆記和課程作業三部分組成。其中:
- 授課視訊15課。每節課時約1小時左右,每節課一份PPT。
-
授課知識詳解筆記共9份。光看課程視訊是不夠的,深入理解課程筆記才能比較紮實地學習到知識。
-
課程作業3次。其中每次作業中又包含多個小作業,完成作業能確保對於課程關鍵知識的深入理解和實現。
-
課程專案1個。這個更多是面向史丹佛的學生,組隊實現課程專案。
-
擴充閱讀若干。課程推薦的擴充閱讀大多是領域內的經典著作節選或論文,推薦想要深入學習的同學閱讀。
課程評價:我們覺得贊!很多人都覺得贊!當然也有人覺得不好。具體如何,大家搜搜 CS231n 在網路,在知乎上的評價不就好了嘛!個人認為:入門深度學習的一門良心課。適合絕大多數想要學習深度學習知識的人。
課程不足:課程後期從RCNN開始就沒有課程筆記。
課程學習方法
三句話總結:
- 看授課視訊形成概念,發現個人感興趣方向。
-
讀課程筆記理解細節,夯實工程實現的基礎。
-
碼課程作業實現演算法,積累實驗技巧與經驗。
引用一下學習金字塔的圖,意思大家都懂的:
我們的工作
一、完成了CS231n全部9篇課程知識詳解筆記的翻譯:
1. Python Numpy Tutorial
原文:
http://cs231n.github.io/python-numpy-tutorial/
翻譯:
https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit
https://zhuanlan.zhihu.com/p/20900216?refer=intelligentunit
我們將使用 Python 程式語言來完成本課程的所有作業。Python 是一門偉大的通用程式語言,在一些常用庫(numpy, scipy, matplotlib)的幫助下,它又會變成一個強大的科學計算環境。我們期望你們中大多數人對於 Python 語言和 Numpy 庫比較熟悉,而對於沒有 Python 經驗的同學,這篇教程可以幫助你們快速瞭解 Python 程式設計環境和如何使用 Python 作為科學計算工具。我們將使用 Python 程式語言來完成本課程的所有作業。Python 是一門偉大的通用程式語言,在一些常用庫(numpy, scipy, matplotlib)的幫助下,它又會變成一個強大的科學計算環境。我們期望你們中大多數人對於 Python 語言和 Numpy 庫比較熟悉,而對於沒有 Python 經驗的同學,這篇教程可以幫助你們快速瞭解 Python 程式設計環境和如何使用 Python 作為科學計算工具。
2. Image Classification
原文:
http://cs231n.github.io/classification/
翻譯:
https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit
https://zhuanlan.zhihu.com/p/20900216?refer=intelligentunit
該筆記是一篇介紹性教程,面向非計算機視覺領域的同學。教程將向同學們介紹影象分類問題和資料驅動方法,內容列表:
- 影象分類、資料驅動方法和流程
-
Nearest Neighbor分類器
- k-Nearest Neighbor 譯者注:上篇翻譯截止處
- 驗證集、交叉驗證集和超引數調參
-
Nearest Neighbor的優劣
-
小結
-
小結:應用kNN實踐
3. Linear Classification
原文:
http://cs231n.github.io/linear-classify/
翻譯:
https://zhuanlan.zhihu.com/p/20918580?refer=intelligentunit
https://zhuanlan.zhihu.com/p/20945670?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21102293?refer=intelligentunit
我們將要實現一種更強大的方法來解決影象分類問題,該方法可以自然地延伸到神經網路和卷積神經網路上。這種方法主要有兩部分組成:一個是評分函式(score function),它是原始影象資料到類別分值的對映。另一個是損失函式(loss function),它是用來量化預測分類標籤的得分與真實標籤之間一致性的。該方法可轉化為一個最優化問題,在最優化過程中,將通過更新評分函式的引數來最小化損失函式值。內容列表:
- 線性分類器簡介
-
線性評分函式
-
闡明線性分類器 譯者注:上篇翻譯截止處
-
損失函式
- 多類SVM
-
Softmax分類器
-
SVM和Softmax的比較
-
基於Web的可互動線性分類器原型
-
小結
4. optimization notes
原文:
http://cs231n.github.io/optimization-1/
翻譯:
https://zhuanlan.zhihu.com/p/21360434?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21387326?refer=intelligentunit
該筆記介紹了影象分類任務的第三個關鍵部分:最優化。內容列表如下:
- 簡介
-
損失函式視覺化
-
最優化
- 策略#1:隨機搜尋
-
策略#2:隨機區域性搜尋
-
策略#3:跟隨梯度 譯者注:上篇截止處
-
梯度計算
- 使用有限差值進行數值計算
-
微分計算梯度
-
梯度下降
-
小結
5. backprop notes
原文:
http://cs231n.github.io/optimization-2/
翻譯:
https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit
該筆記本將幫助讀者對反向傳播形成直觀而專業的理解。反向傳播是利用鏈式法則遞迴計算表示式的梯度的方法。理解反向傳播過程及其精妙之處,對於理解、實現、設計和除錯神經網路非常關鍵。內容裡列表如下:
- 簡介
-
簡單表示式和理解梯度
-
複合表示式,鏈式法則,反向傳播
-
直觀理解反向傳播
-
模組:Sigmoid例子
-
反向傳播實踐:分段計算
-
回傳流中的模式
-
使用者向量化操作的梯度
-
小結
6. Neural Nets notes 1
原文:
http://link.zhihu.com/?target=http%3A//cs231n.github.io/neural-networks-1/
翻譯:
https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21513367?refer=intelligentunit
該筆記介紹了神經網路的建模與結構,內容列表如下:
- 不用大腦做類比的快速簡介
-
單個神經元建模
- 生物動機和連線
-
作為線性分類器的單個神經元
-
常用的啟用函式
-
神經網路結構
- 層組織
-
前向傳播計算例子
-
表達能力設定層的
-
數量和尺寸
-
小節
-
參考文獻
7. Neural Nets notes 2
原文:
http://link.zhihu.com/?target=http%3A//cs231n.github.io/neural-networks-2/
翻譯:
https://zhuanlan.zhihu.com/p/21560667?refer=intelligentunit
該筆記介紹了資料的預處理,正則化和損失函式,內容列表如下:
- 設定資料和模型
- 資料預處理
-
權重初始化
-
批量歸一化(Batch Normalization)
-
正則化(L2/L1/Maxnorm/Dropout)
-
損失函式
-
小結
8. Neural Nets notes 3
原文:
http://cs231n.github.io/neural-networks-3/
翻譯:
https://zhuanlan.zhihu.com/p/21741716?refer=intelligentunit
https://zhuanlan.zhihu.com/p/21798784?refer=intelligentunit
該筆記講解了神經網路的動態部分,即神經網路學習引數和搜尋最優超引數的過程。內容列表如下:
- 梯度檢查
-
合理性(Sanity)檢查
-
檢查學習過程
- 損失函式
-
訓練集與驗證集準確率
-
權重:更新比例
-
每層的啟用資料與梯度分佈
-
視覺化 譯者注:上篇翻譯截止處
-
引數更新
- 一階(隨機梯度下降)方法,動量方法,Nesterov動量方法
-
學習率退火
-
二階方法
-
逐引數適應學習率方法(Adagrad,RMSProp)
-
超引數調優
-
評價
- 模型整合
- 總結
-
擴充引用
9. ConvNet notes
原文:
http://cs231n.github.io/convolutional-networks/
翻譯:
https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit
內容列表:
- 結構概述
-
用來構建卷積神經網路的各種層
- 卷積層
-
匯聚層
-
歸一化層
-
全連線層
-
將全連線層轉化成卷積層卷積神經網路的結構
-
層的排列規律
-
層的尺寸設定規律
-
案例學習(LeNet / AlexNet / ZFNet / GoogLeNet / VGGNet)
-
計算上的考量
-
擴充資源
二、完成了3個課程作業頁面的翻譯:
1. Assignment #1
原文:
http://cs231n.github.io/assignments2016/assignment1/
翻譯:
https://zhuanlan.zhihu.com/p/21441838?refer=intelligentunit
作業內容:實現 k-NN,SVM 分類器,Softmax 分類器和兩層神經網路,實踐一個簡單的影象分類流程。
2. Assignment #2
原文:
http://cs231n.github.io/assignments2016/assignment2/
翻譯:
https://zhuanlan.zhihu.com/p/21941485?refer=intelligentunit
作業內容:練習編寫反向傳播程式碼,訓練神經網路和卷積神經網路。
3. Assignment #3
原文:
http://cs231n.github.io/assignments2016/assignment3/
翻譯:
https://zhuanlan.zhihu.com/p/21946525?refer=intelligentunit
作業內容:實現迴圈網路,並將其應用於在微軟的 COCO 資料庫上進行影象標註。實現 DeepDream 等有趣應用。
另外,為了方便大家學習這門課,網易雲課堂已經有了中文字幕版本:
https://study.163.com/course/introduction.htm?courseId=1003223001#/courseDetail?tab=1
最後,CS231n 的所有視訊 + PPT 檔案,小編已經打包完畢,需要的同學請關注公眾號『AI有道』,在公眾號後臺直接回復:【231】即可!