1 代价函数
令L代表神经网络层数,代表第l层神经元的个数(
即代表最后一层神经元的个数),则神经网络分类可表达如下:
<1> 二类分类:=1,y=1/0表示分到哪一类
<2> 多类分类:=k,
=1表示分到第i类
通过逻辑回归代价函数:
可将神经网络代价函数表示如下:
在神经网络中,hθ(x)是一个维度为k的向量,对于每一行特征,我们都将做出k个预测,选取可能性最高的一个,与实际值做比;
即样本与每个类输出差值的加和 + 偏置项参数平方和(除θ0)
2 反向传播算法
在结果预测中,我们使用了正向传播,从第一层向后逐层计算,直到计算出hθ(x);
在代价函数偏导计算时,我们需要使用反向传播,从最后一层向前逐层计算误差,直到倒数第二层;
单一训练样本推导:
使用δ表示误差
则在λ=0时可得
矩阵训练集及考虑归一化推导:
令 表示误差矩阵,第l层的第i个激活单元受到第j个参数影响而导致的误差,算法为
代价函数偏导计算:
对于初始化参数,神经网络模型中我们通常不会初始化为0,如果这样第二层激活单元将都会有相同的值;通常初始化为正负 ε 之间的随机值 ,如:Theta1 = rand(10, 11) * (2*eps) – eps ;
3 梯度校验
在一些复杂模型中,梯度下降算法可能收敛不到最优解,可通过估计梯度值来检验我们计算的导数值是否真的是我们要求的;
方法:代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度;即对于特定θ,我们计算出在 θ-ε 处和 θ+ε 的代价值(ε 是一个非常小的值,通常选取 0.001),然后求两个代价的平均,用以估计在 θ 处的代价值;
Octave中计算方法:
gradApprox = (J(theta + eps) – J(theta - eps)) / (2*eps)
对于θ向量做偏导校验:
4 步骤总结
- 选择网络结构(层数及每层单元数) 【第一层单元数为训练集特征数,最后一层的单元数是我们训练集的结果的类的数量】
- 参数的随机初始化
- 利用正向传播方法计算所有的 hθ(x)
- 编写计算代价函数 J 的代码
- 利用反向传播方法计算所有偏导数
- 利用数值检验方法检验这些偏导数
- 使用优化算法来最小化代价函数
------------------------------------------------------------------------------------------------------------------------------------
文章内容学习整理于吴教授公开课课程与黄博士笔记,感谢!