梯度检验与高级优化

From Ufldl

Jump to: navigation, search
Line 295: Line 295:
:【二审】:
:【二审】:
最后,迄今为止我们的讨论都集中在使用梯度下降来最小化<math>\textstyle J(\theta)</math>。如果你已经实现了一个函数来计算<math>\textstyle J(\theta)</math>和<math>\textstyle \nabla_\theta J(\theta)</math>,会发现其实有更绝妙的算法来尝试最小化<math>\textstyle J(\theta)</math>。举例来说,可以想象这样的一个算法:它使用梯度下降,但可以自动调整学习率<math>\textstyle \alpha</math>,以便尝试使用新的步长值,使<math>\textstyle \theta</math>尽快到达一个局部最优。还有其他算法比这更妙;比如寻找一个Hessian矩阵的近似,以便它能以更快的步伐到达一个局部最优(和牛顿方法类似)。此类算法的详细讨论超出了这份讲义的范围,但是L-BFGS算法我们以后会有论述(另一个例子是共轭梯度算法)。你将在编程练习里使用这些算法中的一个。最关键的一点是,对于这些更高级更优化的算法,对于任一个<math>\textstyle \theta</math>,你都能计算出<math>\textstyle J(\theta)</math>和<math>\textstyle \nabla_\theta J(\theta)</math>的最小值,然后这些优化算法会通过内部调整学习率/步长 <math>\textstyle \alpha</math>的大小(来计算它自己的近似Hessian矩阵等等)来自动寻找一个最小化<math>\textstyle J(\theta)</math>的<math>\textstyle \theta</math>值。诸如L-BFGS和共轭梯度的算法通常比梯度下降快很多。
最后,迄今为止我们的讨论都集中在使用梯度下降来最小化<math>\textstyle J(\theta)</math>。如果你已经实现了一个函数来计算<math>\textstyle J(\theta)</math>和<math>\textstyle \nabla_\theta J(\theta)</math>,会发现其实有更绝妙的算法来尝试最小化<math>\textstyle J(\theta)</math>。举例来说,可以想象这样的一个算法:它使用梯度下降,但可以自动调整学习率<math>\textstyle \alpha</math>,以便尝试使用新的步长值,使<math>\textstyle \theta</math>尽快到达一个局部最优。还有其他算法比这更妙;比如寻找一个Hessian矩阵的近似,以便它能以更快的步伐到达一个局部最优(和牛顿方法类似)。此类算法的详细讨论超出了这份讲义的范围,但是L-BFGS算法我们以后会有论述(另一个例子是共轭梯度算法)。你将在编程练习里使用这些算法中的一个。最关键的一点是,对于这些更高级更优化的算法,对于任一个<math>\textstyle \theta</math>,你都能计算出<math>\textstyle J(\theta)</math>和<math>\textstyle \nabla_\theta J(\theta)</math>的最小值,然后这些优化算法会通过内部调整学习率/步长 <math>\textstyle \alpha</math>的大小(来计算它自己的近似Hessian矩阵等等)来自动寻找一个最小化<math>\textstyle J(\theta)</math>的<math>\textstyle \theta</math>值。诸如L-BFGS和共轭梯度的算法通常比梯度下降快很多。
 +
 +
{{Sparse_Autoencoder}}
{{Sparse_Autoencoder}}

Revision as of 11:56, 9 March 2013

Personal tools