传统机器学习与深度学习
尽管深度学习在学习能力上优于传统的机器学习,但是深度学习中仍有机器学习的影子,深度学习的理论是离不开传统的机器学习的。比如线性模型,卷积核,ReLU激活函数,softmax等,这些都应用在深度学习中的神经网络中。下面简单介绍一下传统机器学习与深度学习的对比。
传统机器学习建立过程
数据预处理 特征提取 选择分类器 |
||
归一化 降维 去噪 |
人工设计模式 图像:SIF, LBP, Fisher, Gabor,Hog 语言:MFCC, 小波, Word2vec |
SVM, 决策树,随机森林,贝叶斯网络,线性回归,聚类 |
深度学习建立过程
数据准备 设计模型 训练 |
||
数据,label |
CNN, RNN CNN+RNN |
调结构 损失函数 训练参数 |
深度学习应用特点
优点:
学习能力强,覆盖范围广,适应性好,可移植性好(例如迁移学习)
缺点:
计算量大,便携性差,硬件需求高,模型设计复杂,有可能被“hack” – 有可能将某些图案识别成别的物体,长于计算,弱于算计
深度学习框架比较
框架 |
语言 |
文档资料 |
CNN兼容 |
RNN兼容 |
上手难易 |
速度 |
并行支持 |
Keras兼容 |
支持团队 |
Theano |
Python/C++ |
++ |
++ |
++ |
+ |
++ |
+ |
+ |
蒙特利尔大学 |
Tensor Flow |
Python |
+++ |
+++ |
++ |
+++ |
++ |
++ |
+ |
|
Torch/Pytorch |
Lua, Python |
+ |
+++ |
++ |
++ |
+++ |
++ |
|
|
Caffe |
C++ |
+ |
++ |
+ |
+ |
+ |
贾杨清,加州伯克利 |
||
MXNet |
Python,R,Julia |
++ |
++ |
+ |
++ |
++ |
+++ |
+ |
李沐,陈天奇等,Amazon |
Neon |
Python |
+ |
++ |
+ |
+ |
++ |
+ |
Intel |
|
CNTK |
C++ |
+ |
++ |
+++ |
+ |
++ |
+ |
Microsoft |
TensorFlow
文档丰富,适合初学者,安装非常方便,谷歌支持,长期有效,自动求导,只需关注模型设计,Keras支持,方便迅速开发。
TensorFlow的具体应用可以看一下中文的一些网站比如TensorFlow中文社区http://www.tensorfly.cn/tfdoc/how_tos/overview.html,还有c语言中文网的http://c.biancheng.net/tensorflow/,当然也可以学习英文的相关文档。
深度学习基本概念的了解
人工神经网络又叫神经网络,是借鉴了生物神经网络的工作原理形成的一种数学模型。神经网络是机器学习诸多算法中的一种,它既可以用来做有监督的任务,如分类、视觉识别等,也可以用作无监督的任务。同时它能够处理复杂的非线性问题,它的基本结构是神经元,如下图所示:这是简单的神经元只有一层
其中,x1、x2、x3代表输入,中间部分为神经元,而最后的hw,b(x)是神经元的输出。整个过程可以理解为输入——>处理——>输出。
由多个神经元组成的就是神经网络:它由输入层,隐藏层和输出层组成,如下图是鸢尾花数据集经过训练的结果,当然此图是盗用别的博客的:
卷积核是图像处理的基本算子,卷积神经网络将卷积核应用到了神经网络中,可以从下图了解一下卷积的大概过程:
接下来就是对深度学习开始系统的学习一番了。