深度学习介绍
什么是深度学习
- multiple layers of nonlinear processing units
- the supervised or unsupervised learning of feature representations in each layer, with the layers forming a hierarchy from low-level to high-level features.
- include latent variables organized layer-wise in deep generative models
与传统的机器学习的区别是什么
深度学习可以自己通过最最基本的特征(simple features),利用更深的层(layers)对特征进行层层抽象。
神经网络的结构
神经元 | 神经网络 |
---|---|
- 神经元在横向和纵向组合成为一个网络;
- 每一层进行特征学习(feature representation) 由简单到复杂,从低等级特征到高等级特征
它能做什么
视觉问题:
1. 图像分类
举个例子:
在imagenet上的图像分类challenge上Alex提出的alexnet网络结构模型赢得了2012届的冠军。
在ILSVRC2010中,top-1和top-5的成绩分别为37.5%和17.0%;这个大的网络包含6千万个参数和65万的神经元;由5个卷基层,3个全连接层和最终分类器构成。利用了RELU,dropout,data augmentation等多种防止过拟合的技术。
之后出现了更多更trick更复杂的cnn结构,目前精确度最高的是inception v4.
【TODO】inception 简介
2. 人脸识别
上图是facebook的deepface人脸识别网络结构。首先使用3D模型来将人脸对齐,再使用CNN分类。
1. FaceNet:A Unified Embedding for Face Recognition and Clustering
2. DeepFace:Closing the Gap to Human-Level Performance in Face Verification
3. Multi-view Face Detection Using Deep Convolutional Neural Networks
3&4. 物体识别object detection&图像分割
graph LR
A[old MAP:0.33] --> B[RCNN:0.66]
物体识别主要需要解决两个问题:
1. 物体的位置
2. 这个物体是什么
object detection流程
- 一张图像生成1K~2K个候选区域(采用SS方法)
- 对每个候选区域,使用深度网络提取特征
- 特征送入每一类的SVM 分类器,判别是否属于该类
- 使用回归器精细修正候选框位置
主要方法有:
rcnn->spp-net->fast-rcnn->faster-rcnn->yolo->ssd->R-FCN
参见:
专栏:
http://blog.csdn.net/column/details/ym-alanyannick.html
Faster RCNN详解:
http://blog.csdn.net/u013832707/article/details/53641055
http://blog.csdn.net/ture_dream/article/details/52896452
语音识别:
graph LR
A[GMM:混合高斯模型] --> B[CNN:深度神经网络模型]
文本理解:
1. 词向量word2vec
word2vec是dnn用于神经网络的第一步,该方法流程:
1. 分词,每个词给一个初始化权重(词向量);
2. 使用skip-gram或者cbow方法进行逻辑回归,更新权重和词向量
对于词向量可以使用如下方式进行评价
vec(中国)减去vec(北京)约等于vec(英国)减去vec(伦敦)
2. 语义分析(recursive nn)
通过rnn学习树形结构得到语义向量。
参见 cs224d。
3. 机器翻译&问答系统(seq2seq)
图中用户的输入为ABC(A,B,C可以看做三个不同词),对话系统的输出为WXYZ。编码器:左边没有输出的RNN是一个编码器,该编码器按照句子中单词出现的顺序进行编码,前一个词的隐藏层信息反馈给当前词的隐藏信息。当遇到输入句子的结束符eos时,整个句子的编码就完成了,也就是RNN的隐藏层信息作为该句子的编码。解码器:右边带有输出层的为解码器,解码器每次只产生一个词;而产生的这个词会作为解码器的输入,同时上一时刻的隐藏层信息会反馈给当前时刻的隐藏,然后继续输出一个词,直到输出句子结束符eos为止。解码器的输入层的初始输入为eos,隐藏层的初始输入为编码器对输入句子的编码结果(也就是隐藏层信息)。
参见:http://blog.csdn.net/linmingan/article/details/51077837
游戏
阿尔法狗:
参见:http://news.mydrivers.com/1/474/474324.htm
工具简介
tensorflow
源自加州伯克利分校的Caffe被广泛应用,包括Pinterest这样的web大户。与TensorFlow一样,Caffe也是由C++开发,Caffe也是Google今年早些时候发布的DeepDream项目(可以识别喵星人的人工智能神经网络)的基础。
Theano
2008年诞生于蒙特利尔理工学院,Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras。
mxnet
Apache MXNet 是一种功能全面、可以灵活编程并且扩展能力超强的深度学习框架,支持包括卷积神经网络 (CNN) 与长短期记忆网络 (LSTM) 在内的顶尖深度模型。MXNet 是在 Apache-2 许可下以开源形式提供的框架,根源于学术界,由多所顶尖大学的研究人员精心合作和贡献而成。创始机构包括华盛顿大学和卡耐基梅隆大学
caffe
源自加州伯克利分校的Caffe被广泛应用,包括Pinterest这样的web大户。与TensorFlow一样,Caffe也是由C++开发,Caffe也是Google今年早些时候发布的DeepDream项目(可以识别喵星人的人工智能神经网络)的基础。
torch()
Torch诞生已经有十年之久,但是真正起势得益于去年Facebook开源了大量Torch的深度学习模块和扩展。Torch另外一个特殊之处是采用了不怎么流行的编程语言Lua(该语言曾被用来开发视频游戏)。
比较
开源信息
性能等比较
一句话,ml码农用keras或者tensorflow。
mxnet听说也挺好用,但是没用过。
tensorflow介绍
参见tensorflow 入门简介
http://blog.csdn.net/sadfasdgaaaasdfa/article/details/69947068
CNN:tensorflow实现的alexnet finetune
参见alexnet tensorflow finetune实现和简介:
http://blog.csdn.net/sadfasdgaaaasdfa/article/details/69947981