理解这25个概念,你的人工智能,深度学习,机器学习才算入门!

人工智能,深度学习,机器学习—不管你在作什么,若是你对它不是很了解的话—去学习它。不然的话不用三年你就跟不上时代的潮流了。

                                                                                            ——马克.库班git

 

马克.库班的这个观点可能听起来很极端——可是它所传达的信息是彻底正确的! 咱们正处于一场革命的旋涡之中——一场由大数据和计算能力引发的革命。github

 

只须要一分钟,咱们来想象一下,在20世纪初,若是一我的不了解电力,他/她会以为如何?你会习惯于以某种特定的方式来作事情,日复一日,年复一年,而你周围的一切事情都在发生变化,一件须要不少人才能完成的事情仅依靠一我的和电力就能够轻松搞定,而咱们今天正以机器学习和深度学习的方式在经历一场类似的旅程。算法

 

因此,若是你尚未探索或理解深度学习的神奇力量——那你应该从今天就开始进入这一领域。网络

 

谁应该读这篇文章?架构

 

若是你是一个想学习或理解深度学习的人,这篇文章是为你量身定作的。在本文中,我将介绍深度学习中经常使用的各类术语。机器学习

 

若是你想知道我为何要写这篇文章——我之因此在写,是由于我但愿你开始你的深度学习之旅,而不会遇到麻烦或是被吓倒。当我第一次开始阅读关于深度学习资料的时候,有几个我据说过的术语,可是当我试图理解它的时候,它倒是使人感到很迷惑的。而当咱们开始阅读任何有关深度学习的应用程序时,总会有不少个单词重复出现。函数

 

在本文中,我为你建立了一个相似于深度学习的字典,你能够在须要使用最经常使用术语的基本定义时进行参考。我但愿在你阅读这篇文章以后,你就不会再受到这些术语的困扰了。学习

 

与主题相关的术语大数据

 

为了帮助你了解各类术语,我已经将它们分红3组。若是你正在寻找特定术语,你能够跳到该部分。若是你是这个领域的新手,那我建议你按照我写的顺序来通读它们。优化

 

1.神经网络基础(Basics of Neural Networks)

                                 ——经常使用激活函数(Common Activation Functions)

 

2.卷积神经网络(Convolutional Neural Networks)

 

3.循环神经网络(Recurrent Neural Networks)

 

神经网络基础

 

1)神经元(Neuron)——就像造成咱们大脑基本元素的神经元同样,神经元造成神经网络的基本结构。想象一下,当咱们获得新信息时咱们该怎么作。当咱们获取信息时,咱们通常会处理它,而后生成一个输出。相似地,在神经网络的状况下,神经元接收输入,处理它并产生输出,而这个输出被发送到其余神经元用于进一步处理,或者做为最终输出进行输出。

 

 

2)权重(Weights)——当输入进入神经元时,它会乘以一个权重。例如,若是一个神经元有两个输入,则每一个输入将具备分配给它的一个关联权重。咱们随机初始化权重,并在模型训练过程当中更新这些权重。训练后的神经网络对其输入赋予较高的权重,这是它认为与不那么重要的输入相比更为重要的输入。为零的权重则表示特定的特征是微不足道的。

 

让咱们假设输入为a,而且与其相关联的权重为W1,那么在经过节点以后,输入变为a * W1

 

 

3)误差(Bias)——除了权重以外,另外一个被应用于输入的线性份量被称为误差。它被加到权重与输入相乘的结果中。基本上添加误差的目的是来改变权重与输入相乘所得结果的范围的。添加误差后,结果将看起来像a* W1 +误差。这是输入变换的最终线性份量。

 

4)激活函数(Activation Function)——一旦将线性份量应用于输入,将会须要应用一个非线性函数。这经过将激活函数应用于线性组合来完成。激活函数将输入信号转换为输出信号。应用激活函数后的输出看起来像f(a * W1 + b),其中f()就是激活函数。

 

