第一次比较顺利地阅读英文文献(课堂记录)——关于gradient descent 的介绍

这次的阅读比较顺利,不知道是因为原文因为是课堂记录所以比较简单还是在下的水平确实提高了。总之开心!

原文链接:这是一篇stanford的计算机视觉课程课程记录,我一看教授是李飞飞,果然是斯坦福啊,我也想去斯坦福。

一些学术名词

当然了,英文文献最大的障碍就是一些专有名词的理解,下面我列一下:

  • convex function 凸函数,就是初中还是高中学的那个。(其实看形状更像是凹的……注意一下嗯)
    在这里插入图片描述
  • convex set 就是凸数集,就是说,在之中的任意两个数连接起来的线段,线段上的点都包含在这个集合中。也就是圆圆的感觉。(老外真的喜欢搞这些什么集什么集的)
    在这里插入图片描述
  • SVM 支持向量机技术,虽然hh老师课上有这个内容,但是在下没有好好听……有关课程以后再说吧,CS231里面也有。
  • CIFAR-10 这是一个深度学习中十分常用的图片集。
  • piecewise 这个单词是分段的意思,piecewise-linear 也就是线性分段,也就是我们非常熟悉的分段函数,有一些拐点和不同的斜率。
  • subgradient 这是在loss function 不可微的情况下,我们都知道如果不可微,就没办法计算所有点的梯度了,但是在这里我们用subgradient 。
    click here to learn more about subgradient
    在这里插入图片描述
    通俗点说也就是在这个不可微点 x 0 x_0 x0处的 subgradient 就是左趋近和右趋近得到的斜率的闭区间之间的所有数。

概括

首先是介绍了三个主要components:score function, loss function, optimization

  1. A (parameterized) score function mapping the raw image pixels to class scores (e.g. a linear function)
  2. A loss function that measured the quality of a particular set of parameters based on how well the induced scores agreed with the ground truth labels in the training data. We saw that there are many ways and versions of this (e.g. Softmax/SVM).
  3. Optimization is the process of finding the set of parameters W W W that minimize the loss function.

之后又介绍了怎样可视化 Loss Function,如下图,我们沿着平面去看,中间蓝色表示 low loss, 边缘的红色表示 high loss:
在这里插入图片描述在这里插入图片描述
左图表示一个example的情况,有图表示一百个examples的平均情况。可以看出SVM的 cost function 是中间低边缘高,是凸函数的形式。有大量的文献是在说怎样使这种凸函数形式的loss function 最小化。但是当我们把score function 放进Neural Network 中的时候,得到的目标函数就不再是凸函数了,而是不规则的,有些bumpy 的函数。

主要的内容就是讲了gradient descent 的基本思路,包括怎么从十分简单而愚蠢的随机选择参数方法,改进到最后比较成熟而常用的gradient decsent,最后又提到了SDG(stochastic gradient descent),不得不说老外的逻辑真的牛逼,行文流畅逻辑衔接也非常的优秀。斯坦福真香啊。

重点

我之前一直不太理解morvan 课程中讲 optimizer 的时候提到的那些方法(Gradient Descent,Momentum,Adam等)在工作时那些图的含义,现在终于明白了。

  • Gradient Descent 我看到的GD方法的图一直是弯弯曲曲拐点特别多,如下图:
    在这里插入图片描述
    这其实是因为,我们的learning rate 是自行确定的,也就是说,每一步的步长是设置的,走每一步前看好方向,然后就迈出去,然后再看方向,再迈出去,不同位置的gradient descent的方向基本上是不同的,也就导致每次的迈步的方向不同,不是一条直线,更不是完美的梯度弧线。
    在这里插入图片描述
    我们按照 gradient 下降的方向前进,但是每一步要迈多大呢?如果步子太小,虽然走的路线比较流畅,比较符合弧线,但是非常的慢啊;而如果步子太大,虽然快但是又很冒险。关于确定一个合适的 step_size 这个问题一直非常重要。

计算gradient的两种方法

一种是比较简单但是计算量很大的 numerical gradient,另一种是计算量小但是容易出错的analytic gradient。

Grdient Descent

终于到了这个算法了,其实只有两行:

# Vanilla Gradient Descent

while True:
  weights_grad = evaluate_gradient(loss_fun, data, weights)
  weights += - step_size * weights_grad # perform parameter update

mini-batch Grdient Descent

一般情况下我们的training set 很大,每一次更新都全部计算一遍实在是非常浪费,所以我们使用随机提取一个batch 的方法,大大加速这个过程。一般batch 的大小是 2 的幂次方,因为这样结果比较好。

# Vanilla Minibatch Gradient Descent

while True:
  data_batch = sample_training_data(data, 256) # sample 256 examples
  weights_grad = evaluate_gradient(loss_fun, data_batch, weights)
  weights += - step_size * weights_grad # perform parameter update

Stochastic Gradient Descent

随机梯度下降,是指 batch size 为1的情况,我们一般不适用size = 1,但是很多情况下大家都把mini-batch GD 叫成是SGD……

心得体会

现在没有学校逼着我写心得了我反而特别愿意写这东西了haha,真是万事逼不得,某B大学本科的教育还是要动动脑筋吧,不过在下马上就毕业了唉。总要在监督和自主中寻找到自己适合的方式,不过学校的学风真是没得说。
阅读英文文献跟方块字感觉十分不一样啊,感觉英文文献就像流水一样哗哗的推着你往下走,中文文献跳着看也OK。总之看完这一篇,接着看下一篇好啦~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值