背景:神经网络的起源是人们想尝试设计出模仿大脑的算法,它的理念就是,如果我们想要建立学习系统,那为什么不去模仿我们所认识的,最神奇的学习机器,人类的大脑呢?
神经网络逐渐兴起于20世纪80、90年代,应用得非常广泛,但由于各种原因,在90年代的后期应用减少了。
再次兴起的原因之一是神经网络的计算量较大,因此,大概到了近些年,计算机的运行速度变快,才足以运行大规模的神经网络。
0、如何表示神经网络?
先来看单个神经元在大脑中是什么样的:
神经元是大脑中的细胞,其中很多输入通道叫做树突(Dendrite)(可以把它们想象成输入电线),它们接收来自其他神经元的信息。神经元有一条输出通道叫做轴突,这条输出通道是用来给其他神经元传递信号或者传送信息的。
简而言之,神经元是一个计算单元,它从输入通道接受一定数目的信息,并做一些计算,然后将结果通过它的轴突传送到其他节点或者大脑中的其他神经元。
在人工神经网络里,我们将使用一个很简单的模型来模拟神经元的工作,我们将神经元模拟成一个逻辑单元:
黄色圆圈类似于神经元细胞体的东西,然后我们通过输入通道(树突)传递给它一些信息,然后神经元做一些计算,并通过它的输出通道(轴突)输出计算结果。
这样的图表表示 :
通常x和θ是参数向量:
当绘制一个神经网络时,通常只绘制输入节点x1、x2、x3,有必要的时候,会增加一个额外的节点x0,这个x0节点有时也被称作偏置单元或偏置神经元:
但因为x0总是等于1,所以有时候会画出它,有时候不会画出,这取决于在具体例子中加上x0是不是表示起来更方便。
θ为模型的参数(或称为权重)。
在神经网络术语中,**函数是指代非线性函数g(z)的另一个术语:
这个图代表单个的神经元:
神经网络其实就是一组神经元连接在一起的集合:
这里有3个神经元,在最后一层有第三个节点,该节点输出假设函数h(x)计算的结果。
关于神经网络的术语:
-
网络中的第一层也被称为输入层,因为我们在这一层输入特征x1、x2、x3。
-
最后一层也称为输出层,因为这一层的神经元输出假设的最终计算结果。
-
任何非输入层或非输出层的层就被称为隐藏层,在监督学习中,你能看到输入,也能看到正确的输出,而隐藏层的值在训练集里是看不到的,它的值不是x也不是y,所以我们叫它隐藏层。
1、逐步分析神经网络具体的计算步骤:
这里使用a^(j)_i来表示第j层第i个神经元(或单元)的**项。
所谓**项是指由一个具体神经元计算并输出的值。
此外,神经网络被这些矩阵参数化,θ^j就是权重矩阵,它控制比如说从第一层到第二层或者第二层到第三层的映射。
这就是这张图表示的计算:
举个例子,a^(2)_1等于sigmoid函数(或者说sigmoid**函数,也叫做logistic**函数)作用在这种输入的线性组合上的结果:
在这里,我们有三个输入单元和三个隐藏单元,θ ^(1) 就是控制着从三个输入单元到三个隐藏单元的映射的参数矩阵,因此θ^(1)就是一个3x4矩阵。
更一般地,如果一个网络在第j层有s_j个单元,在j+1层有s_j+1个单元,那么矩阵θ^(j)即控制第j层到第j+1层映射的矩阵,它的维度为s _(j+1)x(s_j+1)。
最后在输出层还有一个单元,它计算h(x):
θ^(2)是参数矩阵(权重矩阵),该矩阵控制从第二层的3个单元到第三层的1个单元的映射。
总结一下,这里讲解了如何定义一个人工神经网络,其中的神经网络定义了函数h,从输入到输出的映射,这些假设被参数化,将参数标记为大写的Θ,改变Θ,就能得到不同的假设,有不同的函数。以上就是怎么从数学上定义神经网络的假设。