什么是人工神经网络
人工神经网络,也就是ANN(Artificial Neural Network),它是模拟人类大脑处理信息的生物神经网络所产生出来的一种计算模型。而它主要用于机器学习的研究与调用,例如语音识别,计算机图像处理,NLP等。
单个神经元
在神经网络中,计算的最小单元就是神经元。它从其他的神经元接收输入参数,并且计算之后输出最后结果。
而每个输入都伴随着一个Weight
,即(w),并且输入的参数中也包含一个很重要的参数bias
。并且每个神经元都会应用一个函数f(wx+b)
来得到最后的输出。如下图所示:
该神经元接收X1
与X2
两个参数,并且有W1
与W2
两个权重(Weight),同时还有一个b
作为Bias
作为输入。而输出Y
则是作为该神经元计算后的输出。
激活函数(Activation Function)
在生活中,通常很多事情或者说计算都不是一条线性的曲线。所以,为了尽量拟合生活中的运算或者计算规律(统计学、概率论等等),于是需要把线性(non-linear)计算后的结果,通过函数转变成拟合概率论的非线性函数结果。而这个过程,就叫做激活,而转变的函数也就叫做激活函数。
激活函数的目的是为了将线性的结果转变成非线性的结果,让计算结果更加贴近于生活。
而每个激活函数或者非线性函数都会根据一个单独的数进行一些数学的操作,将原来的结果变成一个非线性的结果。
常用的Activation Function有如下:
-
sigmoid:经过sigmoid之后得到的结果是[0,1]区间的自然数
-
tanH:经过tanH所得到的结果是[-1,1]区间内的自然数
-
Relu:经过Relu所得到的结果是[0,]区间内的自然数
前向神经网络(Forward Neural Network)
前向神经网络主要由多个神经元,以及多神经元层构成。
主要包括三部分:
- Input Layer:输入层
输入层仅仅只是我们从真实世界获得数据之后,所格式化的特征数据,不会经过任何计算,它只是将这些特征数据传递给隐藏层。 - Hidden Layer:隐藏层
隐藏层中的神经元并不会与外界相连,这也是为什么叫隐藏层的原因。
这一层的作用,只是将输入层的数据进行计算与转换,然后传递给后续的输出层。而隐藏层可以有很多层。 - Output Layer:输出层
输出层的主要作用是将隐藏层的输入进行计算与转换,将数据转化成外界所认知的事物。
多层感知机(MLP)
多层感知机,即Multi Layer Perceptron。主要由一个或者多个隐藏层构成。而不包含隐藏层,只有输入和输出层的被称为单层感知机。即Single Layer Perceptron。
不包含隐藏层的单层感知机只能学习线性的变化,一旦包含了隐藏层,就可以学习非线性变化了。
对于隐藏层中的神经元而言,每个神经元都会与前一层(如输入层)的所有神经元相连接,并且连接时都会带有权重,这种也被称之为全连接层(Full Connect Layer)。
隐藏层中的每个神经元与前一层所有神经元所链接的权重都是不一样的。如隐藏层中的第一个神经元与输入层的第一个神经元的权重可以被认为是W[1,0],而第二个神经元与输入层的第一个神经元的权重被认为是W[2,0],这两个权重是不相同的。
通过隐藏层不同的神经元,以及每个神经元所携带的权重,就可以完成非线性的预测了。
多层感知机模型训练多层感知机模型
训练多层感知机模型通常都用反向传播算法(Back-Propagation)。
训练多层感知机模型的目的是为了能够更准确的预测事物,而反向传播算法则可以根据结果让计算机可以学习到正确的Weight与Bias。
反向传播算法:
- 随机初始化Weight以及Bias
- 对于每个训练集中的输入数据,ANN都会观察训练的输出与训练集结果(Label)
- 接着我们将错误的结果反向传递给上一层,而上一层的Weight也会根据错误的结果进行调整
- 重复上面的过程,直到错误的结果低于我们所设定的错误阈值
一旦这个过程终止之后,我们就拥有一个已经训练过的模型了,就可以考虑使用新的输入进行预测。
在分类的任务中,通常会使用SoftMax
的函数作为Activation Function,因为它可以在多个输入之间实现归一化,保证最终的分类结果的概率为1。
三维多层感知机
在MNIST的数据集中,提供了很多手写体的数字。例如下图中的5。
而该神经网络拥有784个像素点(因为宽高为28*28=784),所以在输入层会有784个节点。
而在第一层隐藏层有300个节点,在第二层隐藏层有100个节点,在最终的输出层会有10个节点,对应着0-9这十个数字。
使用更亮的颜色来代表输出值更高的节点。在输入层,亮的节点就是代表像素值的数值更高的节点。而在输出层,只有一个亮的节点代表数字5,它输出的结果概率值为1,而其他9个数字的节点概率值为0.
这张图表明了MLP可以正确的分类输入的数字。
手写体为5的多层感知机模型参考链接
https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/
https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
网友评论