20170225#cs231n#3.最优化问题
来源:互联网 发布:交换机端口抓包 编辑:程序博客网 时间:2024/06/05 13:28
Optimization:Stochastic Gradient Descent
Optimization是寻找一个
SVMcostFunction就是一个convex function(凸函数),然后这就涉及到了 ConvexOptimization(凸优化)
但是神经网络的代价函数就是non-convex的了
然后会有很多lossfunction是Non-differentiable 不可导的,(例如最大值函数)。这个时候我们使用subgradient次梯度和gradient梯度交替结合的方法
Optimization最优化问题
核心在于利用梯度下降,有两种计算梯度的方法
- analytic gradient解析梯度
df(x)dx=limh→0f(x+h)−f(x−h)2h - 解析梯度算法的速度快结果精确但是实现的时候容易出错
- numerical gradient数值梯度(近似解)
f(x+h)−f(x−h)2h - 上式称为中心差值公式(centered difference formula),h的值特别小(例如1e-5),
- 中心差值公式的结果误差比较小,看wiki
- 数值梯度算法速度慢但是实现简单
csdn-DeepLearning梯度检验
CSDN-cs231-最优化问题
其他关于数值梯度下降的东西可以看之前的Courseraweek1-3笔记,cs231n和Coursera大同小异
计算数值梯度的复杂性和参数的量线性相关,现代的NeuralNetwork经常有上千万个参数,所以数值梯度的方法其实效率很低,我们需要更好的办法
用微积分的方法计算解析梯度
数值梯度有个明显缺点就是它是个近似值,但是由于实现起来简单所以结果收敛到全局最优一般没有太大问题
不过解析梯度计算效率很高,但实现起来并不简单所以容易出错
因此我们经常计算出解析梯度analytic gradient的值之后和数值梯度numerical gradient的值进行对比,check一下结果,来检查我们的解析梯度analytic gradient实现是否正确
这个过程称之为Gradient Check
Gradient Descent 梯度下降
梯度下降是对神经网络的LossFunction最优化中最常用的方法
Mini-batch gradient descent小批量梯度下降
它运行得比较好的原因在于效率高,小批量的梯度其实就是对整个数据集梯度的近似,而由于数量较少所以运算速率较高,所以收敛得更快
Stochastic Gradient Descent (SGD) 随机梯度下降
这就是一个mini-batch中只有1个数据的情况
有时候也称为on-line gradient descent在线梯度下降,但是随机梯度下降在实际中几乎没有人用。不过经常还是有人用SGD来去指代mini-batch gradient descent(或者用MGD指代)
一个mini-batch的size虽然是一个超参数,但其实一般不会用交叉验证来调参。这个size经常是决定于存储器的限制,或者就是直接使用32,64,128等
在实际中size的大小一般为2的n次幂。因为当输入的大小是 powers of 2 的时候,很多向量化操作实现会运算的更快一些
mini-batch的lossfuction与迭代次数图像会有很大的噪声但最后的趋势仍然是下降的。如果是Full-batch的话lossfunction与迭代次数的图像会是平滑的
- 20170225#cs231n#3.最优化问题
- CS231n第三课:最优化学习记录
- cs231n-(3)最优化:随机梯度下降
- CS231n 课程笔记翻译:最优化笔记
- CS231n课程笔记翻译4:最优化笔记
- CS231n(10):最优化笔记(上)
- CS231n(11):最优化笔记(下)
- cs231n 问题
- 无约束最优化问题
- 无约束最优化问题
- 最优化问题简介
- 最优化问题简介
- 最优化问题综述
- 解最优化问题
- 最优化问题综述
- 最优化问题综述
- 最优化问题
- 最优化问题
- 数据库中范式和反范式
- glusterFS的部署流程
- union-find算法
- 2017.2.25.期末测评(?)2测试总结
- 决策树算法及代码
- 20170225#cs231n#3.最优化问题
- input和raw_input有何不同?
- C++11(一):在类的定义时初始化非静态变量
- RecyclerView的基本用法
- Qt修炼手册5_文件输入输出
- GlusterFS学习
- MySQL 学习记录(表的操作)
- C#中根据经纬度计算两点的距离
- 又可以重新写博客了!