一. 多层神经网络的结构及表示
1.使用神经网络的原因:在非线性分类中,如果特征很多,且需要包含很多个二次及以上的项时;二次项取的过少会导致欠拟合;而如果要全部取二次项,则会有很大的二次项的数目O(n^2),而且极有可能导致过拟合。使用神经网络可以将所包含的项减少到O(n).
2.神经网络的表示:
假设有如下的一个三层神经网络,包含一个隐藏层。我们依次对接下来要出现的符号做一个解释。
**
第一层Layer1被称之为输入层,第二层Layer2被称为隐藏层,第三层Layer3被称为输出层;
第一层有三个输入单元,和一个偏置单元,偏置单元x0的值可认为是1;第二层有三个单元和一个偏置单元;第三层有一个输出单元,通常输出单元不只一个;每一个输入单元代表一个特征,每一个输出单元代表一个分类结果。
第一层输入单元的激活值就是输入值本身,用
表示,其中,x0表示偏置单元的激活值;第二层的每个单元的激活值用
,同样的,向量中的第一个也表示偏置单元的激活值;第三层的激活值用
来表示。
第二层第一个单元接受到的第一层各的累加刺激为:
,第二层第二个单元受到第一层的累加刺激为:
,第二层第三个单元受到第一层的累加刺激为:
;第三层第一个单元受第二层个单元的累加刺激为:
第二层第一个单元的激活值
,g(x)是sigmod函数;第二层第二个单元的激活值
;第二层第三个单元的激活值
;第三层第一个单元的激活值为
为了便于更好的宏观理解,我们写出更为抽象的矩阵表达形式。设测试集中共有m个样本。
,
,
二. 反向传播算法及梯度下降法:
(1)代价函数
为了使用梯度下降算法,我们要引入反向误差传播算法,因为之前的逻辑回归中,我们只有输入层和输出层,没有隐藏层,预测结果与标签值的误差是不用进行传播的,但是在MLP中,因为有隐藏层,而我们又需要对从每一个隐藏层的激活值进行评价。所以误差会从输出层向输入层进行反向传播。其传播过程与计算值的正向传播类似。
(2)各层误差计算


(3)梯度下降
通过各层误差计算后,我们得到了每一层的误差值,然后我们设法让每一层误差值最小,梯度下降法可以开始应用了。我们所期待的偏导数项便可借由反向传播算法得到了。
上面所写的式子只是应用于一个输入向量的,当有m个输入向量的时候,并且加上正则化后,我们可以得到完成的求偏导的算法。

接下来我们继续向以前一样使用梯度下降:
三. 梯度检测
使用预先计算好的偏导与我们梯度下降得到的偏导进行比较,当两者相差不大时,在继续运行梯度下降算法。这是因为反向传播算法与梯度下降算法结合在一起时,有时会有意想不到的错误,我们必须进行梯度检测来确保没有其他错误的发生。
**
