梯度下降(gradient decent)

基本概念

  • 什么是梯度:在多元函数中,梯度可理解为求各个变量的偏导数,最终各个偏导组合成梯度向量,即代表该函数在该点变化最快的方向。
    eg: \(f(x,y)=x^2+y^2\), 梯度向量为(2x,2y),在点(1,1)处的梯度即为(2,2),即沿(2,2)这个方向函数变化最快。
  • 梯度下降的作用: 求损失函数的最小值. 因为梯度是函数值下降最快的方向, 所以经常用梯度来构造参数的更新表达式, 以此来求使得损失函数的函数值最小的参数值.

Vanilla Gradient Descent(普通梯度下降)

1、求解梯度向量
2、一点点沿着梯度的方向迭代更新函数值,使函数最终下降到局部最小值处。
$$
\theta^{new}_j=\theta^{old}_j-\alpha\nabla_{\theta}J(\theta)=\theta^{old}_j-\alpha\frac {\partial}{\partial \theta^{old}_j}J(\theta)
$$
注1: \(J(\theta)\)是损失函数, \(\theta\)是参数, \(\alpha\)是步长(step size).
注2: 步长\(\alpha\)的值若取太小则求解速度慢,取则会造成抖动。
解决方法:距离谷底较远时,步幅大些比较好(加快速度);接近谷底时,步幅小些比较好(以免跨过界)。距离谷底的远近可以通过梯度的数值大小间接反映,接近谷底时,坡度会减小,因此可设置步长与梯度数值大小正相关。

Stochastic Gradient Descent(SGD,随机梯度下降)

VGD中,损失函数相当于每个数据样本取平均值,因此每次更新都需要遍历所有data,当数据量太大,更新一次梯度会花费大量时间,因此并不可行。
解决这个问题的基本思路:只通过一个随机选取的数据(xn,yn)来获取梯度(通常损失函数都是很多项的变量加和得到的,这时只取一项计算其梯度,用来估计整体的梯度),这种方法叫随即梯度下降。
虽然这样估计梯度非常粗糙,但事实证明这种方法效果还不错。

Softmax函数

  • 作用:Takes an un-normalized vector, and normalizes it into a probability distribution. After applying Softmax, each element \(x_i\) will be in the interval \([0,1]\) and \(\sum_ix_i=1\).
  • 公式:
    $$
    p(x_i) = \frac {exp(e_i)} {\sum_{n=1}^Nexp(x_n) }
    $$
  • 应用:可用于分类任务中,对目标进行线性分类;也经常用在神经网络中,用于将输出值归一化(原先值可能有负数,可能大于1,且所有值加和不为1),可视为产生概率分布。

Sigmoid函数


Post Date: 2018-11-06

版权声明: 本文为原创文章,转载请注明出处