A Quick Introduction to Neural Networks(翻译)

                                                          A Quick Introduction to Neural Networks

                                                          Posted on August 9, 2016 by ujjwalkarn 

原文链接: https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/

An Artificial Neural Network (ANN)是一个计算模型,人工神经网络(ANN)是一种计算模型,其灵感来自人脑处理信息中生物神经网络的方式。在这个blog post我们会对ANN的一个特殊类型叫做Multi Layer Perceptron进行理解。

A Single Neuron

神经网络中计算的基本单元是neuron,通常叫做a node or unit。它接收一些其他nodes的输入,或者来自外部源的输入,并计算出一个输出。每个输入有一个关联的weight(w), 其分配基于它相对于其他输入的相对重要性。节点将函数f(下面定义)应用于其输入的加权和,如下面的图1所示:

                                                            

上面的network有数值输入X1X2,以及权重w1w2。另外,还有一个输入l和权重b(被称作Bias)。我们将学习更多有关角色bias。

从neuron的输出Y被计算,如Figure1展示。函数f是非线性的,被称作Activation Function. Activation function的目的用来引入非线性值到a neuron的输出。这很重要,因为大多数现实世界数据是非线性的,我们需要neurons去学习这些非线性表示。

每一个activation function (or non-linearity)都有一个单个数值,并执行某个固定的数值运算[2]。实际中,你可能会遇到几个activation functions.

Sigmoid: 接受一个真实值的输入,并把它压缩至0到1之间

                                                                       

Tanh: 接受一个真实值的输入,并把它压缩至[-1, 1]之间

                                                                        

ReLU:ReLU代表Rectified Linear Unit. 它接受一个真实值输入,阈值为0,用0代表负值。

                                                                          

下图[2]展示了上面的activation functions.

 

                                        

Importance of Bias: Bias的主要功能是为每个node提供一个训练过的常量(除了每个node接收的normal输入)。查看此链接以学习更多在一个neuron中的bias的功能。

 

Feedforward Neural Network前置神经网络

前置神经网络是第一个以及最简单的artificial neural network[3]。它包含多个neurons,在layers中排列。来自相邻的layers的nodes之间有connections or edges。所有这些connections都有相关联的weights。示例如下图:

                                           

一个feedforward neural network包含三种类型的nodes:

1 Input Nodes: Input nodes给network提供来自外部的信息,都被看作是Input Layer.对任何一个input nodes都没有任何计算,他们只是提供给hidden nodes提供信息。

2 Hidden Nodes: Hidden nodes与外部的世界没有联系(因此叫做hidden). 他们执行计算,并把信息从input nodes传给output nodes. 一个hidden nodes集合形成一个hidden layer。一个feedforward network只会有一个单个input layer和一个单个output layer, 但是它可以有0个或者多个Hidden layers.

3 Output Nodes.输出节点统称为“输出层”, 负责计算和从网络向外界传输信息。

在一个feedforward network中,信息只向一个方向运动-forward,从input nodes,穿过hidden nodes(如果有的话), 然后到output nodes。在该network中没有cycles或者loops[3]。(前馈网络的这种特性不同于递归神经网络,其中节点之间的连接形成一个循环)。

下面给两个feedforward networks的例子:

1  Single Layer Perceptron. 这是最简单的feedforward neural network[4],不包含任何隐藏层[4][5][6][7]。

Multi Layer Perceptron.一个multi layer perceptron有一个或者多个隐藏层,我们将只讨论multi layer perceptrons,因为他们在实际应用中比single layer perceptons更有用。

 

Multi Layer Perceptron

一个multi layer perceptron包含一个或者多个隐藏层。A single layer perceptron只能学习linear functions,一个多层perceptron还可以学习non-linear functions.

Figure 4展示了有单个hidden layer的多层layer perceptron。注意所有的connections都有权重,但是图中只展示了三个权重(w0, w1, w2).

Input layer: Input layer有三个节点。Bias node有一个值1. 另外两个nodes取X1和X2作为external inputs(是依赖于input dataset的数值)。正如上面所讨论的,在input layer没有执行计算。所以来自input layer的nodes 1, x1和x2是分别独立的,并被转入隐藏层 which are fed into the Hidden Layer.

