2 min read

梯度下降 gradient descent 学习笔记

本文于2020-10-10更新。 如发现问题或者有建议,欢迎提交 Issue

整合之前梯度下降的文章。

1 梯度下降和 β

这是梯度下降的公式

J(θ)=12(yy^θ)2

这里的yx都是训练集给定的,如果要减小J(θ)只能通过不断变动向量θ的值,从而得到最小的J(θ)

2 三种梯度下降方式

  • 批量梯度下降法BGD: 全量
  • 随机梯度下降法SGD: 一个
  • min-batch 小批量梯度下降法MBGD: 若干个

三者的区别在于梯度下降时J(θ)使用样本的大小。、

θj:=θj0αθjJ(θ)

这是每个θj更新的方式。 这里以批量梯度下降法BGD的方式,进行推导。

θjJ(θ)=θj12(yy^)2=122(yy^)θj(yy^)=(yy^)θj((yiθxi))=(yy^)(xi)=1mi=1m(yy^)(xi)

  • 批量梯度下降法BGD: 全量

θj:=θj+1mi=1m(yiy^)xi

  • 随机梯度下降法SGD: 一个

θj:=θj+(yiy^)xi

  • min-batch 小批量梯度下降法MBGD: 若干个

θj:=θj+α110i=1i+9(yiy^)xi # 神经网络的bias的定义

bias其实就是每个方程的截距。

每个节点都有一个bias,一次一共有16个bias。 因此到目前为止,784×16w16个bias。 (3Blue1Brown 2018a)

这是全部弄下来的bias数量和w数量。

于是转化成了线性代数的问题。 这个地方对线性代数的解释非常到位(14:26) 。

α(1)=σ(Wα(0)+b)

这里α(i)表示第几层。

Relu其实一点都不简单,关键是为了描述突变,描述inactiveactive

3 梯度下降一定是按照最陡的方向 (忆臻 2018)

假设,空间点从A点移动到B点。 空间两个特征变量x1x2z=f(x)是损失函数,x=[x1,x2]。 假设xx+ΔxΔx是移动的向量,那么,

Δz=f(x+Δx)f(x)

使用泰勒公式,近似得到,

Δz=f(x+Δx)f(x)=fT(x)Δx

fT(x)是各种偏导集合的矩阵1。不理解的话,就当成一阶导数理解吧。 并且这句是梯度下降公式中的梯度。 注意这里fT(x)Δx是两个向量,fT(x)显然是x点的切线方向, Δx是移动向量方向。

要下降最快,就是说, maxΔzmaxfT(x)Δxmax||fT(x)||||Δx||cos(θ)maxcos(θ)θ=0

因此当移动方向是切线方向是下降最快的。

4 神经网络的过程 (3Blue1Brown 2018b)

无隐藏层的神经网络就是一般线性方程。

最形象的图, 输入层784个节点, 第一层隐藏层16个,相当于每个输入层的节点都跟第一层隐藏层的节点链接。 第二个隐藏层16个, 输出层10个。 因此w784×16+16×16+16×10

定义好后,梯度下降,找最合适的θ,使得损失最小。

这里有13000个w,但是都是一个列向量而已,用 C(W)=Cw表示。 13000个分力最后会给出一个合力。

最后这张图解释了,虽然在点(1,1)但是明显最快方向为(3,1)也就是说,梯度下降不一定是直线的,会拐弯。 因此梯度下降一定是按照最陡的方向(3)。

参考文献

3Blue1Brown. 2018a. “深度学习之神经网络的结构 Part 1.” 2018. https://www.bilibili.com/video/av15532370/.

———. 2018b. “深度学习之神经网络的结构 Part 2.” 2018. https://www.bilibili.com/video/av6731067/.

忆臻. 2018. “为什么梯度的负方向是局部下降最快的方向?.” 2018. http://mp.weixin.qq.com/s/k4VkZG9QYHeXiBiNuWdKnA.


  1. 因为导数满足adding和scaling的性质,因此用矩阵来表达。