在下图中,咱们将“n”个输入给定为X1到Xn而与其相应的权重为Wk1到Wkn。咱们有一个给定值为bk的误差。权重首先乘以与其对应的输入,而后与误差加在一块儿。而这个值叫作u。

 

U =ΣW* X+ b

 

激活函数被应用于u,即 f(u),而且咱们会从神经元接收最终输出,如yk = f(u)。

 

 

经常使用的激活函数

 

最经常使用的激活函数就是Sigmoid,ReLU和softmax

 

a)Sigmoid——最经常使用的激活函数之一是Sigmoid,它被定义为:

 

 

来源:维基百科

 

Sigmoid变换产生一个值为0到1之间更平滑的范围。咱们可能须要观察在输入值略有变化时输出值中发生的变化。光滑的曲线使咱们可以作到这一点,所以优于阶跃函数。

 

b)ReLU(整流线性单位)——与Sigmoid函数不一样的是,最近的网络更喜欢使用ReLu激活函数来处理隐藏层。该函数定义为:

 

 

当X>0时,函数的输出值为X;当X<=0时,输出值为0。函数图以下图所示:

 

来源:cs231n

 

使用ReLU函数的最主要的好处是对于大于0的全部输入来讲,它都有一个不变的导数值。常数导数值有助于网络训练进行得更快。

 

c) Softmax——Softmax激活函数一般用于输出层,用于分类问题。它与sigmoid函数是很相似的,惟一的区别就是输出被归一化为总和为1。Sigmoid函数将发挥做用以防咱们有一个二进制输出,可是若是咱们有一个多类分类问题,softmax函数使为每一个类分配值这种操做变得至关简单,而这能够将其解释为几率。

 

以这种方式来操做的话,咱们很容易看到——假设你正在尝试识别一个可能看起来像8的6。该函数将为每一个数字分配值以下。咱们能够很容易地看出,最高几率被分配给6,而下一个最高几率分配给8,依此类推……

 

 

5)神经网络(Neural Network)——神经网络构成了深度学习的支柱。神经网络的目标是找到一个未知函数的近似值。它由相互联系的神经元造成。这些神经元具备权重和在网络训练期间根据错误来进行更新的误差。激活函数将非线性变换置于线性组合,而这个线性组合稍后会生成输出。激活的神经元的组合会给出输出值。

 

一个很好的神经网络定义——

 

“神经网络由许多相互关联的概念化的人造神经元组成,它们之间传递相互数据,而且具备根据网络”经验“调整的相关权重。神经元具备激活阈值,若是经过其相关权重的组合和传递给他们的数据知足这个阈值的话,其将被解雇;发射神经元的组合致使“学习”。

 

6)输入/输出/隐藏层(Input / Output / Hidden Layer)——正如它们名字所表明的那样,输入层是接收输入那一层,本质上是网络的第一层。而输出层是生成输出的那一层,也能够说是网络的最终层。处理层是网络中的隐藏层。这些隐藏层是对传入数据执行特定任务并将其生成的输出传递到下一层的那些层。输入和输出层是咱们可见的,而中间层则是隐藏的。

 

来源:cs231n

 

7)MLP(多层感知器)——单个神经元将没法执行高度复杂的任务。所以,咱们使用堆栈的神经元来生成咱们所须要的输出。在最简单的网络中,咱们将有一个输入层、一个隐藏层和一个输出层。每一个层都有多个神经元,而且每一个层中的全部神经元都链接到下一层的全部神经元。这些网络也能够被称为彻底链接的网络。

 

 

8)正向传播(Forward Propagation)——正向传播是指输入经过隐藏层到输出层的运动。在正向传播中,信息沿着一个单一方向前进。输入层将输入提供给隐藏层,而后生成输出。这过程当中是没有反向运动的。

 

9)成本函数(Cost Function)——当咱们创建一个网络时,网络试图将输出预测得尽量靠近实际值。咱们使用成本/损失函数来衡量网络的准确性。而成本或损失函数会在发生错误时尝试惩罚网络。

 

