AI笔记-基础知识
文章目录
-
AI学习框架
-
硬件
-
标准
-
应用场景
-
- 语音识别
- 计算机视觉
- 自然语言处理
-
数据集
-
基本网络
-
-
MLP(multi layer perception)多层感知
-
- 感知器
- 激活函数
- 输入层、隐藏层、输出层
- 正向传播和反向传播求导
-
CNN(Convolution Neural Network)卷积神经网络
-
- 图像的几个不变性
- 卷积层
- 池化层
- Inception
- Flatten层和全连接层
- 跳层连接
- 经典CNN
-
RNN(Recurrent Nerual Network)循环神经网络
-
-
几种有效的神经网络结构
-
- Inception结构
- ResNet结构
- seq2seq
- Attention
-
深度学习基础架构
-
深度学习开发工具
-
深度学习辅助工具
-
- MMdnn
-
深度学习云平台
AI学习框架
Google的TensorFlow
亚马逊的MxNet
微软的 CNTK
百度的 PaddlePaddle
Caffe2 在TensorFlow发布之前其一直是深度学习领域最为火热的项目。Caffe2拥有大量已经训练好了的模型,如AlexNet,VGG,Inception,收藏在Modle Zoo中。
Facebook 的Pytorch
硬件
深度学习的执行作业需要大量的矩阵和向量计算,基于GPU,CPU,FPGA,ASIC等,GPU适合模型训练,目前主流的是NVIDIA GPU。
标准
学习框架有很多种,慢慢的就积累了很多基于不同框架的模型,所以模型和框架之间转换是急需解决的问题;所以就有了Microsoft和Facebook发布了一个全新的开源项目-ONNX,欲借此打造一个开放的深度学习工具生态系统。
应用场景
语音识别
计算机视觉
身份识别,直播美颜,安检,车牌定位,门禁系统,人脸识别,表情识别
自然语言处理
比如机器翻译,聊天机器人,问答系统,情感分析
数据集
因为深度学习需要进行大量的训练,训练就需要数据集,所以就有了公共数据集
ImageNet, Coco,MINIST等
基本网络
深度学习网络大多由很多基本网络结果组成而来,基本网络有以下这些:
MLP(multi layer perception)多层感知
MLP的结构特点是输入层和输出层之间存在一个或者多个隐藏层,输入层用于获取外部输入信号,只有隐藏层和输出层的神经元为计算节点,每层都对上一次的输入进行加权处理,然后通过激活函数进行非线性变换,参数通过反向传播进行训练。
感知器

激活函数
常见的激活函数:sigmoid,thanh,ReLU,softplus
Sigmoid: f(x) = 1/(1+e(-x))
ReLU: F(x) = max(0,x)
输入层、隐藏层、输出层