Hidden Layer: 隐藏层有三个节点,并有一个Bias节点具有output值1. 隐藏层中其他两个节点的输出取决于输入层(1X1X2)的输出以及与连接(边缘)相关的权重。Figure 4展示了对于一个隐藏节点的输出计算(高亮部分). 类似的,来自其他隐藏node的输出也可以计算。记住,f是指activation function。这些输出然后被转入output layer中的节点。

                                                      

Output layer: Output layer有两个节点,接收来自Hidden layer的输入,以及执行类似于高亮部分的计算。作为这些计算的结果计算的值(Y1Y2)充当多层感知器的输出。

给定一个特征集X = (x1, x2, …)以及目标y, 一个Multi Layer Perceptron可以学习特征和目标之间的关系,用于任何一个分类或者回归。

下面举例说明Multi Layer Perceptrons。假设我们有如下的student-marks数据集:

                                                          

两个输入栏显示学生学习的小时数和学生获得的中期分数。 “最终结果”列可以有两个值10,表示学生是否在最后一学期通过。例如,我们可以看到,如果学生学习了35个小时并且在中期获得了67分,他/她最终通过了最后一个学期。

现在,假设,我们想要预测一名学生在中期学习25小时并且有70分的学生是否会通过最后一学期。

                                                                    

这是一个二元分类问题,其中多层感知器可以从给定的示例(训练数据)中学习并在给定新数据点的情况下做出明智的预测。我们将在下面看到多层感知器如何学习这种关系。

 

Training our MLP: The back-propagation Algorithm

Multi Layer Perceptron学习的过程被称作是Backpropagation algorithm。我推荐阅读this Quora answer by Hemanth Kumar(在下面被引用),其清晰的解释了Backpropagation.

Backward Propagation of Errors,通常被缩写为BackProp,是ANN被训练的几种方法中一种。它是一个监督训练过程a supervised training scheme,也就意味着,它从labeled training data中学习(有一个监督者,引导its learning)。

简单来说, BackProp就像从mistakes中学习 ”learning from mistakes” ,监督者在它犯错误的时候纠正ANN。

一个ANN在不同层中包含节点: input layer, intermediate layers 以及the output layer. 相邻图层的节点相连都有权重。Learning的目的就是给这些edges分配正确的权重。给定一个输入矢量,这些权重决定了输出的矢量是什么。

在监督学习中,训练集被标注the training set is labeled。这就意味着,对于一些给定的输入,我们知道期望或者期待输出the desired/expected output(label).

 

BackProp Algorithm:

最初,所有edge的权重被随机分配。对于训练集中的每一个输入,ANN是活跃的,它的输出被观察。该输出与我们已知的期望的输出做比较,然后错误被传播给前一个图层。这个错误被noted,权重被相应的调整。该过程会重复一直到输出的错误在预定的阈值之下。

一旦上面的算法结束,我们就有了一个学习过的ANN,我们认为可以去接受新的输入了。该ANN被认为已经从几个例子(labeled data)和自己的错误(error propagation)中学习了.

现在我们知道Backpropagation如何工作了,我们重新回到student-marks数据集上。

在Figure5中展示的Multi Layer Perceptron(摘自Seadapted from Sebastian Raschka’s excellent visual explanation of the backpropagation algorithm)在输入层有两个节点(除了Bias node),分别是Hours Studied和Mid Term Marks。同时隐藏层也有两个节点(除去Bias Node).输出层也有两个节点-upper node输出Pass的可能性,lower node输出Fail的可能性。

在分类任务中,我们一般使用Softmax function作为Multi Layer Perceptron的Activation Function,以确保输出是概率,并且和为1。

Softmax函数采用a vector of arbitrary real-valued scores,并将其压缩为01之间的值的向量,该向量总和为1。那么,在这种情况下,

                                                               Probability(Pass) + Probability(Fail) =1

 

Step 1: Forward Propagation

Network中的权重都是随机分配。让我们考虑Figure5中隐藏层节点标记为V。假设从输入层到该节点的所有连接的权重分别是w1 w2 和w3.

Network然后把第一次训练example作为input(我们知道对于输入35和67来说,Pass的可能性是1).

从该节点的输出V可以如下计算(f是一个activation function 比如sigmoid)

