三百六十行,行行不仅出状元,还出“黑话”
今天,小P为大家倾情整理“深度学习行业黑话解析”
一起show起来!
(温馨提示:建议阅读时间8分钟)
“学习”概念区分
人工智能:人工智能的发展依赖于计算机科学,概念非常宽泛。总而言之,人工智能是由人类通过算法指导计算机达成某种计算方面的能力。
机器学习:通俗而言,是向机器输入数据和答案,最终获得方法的过程,是面向工程的方向,并且可以解决实际问题,借助学习创造力的机器达成智能解决方案。
表示学习:机器学习的一个方向,原始数据处理适合机器学习方法,处理完的数据丢给通用方法,通过转换坐标变化,获得更好解决方法。表示是指通过模型的参数,采用何种形式、何种方式来表示模型的输入观测样本X。表示学习指学习对观测样本X有效的表示。
深度学习:表示学习的一种方式,连续型获取更有意义的表示。深度是指模型和架构的深度,能够加深网络层次,从数十层到数百层,算法可以自动学习表示。深度学习不是真实大脑的模型,其中神经网络术语来自于神经生物学。
神经网络
CNN:卷积神经网络(convolutional neural networks),包括卷积层、池化层和输出层。卷积神经网络通常用来处理图像数据,假设输入数据的形状为28×28×3(28pixels×28pixels×RGB Value),那么对于传统的神经网络来说就会有2352(28×28×3)个变量。随着图像尺寸的增加,那么变量的数量就会急剧增加。因此,通过对图片进行卷积,可以减少变量的数目。
卷积层:(Convolutional layer),卷积神经网络中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
池化层:池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样。是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。有时图像太大,需要减少训练参数的数量,它被要求在随后的卷积层之间周期性地引进池化层。池化的唯一目的是减少图像的空间大小。
RNN: 循环神经网络(Recurrent neural Network),在神经网络的基础上,为了能更好处理序列信息,在前面的输入和后面的输入有关系的情况下使用。如下图,循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
DNN: 深度神经网络(Deep Neural Networks)是一种判别模型,可以使用反向传播算法进行训练,能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。深度神经网络通常都是前馈神经网络,但也有语言建模等方面的研究将其拓展到递归神经网络。
全连接:全连接层在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。
局部连接:卷积是局部化连接,并不是和前一层所有图块做链接,只是针对部分小窗口做连接。
BP反向传播算法:是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。反向传播要求有对每个输入值想得到的已知输出,来计算损失函数梯度。因此,它通常被认为是一种监督式学习方法,虽然它也用在一些无监督网络(如自动编码器)中。BP算法是反向(自上往下)来寻找路径的,要求人工神经元(或“节点”)的激励函数可微。
无监督逐层训练:每次训练一层隐结点,训练时将上一层隐结点的输入作为输出,本层隐结点的输出作为下一层隐节点的输入。
常用辅助工具
Pip:通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。
Python :是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单,它最大优势之一是丰富可跨平台的库,在UNIX,Windows和Macintosh兼容很好。
Docker:简单而言是虚拟机。Docker 使用 Google 公司推出的 Go 语言进行开发实现,基于 Linux 内核的 cgroup,namespace,以及AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。
VisualDL:VisualDL是一个面向深度学习任务设计的可视化工具,包含了scalar、参数分布、模型结构、图像可视化等功能。可以这样说:“所见即所得”。我们可以借助VisualDL来观察我们训练的情况,方便我们对训练的模型进行分析,改善模型的收敛情况。
技术术语
NLP:自然语言处理(Neuro-Linguistic Programming),根据处理信息层次和复杂性对NLP做分类,基本上是从三个层次不断深化: 构词词态、语法处理过程(描述语言系统相对构成定义)、语义理解和处理(更加深入认知概念)组合后产生。N (Neuro) 指的是神经系统,包括大脑和思维过程。L (Linguistic) 是指语言,更准确点说,是指从感觉信号的输入到构成意思的过程。P (Programming) 是指为产生某种后果而要执行的一套具体指令。即指我们思维上及行为上的习惯,就如同电脑中的程序,可以透过更新软件而改变。
OCR: 光学字符识别(Optical Character Recognition),是通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术。
API: 应用程序编程接口是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
序列标注:对输入序列中每个元素在输出序列中给出对应的标签,根据序列标注结果可以得到实体边界和实体类别。类似的,分词、词性标注、语块识别、语义角色标注等任务可以通过序列标注解决。
词向量:自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,词向量就是用来将语言中的词进行数学化的一种方式
Tensor:即张量,是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。在PaddlePaddle中,Tensor类来替换Vector和Matrix,并支持高维数据且更为随意的集合。
过拟合:表现很好的学习器,能从训练样本中尽可能学出适用于所有潜在样本的“普遍规律“,这样才能在遇到新样本时做出正确的判别。而如果学习器把训练样本自身的一些特点当成所有潜在样本具备的一般性质,就会导致泛化性能下降,此时即为过拟合的情况。
收敛:在数学的函数中,指的是向某一值趋近。而在机器学习中,收敛经常用于Visual可视化工具中,用于观察算法的收敛程度。
训练集:帮助训练模型,通过训练集的数据让我们确定拟合曲线的参数。
测试集: 为了测试已经训练好的模型的精确度。在训练模型的时候,因为参数全是根据现有训练集里的数据进行修正、拟合,有可能会出现过拟合的情况,即这个参数仅对训练集里的数据拟合比较准确,这个时候再有一个数据需要利用模型预测结果,准确率或将变低。
验证集:用来做模型选择,做模型的最终优化及确定,用来辅助模型的构建。
内存溢出:通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存所承受大小。
Edl:弹性深度学习(Elastic deep learning)工业深度学习的挑战之一是需要大量的计算能力。研究实验室和公司经常构建由SLURM,MPI或SGE管理的GPU集群。这些集群要么运行一个提交的作业(如果它需要的比闲置的资源要少)或者将作业挂起一段难以预估的时间。这种方法有其缺点:在有99个可用节点和一个需要100个提交作业的例子中,作业必须等待而不能使用任何可用节点。因而,Paddle Fluid通过弹性深度学习,能够有效提升GPU使用效能,这使得在Web服务器作业中运行更多的进程成为可能,而在网络开销较高的时间段内深度学习则更少,然后在网络流量较低时优先进行深度学习。
Onnx:一种模型表示的规范。如果每个框架都可以把模型转成onnx格式的,而且支持onnx格式模型的inference,那么深度学习模型可以不受框架限制的使用。
PS:如果觉得show很棒,请转给小伙伴一起欣赏哟,顺便点个赞~~
*为了方便大家使用PaddlePaddle,遇到问题可在中文社区提问,值班同学将在24小时内响应!更有精品案例、课程提供,让大家学习使用框架,轻松无忧!直达链接:
https://ai.baidu.com/forum/topic/list/168
本文分享 CSDN - 飞桨PaddlePaddle。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。