咱们在运行网络时的目标是提升咱们的预测精度并减小偏差,从而最大限度地下降成本。最优化的输出是那些成本或损失函数值最小的输出。

 

若是我将成本函数定义为均方偏差,则能够写为:

 

C= 1/m ∑(y–a)^2,

 

其中m是训练输入的数量,a是预测值,y是该特定示例的实际值。

 

学习过程围绕最小化成原本进行。

 

10)梯度降低(Gradient Descent)——梯度降低是一种最小化成本的优化算法。要直观地想想,在登山的时候,你应该会采起小步骤,一步一步走下来,而不是一会儿跳下来。所以,咱们所作的就是,若是咱们从一个点x开始,咱们向下移动一点,即Δh,并将咱们的位置更新为x-Δh,而且咱们继续保持一致,直到达到底部。考虑最低成本点。

 

图:https://www.youtube.com/watch?v=5u4G23_OohI

 

在数学上,为了找到函数的局部最小值,咱们一般采起与函数梯度的负数成比例的步长。

 

你能够经过这篇文章来详细了解梯度降低。

 

11)学习率(Learning Rate)——学习率被定义为每次迭代中成本函数中最小化的量。简单来讲,咱们降低到成本函数的最小值的速率是学习率。咱们应该很是仔细地选择学习率,由于它不该该是很是大的,以致于最佳解决方案被错过,也不该该很是低,以致于网络须要融合。

 

http://cs231n.github.io/neural-networks-3/

 

12)反向传播(Backpropagation)——当咱们定义神经网络时,咱们为咱们的节点分配随机权重和误差值。一旦咱们收到单次迭代的输出,咱们就能够计算出网络的错误。而后将该错误与成本函数的梯度一块儿反馈给网络以更新网络的权重。 最后更新这些权重,以便减小后续迭代中的错误。使用成本函数的梯度的权重的更新被称为反向传播。

 

在反向传播中,网络的运动是向后的,错误随着梯度从外层经过隐藏层流回,权重被更新。

 

13)批次(Batches)——在训练神经网络的同时,不用一次发送整个输入,咱们将输入分红几个随机大小相等的块。与整个数据集一次性馈送到网络时创建的模型相比,批量训练数据使得模型更加广义化。

 

14)周期(Epochs)——周期被定义为向前和向后传播中全部批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。

 

你能够选择你用来训练网络的周期数量,更多的周期将显示出更高的网络准确性,然而,网络融合也须要更长的时间。另外,你必须注意,若是周期数过高,网络可能会过分拟合。

 

15)丢弃(Dropout)——Dropout是一种正则化技术,可防止网络过分拟合套。顾名思义,在训练期间,隐藏层中的必定数量的神经元被随机地丢弃。这意味着训练发生在神经网络的不一样组合的神经网络的几个架构上。你能够将Dropout视为一种综合技术,而后将多个网络的输出用于产生最终输出。

 

来源:Original paper

 

16)批量归一化(Batch Normalization)——做为一个概念,批量归一化能够被认为是咱们在河流中设定为特定检查点的水坝。这样作是为了确保数据的分发与但愿得到的下一层相同。当咱们训练神经网络时,权重在梯度降低的每一个步骤以后都会改变,这会改变数据的形状如何发送到下一层。

 

 

可是下一层预期分布相似于以前所看到的分布。 因此咱们在将数据发送到下一层以前明确规范化数据。

 

 

卷积神经网络

 

17)滤波器(Filters)——CNN中的滤波器与加权矩阵同样,它与输入图像的一部分相乘以产生一个回旋输出。咱们假设有一个大小为28 * 28的图像,咱们随机分配一个大小为3 * 3的滤波器,而后与图像不一样的3 * 3部分相乘,造成所谓的卷积输出。滤波器尺寸一般小于原始图像尺寸。在成本最小化的反向传播期间,滤波器值被更新为重量值。

 