类似的,隐藏层中从另一个节点的输出也同样被计算。隐藏层中两个节点的输出作为输出层的两个节点的输入。这使得我们能够计算输出层的两个节点的输出可能性。

假设输出层中两个节点的输出概率分别为0.40.6(因为权重是随机分配的,输出也是随机的)。我们可以看到计算的概率(0.40.6)与期望的概率(分别为10)相差很远,因此图5中的网络被称为具有“不正确的输出”。

                               

Step 2: Back Propagation and Weight Updation

我们在output nodes处的total error,然后把这些错误使用Backpropagation通过network返回,并计算gradients。然后我们使用优化方法诸如Gradient Descent,去调整网络中的所有的all weights,目的在于减少输出层的错误。在图6中展示(暂时忽略图中的数学方程式)

假设新的赋予每个节点的权重是w4 w5 w6在Backpropagation反传播和调整权重之后。

                                   

如果我们现在再次向网络输入相同的示例,则网络应该比以前更好地执行,因为现在已经调整了权重以最小化预测中的错误。如图7所示,与之前的[0.6-0.4]相比,输出节点处的误差现在减少到[0.2-0.2]。这意味着我们的网络已经学会正确分类我们的第一个训练示例。

                            

我们在数据集中使用所有其他训练示例重复此过程。然后,据说我们的网络已经学会了这些例子。

如果我们想要预测在期中考试中学习了25个小时,得了70是否通过final term,我们会经历forward propagation step,找到对于Pass and Fail的输出可能性。

我在这里避免使用数学方程和诸如“渐变下降”等概念的解释,而是试图为算法开发直觉。有关Backpropagation算法的更多数学讨论,请参阅此链接

 

多层感知Multi Layer Perceptron 的3d可视化

Adam Harley创建了多层感知的3d可视化,已经使用Backpropagation在手写digits的MNIST数据集上进行过训练(which has already been trained using Backpropagation on the MNIST Database of handwritten digits)。

Network接收来自手写数字的28*28图像的784数值像素值作为输入(输入层有784个节点对应于像素)。Network在第一个hidden layer有300个节点,在第二个hidden layer有100个节点,在输出层有10个节点(对应于10个数字)[15]。

虽然与前面部分讨论的网络相比,此处描述的网络要大得多(使用更多的隐藏层和节点),但前向传播步骤和反向传播步骤中的所有计算都以相同的方式(在每个节点处)完成,如上所述之前。 8显示了输入为数字“5”时的网络。

                                  

比其他节点有更高输出值的节点以较明亮的颜色表示。在输入层,明亮的节点是那些接收更高数值作为输入的节点。注意,在输出层中,唯一的明亮节点对应于数字5(输出概率为1,高于其他9个输出概率为0的节点)。这表明MLP已正确分类输入数字。我强烈建议尝试这种可视化并观察不同层节点之间的连接。

 

Deep Neural Networks

  1. What is the difference between deep learning and usual machine learning?
  2. What is the difference between a neural network and a deep neural network?
  3. How is deep learning different from multilayer perceptron?

结论

在这个post中我略过了一些概念的细节部分以便于理解。我推荐阅读斯坦福的Neural Network tutorial的Part1, Part2, Part3Case Study以便于更透彻理解Multi Layer Perceptrons.

 

References

  1. Artificial Neuron Models
  2. Neural Networks Part 1: Setting up the Architecture (Stanford CNN Tutorial)
  3. Wikipedia article on Feed Forward Neural Network
  4. Wikipedia article on Perceptron 
  5. Single-layer Neural Networks (Perceptrons) 
  6. Single Layer Perceptrons 
  7. Weighted Networks – The Perceptron
  8. Neural network models (supervised) (scikit learn documentation)
  9. What does the hidden layer in a neural network compute?
  10. How to choose the number of hidden layers and nodes in a feedforward neural network? 
  11. Crash Introduction to Artificial Neural Networks
  12. Why the BIAS is necessary in ANN? Should we have separate BIAS for each layer?
  13. Basic Neural Network Tutorial – Theory
  14. Neural Networks Demystified (Video Series): Part 1, Welch Labs @ MLconf SF
  15. A. W. Harley, “An Interactive Node-Link Visualization of Convolutional Neural Networks,” in ISVC, pages 867-877, 2015 (link)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值