編譯 | 周翔
史丹佛的 CS231n 是深度學習和計算機視覺領域的經典課程之一。近日,史丹佛又開放了由李飛飛主講的 CS231n Spring 2017 全部視訊課程。
在AI科技大本營微信公眾號會話回覆“史丹佛”,打包下載16張課程PDF
根據官網資訊,此次課程的主題為:Convolutional Neural Networks for Visual Recognition,一共包括 16 個視訊,主要對深度學習架構進行了詳細介紹,而且主要集中在端到端的模型,特別是影像分類任務上。在 10 周的課程中,學生將學習執行、訓練和除錯神經網路,並詳細瞭解計算機視覺的前沿領域。最終,學生將完成包含數百萬個引數的卷積神經網路的訓練任務,並將其應用於最大的影像分類資料集(ImageNet)。
除了李飛飛之外,此次課程還邀請了 Song Han 和 Ian Goodfellow 作為客座講師,兩人分別對加速深度學習的方法和硬體、以及對抗性樣本和對抗性訓練進行了詳細介紹。
課程官網:
http://cs231n.stanford.edu/
YouTube 地址:
Bilibili 視訊地址:
http://www.bilibili.com/video/av13260183/#page=1(由微博博主
@愛可可老師上傳)
先決條件
-
熟練掌握Python、C / C ++
-
大學微積分、線性代數
-
基本的概率和統計論
-
最好學習過 CS229 (機器學習課程)
課程簡介
不管是搜尋、影像理解、應用程式、繪圖、醫學、無人機、還是自動駕駛汽車,計算機視覺的應用已經無處不在。這些應用裡的核心任務大多是視覺識別,比如影像分類、定位、檢測等等。神經網路(又稱“深度學習”)方法的最新進展大大提高了這些最先進的視覺識別系統的效能。
本課程對深度學習架構進行了詳細介紹,主要集中在端到端的模型,特別是影像分類任務上。在 10 周的課程中,學生將學習執行、訓練和除錯自己的神經網路,並詳細瞭解計算機視覺的前沿領域。最終,學生將完成包含數百萬個引數的卷積神經網路的訓練任務,並將其應用於最大的影像分類資料集(ImageNet)。我們將重點介紹如何建立影像識別問題、相應的學習演算法(例如反向傳播)、訓練網路的技巧,並引導學生進行實際操作,通過最終的課程專案。本課程的背景和材料的大部分內容來自 ImageNet 挑戰賽。
課程大綱
課程1:應用於視覺識別的卷積神經網路簡介(Introduction to Convolutional Neural Networks for Visual Recognition)
簡介:課程1介紹了計算機視覺領域,討論了它的歷史和關鍵性的挑戰。 計算機視覺涵蓋了各種各樣的不同任務,儘管近期深度學習取得了一系列的成功,但我們離實現人類水平的視覺智慧的目標仍然很遠。
課程2:影像分類( Image Classification)
簡介:課程2提出了影像分類問題。我們討論了影像分類的固有難題,並介紹了資料驅動的方法。在該課程中,我們討論了兩個簡單的資料驅動的影像分類演算法:K-Nearest Neighbors 和 Linear Classifiers,並介紹了超引數和交叉驗證的概念。
課程3:損失函式和優化(Loss Functions and Optimization)
簡介:課程3繼續討論線性分類器。我們介紹了一種損失函式的概念,來量化我們對模型預測結果的不滿意的程度,並討論了影像分類中兩種常用的損失函式:多類SVM(支援向量機)損失和多項邏輯迴歸損失。我們介紹瞭如何用正則化的思想來避免過擬合。此外,我們還介紹了優化的概念和隨機梯度下降的演算法,並簡要討論了計算機視覺中的特徵表示。
課程4:神經網路簡介(Introduction to Neural NetworksB)
簡介:在課程4中,我們從線性分類器一直講到了全連線神經網路,並介紹了計算機梯度的反向傳播演算法,簡要討論了人工神經網路和生物神經網路的關聯。
課程5:卷積神經網路(Convolutional Neural Networks)
簡介:在課程5中,我們從全連線神經網路轉向卷積神經網路。我們討論了卷積網路發展過程中的一些關鍵里程碑,包括感知器、神經認知機、LeNet、以及AlexNet。我們介紹了卷積、池化、以及全連線層的概念,這些都是構成現代卷積網路的基礎。
課程6:訓練神經網路(一)(Training Neural Networks I)
簡介:在課程6中,我們討論了訓練現代神經網路中的許多實際問題。比如,我們討論了不同的啟用函式、資料預處理和權重初始化的重要性,以及 batch normalization。此外,我們還介紹了監控學習過程和選擇超引數的一些策略。
課程7:訓練神經網路(二)(Training Neural Networks II)
簡介:課程7繼續討論訓練神經網路過程中的實際問題。我們探討了在訓練期間經常用於優化神經網路的不同更新規則,以及用於大型神經網路(包括dropout)正則化的不同策略。此外,我們還討論了遷移學習和 finetuning(微調)。
課程8:深度學習軟體(Deep Learning Software)
簡介:在課程8中,我們討論瞭如何使用不同的軟體包進行深度學習,主要是 TensorFlow 和 PyTorch。 此外,我們還討論了 CPU 和 GPU 之間的一些區別。
課程9:卷積神經網路的結構(CNN Architectures)
簡介:在課程9中,我們討論了卷積神經網路的一些常見架構,主要是一些在 ImageNet 挑戰中表現良好的架構,包括 AlexNet、VGGNet、GoogLeNet、ResNet 以及其他有趣的模型。
課程10:迴圈神經網路(Recurrent Neural Networks)
簡介:在課程10中,我們討論瞭如何使用迴圈神經網路進行序列資料建模。我們展示瞭如何將迴圈神經網路用於語言建模和影像字幕,以及如何將 soft spatial attention 用在影像字幕模型中。此外,我們討論用於迴圈神經網路的不同架構,包括 LSTM(Long Short Term Memory)和 GRU(Gated Recurrent Units)。
課程11:檢測和分割(Detection and Segmentation)
簡介:在課程11中,我們展示瞭如何將卷積網路應用於其他核心計算機視覺任務,而不僅僅是影像分類。我們展示瞭如何將具備 downsampling 和 upsampling 層的完全卷積網路用於語義分割,以及多工損失(multitask losses)如何能夠用於定位和姿態估計。 我們討論了一些目標檢測的方法,包括基於區域的 R-CNN 系列方法和 single-shot 方法,如 SSD 和 YOLO。 最後,我們展示瞭如何將語義分割和物件檢測的想法結合起來進行例項分割(instance segmentation)。
課程12:視覺化和理解(Visualizing and Understanding)
在課程12中,我們討論了實現視覺化以及理解卷積神經網路內部機制的方法。我們還討論瞭如何使用卷積網路來生成新的影像,包括 DeepDream 以及藝術風格的遷移。
課程13:生成式模型(Generative Models)
簡介:在課程13中,我們將生成模型作為一種無監督學習的形式進行了討論。該課程涵蓋了自迴歸的 PixelRNN 和 PixelCNN 模型、傳統和變分自動編碼器(VAE)、以及生成對抗網路(GAN)。
課程14:深度加強學習(Deep Reinforcement Learning)
簡介:在課程14中,我們從監督學習轉向強化學習(RL),在這種學習中,agent 必須學會與環境互動,才能最大程度地提高回報。 我們使用馬爾可夫決策過程(MDPs)、policies、價值函式和Q值函式的語言來進行強化學習。我們討論了強化學習的不同演算法,包括 Q-Learning,策略梯度 和 Actor-Critic。我們展示了強化學習已經被用於進行 Atari 遊戲,並在 AlphaGo 中實現超越人類棋手的表現。
課程15:針對深度學習的高效方法和硬體(Efficient Methods and Hardware for Deep Learning)
簡介:在課程15中,客座講師 Song Han 討論了可用於加快深度學習訓練和推論過程的演算法和專用硬體。我們討論了剪枝、weight sharing、量化(quantization)等可加速推理過程的技術,以及並行化(parallelization)、混合精度(mixed precision)等可加速訓練過程的技術。此外,我們還討論專用於深度學習的硬體,如 GPU,FPGA 和 ASIC,包括 NVIDIA 最新 Volta GPU 中的 Tensor Core 以及Google 的 TPU。
課程16:對抗性樣本和對抗性訓練(Adversarial Examples and Adversarial Training)
簡介:在課程16中,客座講師 Ian Goodfellow 討論了深度學習中的對抗性例子。我們討論了為什麼深度網路和其他機器學習模型容易受到對抗性示例的影響,以及如何使用對抗性樣本來訓練機器學習系統。 此外,我們探討了針對對抗性樣本的潛在防禦,以及在沒有明確的對抗下,如何用對抗樣本來改進機器學習系統。