九: 神经网络的学习

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 步骤总结

  1.  选择网络结构(层数及每层单元数)                                                                                                                                  【第一层单元数为训练集特征数,最后一层的单元数是我们训练集的结果的类的数量】
  2.  参数的随机初始化
  3.  利用正向传播方法计算所有的 hθ(x)
  4.  编写计算代价函数 J 的代码
  5.  利用反向传播方法计算所有偏导数
  6.  利用数值检验方法检验这些偏导数
  7.  使用优化算法来最小化代价函数

 

 

------------------------------------------------------------------------------------------------------------------------------------

文章内容学习整理于吴教授公开课课程与黄博士笔记,感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值