参考一下下图,这里filter是一个3 * 3矩阵:

与图像的每一个3 * 3部分相乘以造成卷积特征。

 

 

18)卷积神经网络(CNN)——卷积神经网络基本上应用于图像数据。假设咱们有一个输入的大小(28 * 28 * 3),若是咱们使用正常的神经网络,将有2352(28 * 28 * 3)参数。而且随着图像的大小增长参数的数量变得很是大。咱们“卷积”图像以减小参数数量(如上面滤波器定义所示)。当咱们将滤波器滑动到输入体积的宽度和高度时,将产生一个二维激活图,给出该滤波器在每一个位置的输出。咱们将沿深度尺寸堆叠这些激活图,并产生输出量。

 

你能够看到下面的图,以得到更清晰的印象。

 

 

19)池化(Pooling)——一般在卷积层之间按期引入池层。这基本上是为了减小一些参数,并防止过分拟合。最多见的池化类型是使用MAX操做的滤波器尺寸(2,2)的池层。它会作的是,它将占用原始图像的每一个4 * 4矩阵的最大值。

 

来源:cs231n

 

你还可使用其余操做(如平均池)进行池化,可是最大池数量在实践中表现更好。

 

20)填充(Padding)——填充是指在图像之间添加额外的零层,以使输出图像的大小与输入相同。这被称为相同的填充。

 

 

在应用滤波器以后,在相同填充的状况下,卷积层具备等于实际图像的大小。

 

有效填充是指将图像保持为具备实际或“有效”的图像的全部像素。在这种状况下,在应用滤波器以后,输出的长度和宽度的大小在每一个卷积层处不断减少。

 

21)数据加强(Data Augmentation)——数据加强是指从给定数据导出的新数据的添加,这可能被证实对预测有益。例如,若是你使光线变亮,可能更容易在较暗的图像中看到猫,或者例如,数字识别中的9可能会稍微倾斜或旋转。在这种状况下,旋转将解决问题并提升咱们的模型的准确性。经过旋转或增亮,咱们正在提升数据的质量。这被称为数据加强。

 

 

循环神经网络


 

22)循环神经元(Recurrent Neuron)——循环神经元是在T时间内将神经元的输出发送回给它。若是你看图,输出将返回输入t次。展开的神经元看起来像链接在一块儿的t个不一样的神经元。这个神经元的基本优势是它给出了更广义的输出。

 

 

23)循环神经网络(RNN)——循环神经网络特别用于顺序数据,其中先前的输出用于预测下一个输出。在这种状况下,网络中有循环。隐藏神经元内的循环使他们可以存储有关前一个单词的信息一段时间,以便可以预测输出。隐藏层的输出在t时间戳内再次发送到隐藏层。展开的神经元看起来像上图。只有在完成全部的时间戳后,循环神经元的输出才能进入下一层。发送的输出更普遍,之前的信息保留的时间也较长。

 

而后根据展开的网络将错误反向传播以更新权重。这被称为经过时间的反向传播(BPTT)。

 

24)消失梯度问题(Vanishing Gradient Problem)——激活函数的梯度很是小的状况下会出现消失梯度问题。在权重乘以这些低梯度时的反向传播过程当中,它们每每变得很是小,而且随着网络进一步深刻而“消失”。这使得神经网络忘记了长距离依赖。这对循环神经网络来讲是一个问题,长期依赖对于网络来讲是很是重要的。

 

这能够经过使用不具备小梯度的激活函数ReLu来解决。

 

25)激增梯度问题(Exploding Gradient Problem)——这与消失的梯度问题彻底相反,激活函数的梯度过大。在反向传播期间,它使特定节点的权重相对于其余节点的权重很是高,这使得它们不重要。这能够经过剪切梯度来轻松解决,使其不超过必定值。

 

做者: 多啦A亮&阿童木     

来自: 机器人圈(jiqirenchanye)

相关文章
相关标签/搜索