1. 神经细胞
神经元,又称神经细胞,是构成神经系统结构和功能的基本单位。神经元是具有长突触(轴突)的细胞,它由细胞体和细胞突起构成。细胞突起是由细胞体延伸出来的细长部分,又可分为树突和轴突。每个神经元可以有一或多个树突,可以接受刺激并将兴奋传入细胞体。每个神经元只有一个轴突,可以把兴奋从胞体传送到另一个神经元。如下图所示
我们已经知道,神经元把所有从树突进来的信号进行叠加处理(并不是简单的相加),如果叠加结果超过某个阈值,就会激发神经元进入兴奋状态,这时就会有一个电信号经过轴突传向其它神经元。如果叠加结果没有超过这个阈值,就不会有电信号产生。(当然神经元的真实反应要比上面的描述复杂得多)
2. 人工神经细胞
了解了神经细胞的工作原理,我们可以构造一个有n个输入()的人工神经细胞(以下简称神经细胞)
假设这n条到神经细胞体的输入边的权重分别为(),我们再为神经细胞增加一个边权重为的输入(叫做bias unit),且始终有 = 1(这里可以把的值想像成神经细胞的阈值)。则神经细胞的输出
其中
,
3. 人工神经网络
已经了解了神经细胞的结构,下面我们可以构造一个4层K类的人工神经网络(以下简称神经网络)
其中第1层是输入层,输入是样例的特征;最后一层是输出层,表示神经网络选择某一类别的几率,和Logistic Regression类似,我们选择几率最大的输出代表类别;介于输入层和输出层之间的是隐藏层,隐藏层通常由1到多层组成,当然也可以没有。注意到除了输出层,我们在每一层都增加了一个'bias unit‘,其值为1,它的作用我们在上一节讲过。我们用
L表示神经网络总的层数
表示第i层第j个神经细胞的激励值,即第i层第j个神经细胞的输出
表示第i层神经细胞的数量(不包括bias unit)
表示第i层第q个神经细胞到第i+1层第p个神经细胞的边的权重
表示第i层神经细胞到第i+1层神经细胞的所有边的权重的矩阵,是一个 的矩阵
则有
,其中
为Sigmoid函数。如果使用矩阵的形式,则有
这样逐层向前,我们最终可以计算得到输出层K个神经细胞的输出,假设最大,则i即为输入的类别。这个过程叫做Forward Propagation。
4. 训练神经网络
前面讲了怎样使用神经网络进行分类,在能得到正确的结果前,我们还需要还对神经网络进行训练。假设有K个类别,则神经网络的输出;有一个样例,同样的,其中表示属于第j个类别。比如,K=5,属于类别3,则有。
假设神经网络的输出为,
定义其Cost Function为
下面我们介绍一下Back Propagation(反射传播)算法:
令
for p = 1 to m
令使用forward propagation计算;;其中,计算计算,其中,注意不包括,因为每一层的第一个细胞都没有输入更新
--------------------------------------------------------------
补充一点: ,它的推导比较简单,这里不再给出。
Back Propagation只是计算了,后面可以使用Gradient Descent对进行更新,直到收敛。
5. Back Propagation的理解
Back Propagation的思想是将输出层的误差分摊到各层神经细胞,得到各神经细胞的误差信号,进而修正相应边的权值。