深度学习入门--最优化笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BridgetMorris/article/details/72605452

这篇博客是我在学习CS231n课程做的一些笔记,记录一些核心的知识点和公式

想看详细版请移步知乎专栏:

https://zhuanlan.zhihu.com/p/21930884?refer=intelligentunit%20%E8%BF%99%E4%B8%AA%E6%98%AFCS231n%E7%9A%84%E7%BF%BB%E8%AF%91%E7%AC%94%E8%AE%B0


最优化

几种方法

1.随机搜索

2.随机本地搜索:我们从一个随机W开始,然后生成一个随机扰动\delta W,只有当W+\delta W的损失值降低,我们才会更新。

3.跟随梯度:前两中方法都是随机找方向,梯度的方法则是直接计算出最好的方向 。在蒙眼徒步者的比喻中,这个方法好比是感受我们脚下山体的倾斜程度。


梯度计算

  • 数值梯度法
  • 分析梯度法
利用有限差值计算梯度
1.具体算法:对所有维度进行迭代,在每个维度上产生一个很小的变化h,通过观察函数值变化,计算函数在该维度上的偏导数。最后所有的梯度存储在变量grad中。
2.实践考量在数学公式中h是趋近于0的,然而在实际中,用一个很小的数值就足够了。还有,实际中用中心差值公式[f(x+h)-f(x-h)]/2h效果比较好。
3.效率问题:计算数值梯度的复杂性和参数的量线性相关。现代神经网络很容易就有上千万的参数,因此这个问题只会越发严峻。显然这个策略不适合大规模数据,我们需要更好的策略。

微分分析计算梯度

使用有限差值近似计算梯度比较简单,但是缺点在于终究只是近似。微分的方法其实是利用分为来分析,得到计算梯度的公式而不需要取近似。

在实际操作中常常将分析梯度方法的结果和数值梯度法的结果作比较,以此来检查实现的正确性,这个步骤叫做梯度检查


梯度下降

程序重复地计算梯度然后对参数进行更新,这一过程叫做梯度下降,


小批量数据梯度下降

针对训练数据太多的问题提出的一个解决方案。将数据分成很多批,对每一批数据进行梯度下降。

小批量数据的极端情况是每个批量中只有1个数据样本,这种策略被称为随机梯度下降(SGD)

小批量的数据大小是一个超参数,但是一般不需要通过交叉验证来调参。它一般由存储器的限制来决定,或者干脆设为同样的大小,如32,64,128





展开阅读全文

没有更多推荐了,返回首页