正向传播和反向传播求导
CNN(Convolution Neural Network)卷积神经网络
CNN是深度学习技术中重要的网络结构之一。
CNN最初引用于图像数据,根据图像数据特点进行近似和优化,除了通用的网络结构,CNN还包含了几个特有的网络组件,如,卷积层,池化层,全连接层等,神经网络参数通过反向 传播算法进行训练。
通过深度学习CNN的处理方式,我们可以发现CNN相比于图像处理算法的优点在于,CNN可以直接输入原始图像,这就避免了对图像复杂的前期预处理和特征工程。
图像的几个不变性
平移不变性,旋转/视觉不变性,尺度不变性
卷积层
卷积层是CNN中的重要组件,它不仅能够通过各种卷积核提取图像特征,还能够通过卷积优化传统全连接层的计算量。
-
多滤波器
比如有的滤波器可进行边缘检测、锐化、边框模糊、高斯模糊,因此,使用多个不同的滤波器对同一张图片进行多次特征提取,可以获得不同的特征图。 -
权值共享
采用卷积的方式,可以减少一定参数,但是参数依然很多,采用权值共享的方式可以进一步减少参数。
池化层
池化(pooling)的目的:通过卷积获得特征后,希望利用这些特征进行分类。理论上可以利用所有的特征去训练分类器,但是这样做面临着计算量的挑战。同时容易出现过拟合。因此可以对不同位置的特征进行聚合统计进而表示一个更大的图像。聚合统计特征不仅具有低的多的维度(相比使用提取到的所有特质),同时还会改善结果(不容易过拟合)。这种聚合的操作称作为池化(pooling)。
常用的池化算法有最大池化(max pooling),平均池化 。
Inception
inception目的:消除尺寸对识别结果的影响。
Flatten层和全连接层
flatten 展平,使平坦。
跳层连接
跳层连接允许不同层级之间的因素进行信息交互、综合判断。
经典CNN
-
LeNet
-
AlexNet 相比LeNet,网络层次更深
-
ZFNet 增加了中间卷积层的尺寸,使得第一层的stride和滤波器尺寸更小。
-
GoogleNet 减少参数数量,最后一层使用Max pooling层代替了全连接层,同时引入了inception V4模块的使用。
-
VGGNet 只使用了3x3卷积层和2x2 pooling层进行深度神经网络结构连接。
-
ResNet 引入了跳层连接和Batch Normalization
-
DenseNet
发展趋势: -
使用更小尺寸滤波器的卷积层和池化层。
-
去掉参数过多的全连接层。
-
Inception
RNN(Recurrent Nerual Network)循环神经网络
RNN应用于时序数据,例如文本和语音,RNN针对时序数据特点进行相应的网络结构设计,RNN由多个cell按照时序串联,每个Cell都可以通过LSTM,GRU等进行实现。
RNN的网络结构形式
- 一对一形式(One to One)
- 多对一形式 (Many to One)
- 一对多形式(One to Many)
- 多对多形式 (Many to Many),这种结构又称作Encoder-Decoder,也可称作Seq2Seq模型。
几种有效的神经网络结构
Inception结构
Inception的主要目标在于更有效地提取特征,减少参数量。

随着深度的增加,CNN所带有的特征也更加丰富,因此特征维度会变的更大,在这种情况下,单纯地增加CNN特征维度会带来训练上的问题,这种方式不适合神经网络在深度上进行扩展,因此产生了Inception子结构。这种子结构可以将不同大小的卷积核心进行组合,这样就可以使得神经网络的训练更加高效。
ResNet结构
Inception解决了特征的问题,但其在网络深度上的进一步扩展,需要更加有效的网络结构,这就出现了再深度神经网络之上添加支路的过程。

跨层之路的加入使得深度神经网络更加接近于浅层神经网络,这使得训练更加有效解决了训练过程中的梯度消失问题。
seq2seq
在自然语言处理(NLP)中,比如翻译,常见的结构就是seq2seq结构,这种结构通常是由两个RNN结构组成。

这两个RNN分为encoder和decoder。两者之间的桥梁是encoder最终产生的状态向量,状态向量传入decoder中作为其的第一个状态,从而奖励前两个网络之间的联系。当然,encoderDecoder结构并不仅限于RNN,CNN同样也可以完成。
Attention
用于自然语言处理的神经网络通常分为encoder和decoder,它们通常是两个独立的RNN。但是语言长度的不确定性,我们有时需要将一个很长的语句通过encoder压缩成一个固定长度的向量。这显然是不合常理的,因此,Attention应运而生,其使得encoder每一步的输出都有可能参与decoder的输出

深度学习基础架构
-
PAI
Microsoft开源的Platform for AI -
XLearning
奇虎360的XLearning
深度学习开发工具
- Visual studio tools for AI & Visual Studio code tools for ai
深度学习辅助工具
MMdnn
MMdnn是一套工具集,其包含模型转换,模型可视化等,支持Caffe,Tensorfllow,CNTK,MxNet,Pytorch,Keras,CoreML模型之间的转换。
深度学习云平台
Azure是Microsoft的公有云平台,其提供以下服务
GPU虚拟机
模型训练服务
模型管理和部署
参考 :【深度学习核心技术、工具与案例解析】 高彦杰 于子叶 著
