Note on Deep Learning
導覽
- 一文看懂25個神經網絡模型
- 深度學習教程:從感知器到深層網絡[3S]
- 感知機、前饋神經網、自動編碼器、有線波茲曼機(RBM)、堆疊式自動編碼器、深度信任網、卷積網
- (堆疊式)自動編碼器用於pre-training, 後面再用反向傳播來優化
- 深度神經網絡發展歷程全回顧:如何加速DNN運算?[3S]
- DL 和 AI 的從屬關係、DNN 發展歷史、DNN組成、DNN常見模型、DNN硬體
- 2015年,ImageNet獲獎作品ResNet 超過人類水平準確率
- ReLU 取代Sigmoid或tanh函數,訓練更簡單,準確度更高
- 馬里奧AI實現方式探索 ——神經網絡+增強學習[3S]
- MP model, 3 layer FF model, BP, DNN, CNN, Reinforcement Learning, Markov Decision Process, HMM, Q-learning
- 深度學習-LeCun、Bengio和Hinton的聯合綜述(上)
- ReLU 讓 DNN 學得更快,讓 DNN 訓練直接有監督,省掉無監督的pre-train 步驟
- 理解這25個概念,你的「深度學習」才算入門!
- Neuron, Weights, Bias, Activation Function, NN, Input/Output/Hidden layer, MLP, Forward Propagation, Cost Function, Gradient Descent, Learning Rate, BP, Bathes, Epochs, Dropout, Batch Normalization
- Filters, CNN, Pooling, Padding, Data Augmentation
- Recurrent Neuron, RNN, Vanishing Gradient Problem, Exploding Gradient Problem
- 激活函數 ReLU 用於隱藏層,Softmax 用於輸出層
- 辨別真假數據科學家必備手冊:深度學習45個基礎問題
- Geoffrey Hinton的傳奇人生:從「神經網絡之父」到「人工智慧教父」
CNN:
- 機器視角:長文揭秘圖像處理和卷積神經網絡架構
- 卷積神經網絡(CNN)新手指南
- 技术向:一文读懂卷积神经网络CNN
- Convolutional Neural Net 筆記
- 卷积神经网络(CNN)学习笔记1:基础入门
- (GoogleNet)深入卷積
- How to create filters for Deep Learning CNN's in successive layers in MATLAB?
- Randomly assigning weights for the different filters
- Jarrett, K., Kavukcuoglu, K. and Lecun, Y., 2009, September. What is the best multi-stage architecture for object recognition?. In 2009 IEEE 12th International Conference on Computer Vision (pp. 2146-2153). IEEE.
- Saxe, A., Koh, P.W., Chen, Z., Bhand, M., Suresh, B. and Ng, A.Y., 2011. On random weights and unsupervised feature learning. In Proceedings of the 28th international conference on machine learning (ICML-11) (pp. 1089-1096).
- Handcrafting the weights of the different filters to detect specific features during convolution. This approach is not all that interesting in the context of deep learning since it defeats the purpose of learning features without really engineering them!
- Learning filter weights using unsupervised training schemes. For example, there are literatures describing the use of auto encoders, deep belief nets, K-means clustering etc. for unsupervised learning of convolution filters.
- Masci, J., Meier, U., Cireşan, D. and Schmidhuber, J., 2011, June. Stacked convolutional auto-encoders for hierarchical feature extraction. In International Conference on Artificial Neural Networks (pp. 52-59). Springer Berlin Heidelberg.
- Lee, H., Grosse, R., Ranganath, R. and Ng, A.Y., 2009, June. Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations. In Proceedings of the 26th annual international conference on machine learning (pp. 609-616). ACM.
- Coates, A., Lee, H. and Ng, A.Y., 2010. An analysis of single-layer networks in unsupervised feature learning. Ann Arbor, 1001(48109), p.2.
- Randomly assigning weights for the different filters
RNN
Framework 用例
- 卷積神經網絡可視化:以Keras處理貓圖片為例
- 從理論到實踐,手把手教你如何用 TensorFlow 實現 CNN
- 深度學習(1)-如何在windows安裝Theano +Keras +Tensorflow並使用GPU加速訓練神經網路
- 深度學習(2)--使用Tensorflow實作卷積神經網路(Convolutional neural network,CNN)
- 深度學習(4)--使用Tensorflow實現類Lenet5手寫數字辨識
Object Detection
- YOLO — You Only Look Once 介紹
- Building a Deep Learning Camera with a Raspberry Pi and YOLO
- Run Object Detection using Deep Learning on Raspberry Pi 3 (1)
- Deep learning on the Raspberry Pi with OpenCV
其他應用
- How we teach computers to understand pictures | Fei Fei Li 李飛飛
- Google AI 大神李飛飛新論文:只要說出需求,AI 自動把圖畫出來
- 卷積神經網絡在自然語言處理的應用
- Convolutional Neural Networks for Speech Recognition[PDF]
Reinforcement Learning
Generative Adversarial Network, GAN:
- GAN学习指南:从原理入门到制作生成Demo
- 到底什么是生成式对抗网络GAN?
- Generative Adversarial Network — Youtube
- 教電腦畫畫:初心者的生成式對抗網路(GAN)入門筆記(TensorFlow + Python3)
- 機器學習中的貝氏定理:生成模型 (Generative Model) 與判別模型 (Discriminative Model)
- 如何理解深度学习中的deconvolution networks?
- Convolution arithmetic tutorial
- Transposed Convolution, Fractionally Strided Convolution or Deconvolution
Capsule:
- 淺析Geoffrey Hinton最近提出的Capsule計劃[5S]
- Hinton 與神經網絡
- 反向傳播、梯度下降
- 深度學習時代的敲門磚——RBM(受限玻爾茲曼機)
- 預訓練(無監督學習)
- 無監督學習和先驗知識
- CNN有一個很強的先驗關係:局部性
- 使用 ReLU 以及合適的初始化方法,用上 CNN,搭配上強勁的 GPU 之後,深度神經網絡可以照常訓練,根本不用 RBM 預訓練
- 前幾年吳恩達在 Google 讓神經網絡自動檢測視頻中的貓的時候,Google 內部的深度學習框架幾乎就是用來支持 RBM 等的訓練的。而現在 Google 開源的 TensorFlow 等主流框架中都沒有 RBM 的影子。很多從 TensorFlow 入手的新人估計也沒有聽過 RBM。
- 梯度流的沿革
- 神經解剖學與 Capsule 的由來
- Cortical minicolumn
- 先驗知識,對於機器學習,尤其是無監督學習,是極度重要的
- 倒轉的人臉、錯覺圖、
- 四面體謎題(tetrahedron puzzle)
- mental rotation, R
- 地圖辨識:澳洲 or 非洲
- 人的視覺系統會建立「坐標框架」,並且坐標框架的不同會極大地改變人的認知
- 物體和觀察者之間的關係(比如物體的姿態),應該由一整套激活的神經元表示,而不是由單個神經元,或者一組粗編碼(coarse-coded,這裡意思是指類似一層中,並沒有經過精細組織)的神經元表示。這樣的表示比較適合實現類似「坐標框架」的原理
- 同變性(Equivariance)和不變性(Invariance)
- CNN 同樣強調對空間的 invariance
- 對平移和旋轉的 invariance,其實是丟棄了「坐標框架」,Hinton 認為這是 CNN 不能反映「坐標框架」的重要原因
- 而 equivariance 不會丟失這些信息,它只是對內容的一種變換
- 兩種 equivariance
- 位置編碼(place-coded):視覺中的內容的位置發生了較大變化,則會由不同的 Capsule 表示其內容。
- 速率編碼(rate-coded):視覺中的內容為位置發生了較小的變化,則會由相同的 Capsule 表示其內容,但是內容有所改變。
- Dynamic Routing between Capsules
- 對於 MNIST 數據集,經過 unsupervised learning 後,只需要 25 個例子,就可以達到 98.3% 的識別準確率,並且解決了 CNN 識別重疊圖像困難等問題
- Hinton 與神經網絡
- Geoffrey Hinton talk "What is wrong with convolutional neural nets ?"
- 【Hinton碰撞LeCun】CNN有两大缺陷,要用capsule做下一代CNN
- CNN 的問題
- 结构的层次太少:神经元、神经网络层、整个神经网络
- 特征提取层与次抽样层交叉存取,将相同类型的相邻特征检测器的输出汇集到一起
- 反对池化的四点理由
- 不合乎我们对形态感知的心理认知
- 四面体Puzzle, 反向四面体Puzzle
- 视觉系统在抓住物体形状时,利用了坐标系
- 它在解决的是错误的问题
- Equivariance vs Invariance
- 卷积神经网络努力在让神经活动对视点上的小变化invariant,方法是通过在一个“池”内合并这些活动
- 它由这样一个事实驱动:最终的 label 需要 viewpoint-invariant
- 以equivariance为目标会更好:视点中的变化引发了神经活动中的相应变化
- 卷积神经网络努力在让神经活动对视点上的小变化invariant,方法是通过在一个“池”内合并这些活动
- 没有sub-sampling,卷积神经网络为discrete translations 给出了“place-coded” equivariance
- 两类 equivariance
- 如果一个低级别部分移动到了一个非常不同的位置,它会被不同的capsule表征——这是“place-coded” equivariance
- 如果一个部分仅移动了很短的距离,它仍会被同样的capsule表征,但capsule的输出将会变化——这是“rate-coded” equivariance
- 更高级别的 capsules 有更大的domain,所以低级别的place-coded equivariance 转化为了高级别的 rate-coded equivariance
- Equivariance vs Invariance
- 它无法使用基本的线性结构
- 目前的神经网络智慧
- 不同觀點得学习不同模型
- 这要求大量训练数据
- 一个好得多的方法
- 同样形状的图像流形在pixel intensities的空间里是高度非线性的
- 向流形是全局线性的空间转化(即,图像表征使用了明确的形态坐标)
- 这使得大量推算成为可能
- 目前的神经网络智慧
- 池化对于做动态routing也很差
- 我们需要 route 图像中的信息,好让神经网络可以理解
- 对于复杂形状来说,我们不希望用 small stride 复制所有位置的知识
- 眼球运动拥有伟大的routing机制,但速度慢
- 不合乎我们对形态感知的心理认知
- CNN 的問題
- 如何看待Geoffrey Hinton的言论,深度学习要另起炉灶,彻底抛弃反向传播?
- 深度学习依赖的反向传播算法 (back-prop) 在生物学上是很难成立的
- 大脑皮层中普遍存在一种称为 Cortical minicolumn 的柱状结构,其内部含有上百个神经元,并存在分层
- CNN同样强调对空间的 invariance,也就是对物体的平移之类的不敏感。这当然极大地提高了识别正确率,但是对于移动的数据(比如视频),或者我们需要检测物体具体的位置的时候,CNN本身很难做
- 人脑做到的是 equivariance ,也就是能够检测到平移、选转等等各种差异,但是能够“认识”到他们在某些视觉问题场景下是相同的,某些场景下应该有所区别,而不是像CNN一样为了追求单一的识别率,用 invariance 掩盖这些差异
- Hinton 指出,原先的 Pooling,类似于静态的 routing,仅仅把上面的结果原地交给下面一层的神经元
小樣本雜項:
Compare to other approaches
- 深度学习卡住了
- What is Machine Intelligence vs. Machine Learning vs. Deep Learning vs. Artificial Intelligence (AI)?
- Real Machine Intelligence with Clortex and NuPIC
- Off the Beaten Path - HTM-based Strong AI Beats RNNs and CNNs at Prediction and Anomaly Detection
Jetson TX2:
- Jetson TX1/TX2配置教程
- 開發你的酷炫裝備 Jetson TX1使用指南
- with PyTorch
- with TensorFlow
pyTorch:
Resource constraints issue:
- Core ML:
- MobileNet:
- ShuffleNet
- [X]SqueezeNet:
- Compression:
- Quantization:
Raspberry Pi:
- Deep learning on the Raspberry Pi with OpenCV
- Deep learning gateway on Raspberry Pi
- Building a Deep Learning Camera with a Raspberry Pi and YOLO
Mac:
- 在 Mac 上裝 Deep Learning 學習套件
- macOS for deep learning with Python, TensorFlow, and Keras
- How to setup Nvidia Titan XP for deep learning on a MacBook Pro with Akitio Node + Tensorflow + Keras
硬體加速:
- 谷歌 TPU 的強大與局限:TPU/GPU/CPU性能功耗全面對比
- Google 公布 TPU 細節後,AI 界怎麼看?
- 售價不到 100 美元,這隻 USB 居然藏一台野獸級深度學習計算機?
- AI 加速器自學組裝指南(一)──基本架構
Materials:
- Deep Learning — An MIT Press book by Ian Goodfellow and Yoshua Bengio and Aaron Courville
- UFLDL Tutorial — teach you the main ideas of Unsupervised Feature Learning and Deep Learning
- 入門 AI 從「深度學習」開始,五本必讀的深度學習聖經書籍
- Ian Goodfellow 的《Deep Learning》中文翻譯
- Learning AI if You Suck at Math — P4 — Tensors Illustrated (with Cats!)
- Learning AI if You Suck at Math — P5 — Deep Learning and Convolutional Neural Nets in Plain English!
- Learning AI If You Suck at Math — P6 — Math Notation Made Easy!
- Learning AI if You Suck at Math — P7 — The Magic of Natural Language Processing
- 想成為機器學習工程師?這份自學指南值得你收藏
Career:
AI與神經科學結合的研究
- 讓人上癮的MIT課程發佈:代號9.11,零基礎探祕人類大腦
- DeepMind发Nature子刊:通过元强化学习重新理解多巴胺
- DeepMind大突破!AI模拟大脑导航功能,学会像动物一样“抄近路”| Nature论文
可微編程
Swift for TensorFlow
Simulated Annealing
Learning Algorithm
- Alternatives to Back Propagation
- Genetic algorithms, MCMC, simulated annealing, simplex, BFGS, grid search, random guess-and-check.
- Learning without Backpropagation: Intuition and Ideas (Part 1)
- issues of backpropagation
- vanishing and exploding gradients
- sequential forward pass
- sequential backward pass
- parallelizing large networks (in space and/or time) difficult.
- Dropout reduces co-adaption from intra-layer neurons
- random feedback may help reduce co-adaption from inter-layer weights.
- issues of backpropagation
- Learning without Backpropagation: Intuition and Ideas (Part 2)
- Direct Feedback Alignment Provides Learning in Deep Neural Networks[PDF]