我的人工智能之旅——神经网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daihuimaozideren/article/details/81432073

神经元,neuron

神经网络,Neural Networks

激活函数,activation function

权重,weight

输入层,input layer

输出层,output layer

隐藏层,hidden layer

向前传播,forward propagation


人工神经网络

人工神经网络是一种机器学习算法,兴起于上世纪八九十年代,但由于其本身计算量较大,受制于当时的硬件运算速度,因而应用较少,直至近几年才再度回到人们的视线。在我们已经学习了线性回归和逻辑回归的情况下,为什么还要研究神经网络呢?原因在于,该学习算法用于处理更加复杂的非线性假设。

举个例子。图片是以数字矩阵的方式存储的。例如,50x50像素的图片,包含2500个像素点,即50x50的点矩阵。若图片是RGB色图,每个点有红绿蓝三种颜色数值,那么,该图片样本将包含7500个特征值。若要将类似的图片样本,与其它样本区分开来,通过遍历所有二次项特征(即x_i*x_j)构建假设函数,则假设函数将包含7500*7500个特征值。这仅仅是50x50像素的图片,但无论线性回归还是逻辑回归,计算量是巨大的。

生物学中的许多神经重接实验,已能够间接证明,人脑皮层不同功能区域,似乎都具有某种相同的学习能力,用于学习其它不同区域的功能,而人工神经网络的目的正是模拟该学习功能。

人工神经元

人脑中存在大量的神经元细胞,人体所有的感知信息都是通过神经元来传递的。神经元细胞有两个重要的部分。一个是分叉树状的突起,称为树突,用于接收多个其它神经元传入的信息。一个是细长的轴突,用于向其它神经元发送信息。

人工神经网络是由一组人工神经元组成,人工神经元可以看做是一个运算单元。与人体神经元类似,人工神经元具有多个输入(N阶向量X),和一个输出。运行在人工神经元上,将输入映射为输出的函数g(A^TX),称为激活函数。激活函数中,每一个输入特征值x_i都具有对应的参数a_i,以表明该输入对于输出的影响。参数a_i的集合(即A^T)称为权重。

这里需要特别说明的是,g(A^TX)可以是不同的函数模型,例如我们之前讲到的线性函数,或者对数函数。

人工神经网络示例

来看一个人工神经网络的例子。

如图所示的人工神经网络中,共分了四层。分别为,由x_0,x_1,x_2,x_3特征值组成的Layer1,输入层。f(X)为输出的Layer4,输出层。

相对于用户可见的Layer1,Layer4两层,由Ne^{0}_{0},Ne^{0}_{1},Ne^{0}_{2}组成的Layer2,以及Ne^{1}_{0},Ne^{1}_{1}组成的Layer3,都被称为隐藏层,对外不可见。

需要说明一下,

(1)神经元Ne^{i}_{j}中的i,表示索引为i的隐藏层。j表示某一隐藏层中索引为j的神经元。

(2)权重a^i_{kj},表示为索引为k的特征值(即x_k),映射至第i层第j个神经元(即Ne^{i}_{j})时,所对应的权重。

若我们将运行在Ne^{i}_{j}上的激活函数定义为g^i_j(A^TX),那么

g^0_0(A^TX)=g^0_0(a^0_{00}x_0+a^0_{10}x_1+a^0_{20}x_2++a^0_{30}x_3)

g^0_1(A^TX)=g^0_1(a^0_{01}x_0+a^0_{11}x_1+a^0_{21}x_2++a^0_{31}x_3)

g^0_2(A^TX)=g^0_2(a^0_{02}x_0+a^0_{12}x_1+a^0_{22}x_2++a^0_{32}x_3)

g^1_0(A^TX)=g^1_0(a^1_{00}g^0_0(A^TX)+a^1_{10}g^0_1(A^TX)+a^1_{20}g^0_2(A^TX))

g^1_1(A^TX)=g^1_1(a^1_{01}g^0_0(A^TX)+a^1_{11}g^0_1(A^TX)+a^1_{21}g^0_2(A^TX))

那么,我们可以很容易的推算出该人工神经网络的假设函数f(X)

f(X)=g^2_0(A^TX)=g^2_0(a^2_{00}g^1_0(A^TX)+a^2_{10}g^1_1(A^TX))

这里,我们称这种由输入层向前逐步计算出输出层的过程,称为向前传播。可看到向前传播的过程中,上层的输出成为下一层的输入。

猜你喜欢

转载自blog.csdn.net/daihuimaozideren/article/details/81432073