神经网络是将许多个神经元按一定的层次结构连接起来的网络结构。不同的层次结构会产出不同类型神经网络,比如前馈神经网络和递归神经网络。
神经元
神经元是神经网络最重要的组成部分,下图为一个神经元的示意图,箭头的方向就是数据运行的方向。为神经元接受的输入向量a,
为输入向量各个分量的权重w;b为偏置项bias,该条连接的输入固定为1。它可以让建模能力更强,更灵活。红色圆圈内为一个神经元处理信息的过程,里面又包括了SUM和f两部分。SUM为一个线性函数,将输入向量和权重向量的内积,输出的结果再传入激活函数f,最后输出结果t。
一个神经元的功能是求得输入向量与权重向量的内积后,经过一个非线性函数也就是激活函数得到一个标量结果。
它会把一个n维向量空间用一个超平面分割成两部分,给定一个输入向量,神经元可以判断出这个向量位于超平面的哪一边。所以一个神经元就相当于做了一个二分类。(做回归任务的时候,神经元也相当于一个二分类吗?)
我们主要讲多层前馈神经网络。
多层前馈神经网络
多层前馈神经网络是由输入层,若干个隐藏层和输出层组成的全连接网络,不存在环或回路。。每一层都由多个神经元组成,神经元和输入向量全连接,但是神经元和神经元之间没有连接,也不存在跨层连接。每一层的输出结果会作为下一层的输入向量,比如hidden layer1的输出向量为hidden layer2的输入向量。输入层不会对数据进行处理,只是代表整个神经网络最开始的输入向量,也就是样本的特征向量。神经网络的输入为向量,最后的输出也是向量。输出向量的维度取决于输出层神经元的个数。
多层前馈神经网络可以看作是非线性复合函数,它的学习过程就是将输入沿着网络结构的方向一层,一层的正向传播直到输出层,然后再通过反向传播算法 (BP) 对权重和偏置项进行跟更新。然后循环整个过程,直到满足最大迭代次数或者在验证集上的错误率变化不大。
当问题是回归问题时,损失函数为均方误差:
当问题是分类问题时,损失函数多为交叉熵,最后一层的激活函数为softmax函数:
, z为上一层神经元的输出
参考链接:https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C