[TOC]
深度学习的历史
1958年:心理学家Rosenblatt提出感知机(Perceptron)
它是一个线性模型。
1969年:有人说感知机是线性模型,具有局限性。
1980年代:多层感知机(Multi-layer Perceptron)
和当今的神经网络是没有本质差别的。
1986年:Hinton提出反向传播算法(Backpropagation)
但是超过3个隐藏层的神经网络,还是训练不出好的结果。
1989年:有人提出一个隐藏层就可以得到任何函数,为什么要多层?
多层感知机慢慢淡出大家的视野。
2006年:受限玻尔兹曼机初始化(RBM Initialization)
Hinton提出用受限玻尔兹曼机做初始化,很多人觉得这是个大突破,但实际上用处并不大。
至少让多层感知机回到大家的视野。
2009年:GPU
2011年:神经网络用于语音识别
2012年:神经网络技术赢得ILSVRC(ImageNet Large Scale Visual Recognition Challenge)
深度学习的三个步骤
和机器学习一样:
确定模型(Model)/函数集(Function Set),在深度学习中就是定义一个神经网络。
不同的连接会构成多样的网络结构。
确定如何评价函数的好坏
如果是多分类,那和Classification一章中一样,计算每个样本预测结果与Ground Truth的交叉熵,然后求和,即为Loss。
确定如何找到最好的函数
还是Gradient Descent。
神经网络模型对应的函数比较复杂,而反向传播算法(Backpropagation)是一个很有效的计算神经网络梯度的方法。
神经网络的结构
输入层(Input Layer)
实际上就是输入,并不是真正的“层”。
隐藏层(Hidden Layers)
输入层和输出层之间的层。Deep指有很多隐藏层,多少层才算Deep并没有统一标准。
可以看成特征提取器(Feature Extractor),作用是代替特征工程(Feature Engineering)。
输出层(Output Layer)
最后一层。
可以看成分类器
全连接前馈神经网络
即Fully Connected Feedforward Neural Network,FFN。
- 全连接是指每个神经元与上一层的所有神经元相连。
- 前馈神经网络(FNN,Feedforward Neural Network)是指各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层,各层间没有反馈。
一些网络
其中Residual Net并不是一般的全连接前馈神经网络
网络结构 | 提出年份 | 层数 | ImageNet错误率 |
---|---|---|---|
AlexNet | 2012 | 8 | 16.4% |
VGGNet | 2014 | 19 | 7.3% |
GoogleNet | 2014 | 22 | 6.7% |
Residual Net | 2015 | 152 | 3.57% |
机器学习和深度学习面对的不同问题
- 在机器学习中,人类需要手工做特征工程(Feature Engineering),人类需要思考如何提取特征。
- 有了深度学习以后,人类可以不做特征工程,但也遇到了新的问题:人类需要设计合适的网络结构。
这两个问题哪个更容易呢?可能后者更容易些,比如在图像识别、语音识别任务中,人类可能并不知道自己是如何识别图像和语音的,就无法通过符号主义进行特征工程。
关于深度学习的一些疑问
虽然深度学习的的准确度很高,但是它使用的参数更多,参数多、准确度高也是很正常的事,所以有什么特别之处呢?
只用一个神经元足够多的隐藏层,这个模型就包括了任意函数,那为什么不这么做而非要深度呢?为什么要是Deep而不是Fat呢?
如何设计神经网络的结构?
多少层?每一层有多少个神经元?
只能凭经验(实验结果)和直觉,当然可以让机器自己去找网络结构,即网络架构搜索(NAS,Network Architecture Search)。
必须用全连接前馈神经网络吗?
不是。比如卷积神经网络(Convolutional Neural Networks, CNN)。
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸鱼
知乎(zhihu.com):@臭咸鱼
博客园(cnblogs.com):@臭咸鱼
B站(bilibili.com):@绝版臭咸鱼
微信公众号:@臭咸鱼
转载请注明出处,欢迎讨论和交流!