激活功能
在神经元完成输入和权重之间的点积运算后,它还会对该结果施加非线性。该非线性函数称为激活函数。
过去,激活功能的流行选择是S型和tanh。最近发现,由于称为消失梯度的问题,ReLU层对深度神经网络具有更好的响应。
简单网络的例子
考虑具有1个隐藏层,3个输入神经元,3个隐藏神经元和1个输出神经元的神经网络。
人工神经网搭建
在上图中,输入层有至四个节点,隐层有两个节点,输出层仅有一个节点,节点与节点之间有着各自对应的连接权重,经过层层递进,得到最终的输出结果。
加法器
加法器非常好理解,假设节点接受的输入用向量表示,节点输出的结果用0表示,节点与上层连接的连接权重用表示,且节点的偏差用表示。在第j个节点上的加法器[公式]则定义为:在这里插入图片描述
激活函数这块比较容易理解,主要有两大类:
- [0,1]阶跃函数
- (0,1)型Sigmoid函数
激活函数的作用就是将之前加法器输出的函数值进行相应转换,或转为[公式]型,或映射到[公式]取值范围内。
建立神经网络的一般步骤
- List item
数据的标准化处理
在人工神经网络中,无论是分类问题还是回归问题,输入变量的取值一般要求在0~1之间,否则输入变量的不同数量级别将会对连接权重的确定、加法器的计算和最终的预测产生较大的干扰。为此,需要对原始数据集进行标准化处理,消除量纲带来的影响。
- 网络结构的确定
在神经网络中,隐层的层数与节点个数决定了整个模型的复杂度,这里涉及到一个预测准确度与复杂度的权衡,层数节点数较少时模型结构简单,但预测准确度较低;层数节点数较多时尽管预测准确度会较高,但模型可能会过于复杂,并影响计算效率(特别是在大数据集下)。
理论上,虽然多层网络能够获得更精准的分析结果,但若非实际需要的话,使用两个以上的隐层会使问题的解决变得更为复杂。所以,如果直观上数据集本身与要解决的问题不是很复杂的话,我们可以优先设置一个隐层,并从当前模型的预测结果出发来考虑是否需要更多的隐层。
在隐节点的个数设定上,目前暂时没有权威的确定准则。通常情况下,问题越复杂,需要的隐节点也就越多,但隐节点过多又会导致过拟合问题。因此,节点个数不可能在模型建立之前就确定下来,我们可以先给出一个粗略的网络结构,然后在模型训练过程中逐步进行调整。
- 连接权重的确定
神经网络建立的过程,也就是采用合适的网络结构,探索输入输出变量间复杂关系的过程,并在此基础上应用于对新样本的预测。那么在这个过程中,神经网络就需要对已有的数据进行反复分析与学习,掌握输入输出变量间的数量关系规律,并将其体现在连接权重上。因此,当我们确定好第二步中的网络结构后,构建模型的核心任务就是确定连接权重[公式],步骤如下:
第一:初始化连接权重向量W
一般连接权重向量W的初始值默认为一组随机数,且需要服从均值为0,取值在-0.5~0.5之间的均匀分布。
第二:计算各处理单元的加法器与激活函数值,得到样本的预测值
第三:比较预测值与实际值,计算预测误差,根据预测误差重新调整各连接权重
上述的过程是一个不断向样本学习的过程,我们的目的自然是为了获得较高的预测准确度和较小的预测误差,当一轮的学习无法满足高准确度的要求时,就需要进行新一轮的学习,如此循环往复,直到满足最终迭代终止的条件为止。
最终,我们得到一组相对合理的连接权重值,超平面(或回归平面)与神经网络模型也就得以确定。
关于权重初始化需要服从均值为0的安排,这个与开始时神经网络会退化为近似线性的模型有关。