神经网络是一个有向图,以神经元为顶点,神经元的输入为顶点的入边,神经元的输出为顶点的出边。因此神经网络实际上是一个计算图,直观地展示了一系列对数据进行计算操作的过程。
神经网络是一个端到端的系统,这个系统接受一定形式的数据作为输入,经过系统内的一系列计算操作后,给出一定形式的数据作为输出;系统内的运算可以被视为一个黑箱子,这与人类的认知在一定程度上具有相似性。
通常地,为了直观起见,人们对神经网络中的各顶点进行了层次划分。
神经网络的层次划分
输入层
接受来自网络外部的数据的顶点,组成输入层。
输出层
向网络外部输出数据的顶点,组成输出层。
隐藏层
除了输入层和输出层以外的其他层,均为隐藏层
训练
神经网络中计算操作被预定义,而要使得输入数据通过这些操作之后得到预期的输出,则需要根据一些实际的例子,对神经网络内部的参数进行调整与修正;这个调整与修正内部参数的过程称为训练,训练中使用的实际的例子称为训练样例。
监督训练
在监督训练中,训练样本包含神经网络的输入与预期输出;对于一个训练样本〈X,Y〉, 将X输入神经网络,得到输出Y′;我们通过一定的标准计算Y^′与Y之间的训练误差,并将这种误差反馈给神经网络,以便神经网络调整连接权重及偏置。
非监督训练
在非监督训练中,训练样本仅包含神经网络的输入。
感知器
感知器的概念由Rosenblatt Frank在1957提出,是一种监督训练的二元分类器。
单层感知器
考虑一个只包含一个神经元的神经网络。这个神经元有两个输入x_1,x_2, 权值为w_1,w_2。其激活函数为符号函数
根据感知器训练算法,在训练过程中,若实际输出的激活状态o与预期输出的激活状态y不一致,则权值按以下方式更新:
其中,w^′为更新后的权值,w为原权值,y为预期输出,x为输入;α称为学习率,学习率可以为固定值,也可以在训练中适应地调整。
多层感知器
单层感知器可以拟合一个超平面y=ax_1+bx_2,适合于线性可分的问题,而对于线性不可分的问题则无能为力。考虑异或函数作为激活函数的情况:
异或函数需要两个超平面才能进行划分。由于单层感知器无法克服线性不可分的问题,人们后引入了多层感知器,实现了异或运算。
多层感知器
图中的隐藏层神经元ℎ_1, ℎ_2相当于两个感知器,分别构造两个超平面中的一个。
BP神经网络
在多层感知器被引入的同时,也引入了一个新的问题:由于隐藏层的预期输出并没有在训练样例中给出,隐藏层结点的误差无法像单层感知器那样直接计算得到。
为了解决这个问题,后向传播算法被引入,其核心思想是将误差由输出层向前层后向传播,利用后一层的误差来估计前一层的误差。后向传播算法由Henry J. Kelley在1960 和Arthur E. Bryson在1961分别提出。使用后向传播算法训练的网络称为BP神经网络。
梯度下降
为了使得误差可以后向传播,梯度下降的算法被采用,其思想是在权值空间中朝着误差最速下降的方向搜索,找到局部的最小值:
其中,w为权值,α为学习率,Loss(⋅)为损失函数。损失函数的作用是计算实际输出与期望输出之间的误差。
领取专属 10元无门槛券
私享最新 技术干货