【Machine Learning, Coursera】机器学习Week5 Neural Networks: Backpropagation in Practice

Neural Networks: Backpropagation in Practice


本节内容:神经网络算法实现的注意事项
1. 展开参数(unrolling parameters)
2. 梯度检验(gradient checking)
3. 随机初始化(random initialization)


1. Unrolling Parameters

神经网络算法需要处理一系列的矩阵:
Θ(1),Θ(2),Θ(3),... Θ ( 1 ) , Θ ( 2 ) , Θ ( 3 ) , . . .
D(1),D(2),D(3),... D ( 1 ) , D ( 2 ) , D ( 3 ) , . . .
为了能够使用现有的优化函数,如matlab中的fminunc(),我们需要将矩阵中的元素“铺开”,使其变成一个长向量。下图提供了matlab中元素铺开和还原的代码。

总结:
这里写图片描述

2. Gradient Checking

梯度检验(gradient checking)就是一种验证算法是否存在问题的方法。它是对梯度的数值估计,它的原理是,对于连续函数 J(θ) J ( θ ) 和一个很小的 ϵ ϵ ,有

J(θ)J(θ+ϵ)J(θϵ)2ϵ J ( θ ) ≈ J ( θ + ϵ ) − J ( θ − ϵ ) 2 ϵ

对于含有多个参数的 J(θ) J ( θ ) ,可分别对每个参数进行如下梯度检验:
这里写图片描述
总结:
这里写图片描述

在实现过程中尤其需要注意的一点是,在训练分类器之前一定要关闭梯度调试,否则会导致训练极其缓慢。
这里写图片描述

3. Random Initialization

使用梯度下降算法或者其他高级优化算法都需要初始化参数 Θ Θ 。如果将所有参数全部初始化为0,会导致在每一层训练得到的激励值和误差值都相同,更新之后的参数值也都相同。这意味着我们只学习到了一种特征,这样的训练结果是没有意义的。

这里写图片描述

因此,我们需要随机初始化(random initialization)参数,其目的是打破对称。我们在某一特定范围内生成参数值,如 [ϵ,ϵ] [ − ϵ , ϵ ] . 这里的 ϵ ϵ 和梯度检验的 ϵ ϵ 无关。
具体用代码表示如下。Theta1生成一个10x11的矩阵,Theta2生成一个1x11的向量。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值