深度学习入门笔记(二)梯度下降法

如愚见指月,观指不观月。

目录

上节回顾——logistic回归模型和成本函数

梯度下降

梯度下降法的执行过程

计算图

logistic模型中的梯度下降算法


上节回顾——logistic回归模型和成本函数

\hat y是在x条件下,y=1的概率。\hat y=P(y=1|x)

如果想要让我们的模型更加精确的话,就要让\hat y尽可能的接近y。所以,我们定义了损失函数和成本函数,用于评估\hat yy的接近程度,以及模型的准确率。

损失函数是对单个样本来说的。

成本函数是对整个数据集来说的。

\hat y=\sigma(w^Tx+b),\sigma (z)=\frac{1}{1+e^{-z}}\\ J(w,b)=\frac{1}{m}\sum^m_{i=1}L(\hat y^{(i)},y^{(i)})=-\frac{1}{m}\sum^m_{i=1}[y^{(i)}log\hat y^{(i)}+(1-y^{(i)})log(1-\hat y^{(i)})]

x是输入的样本数据,y是样本对应的标签,\hat y是我们对y的估计。w\,\,\,b是我们logistic模型的参数,我们希望找到合适的w\,\,\,b来让成本函数尽可能的小。

接下来我们会介绍让成本函数J(w,b)尽可能小的方法。

之所以用这种形式的成本函数,因为这样的成本函数是凸的(convex),只有一个极值,我们用梯度下降法很容易的找到最小值,而不是局部极值。 

深度学习入门笔记(二)梯度下降法_第1张图片

梯度下降

首先让我们来复习一下高数,什么是梯度?

深度学习入门笔记(二)梯度下降法_第2张图片

方向导数:多元函数在某一方向上的导数,代表了多元函数某点在某一方向上的斜率。

例如,二元函数f(x,y)在某点(x_0,y_0)上沿(i,j)方向的方向导数为f_x(x_0,y_0)i+f_y(x_0,y_0)j,其中,向量(i,j)为单位向量。

梯度:是多元函数某点上的一个向量。多元函数某点上梯度的方向,就是能让这一点处方向导数最大的方向。而梯度的模则是方向导数的最大值。(梯度就是方向导数最大的方向)

对于二元函数来说,某一点的梯度就是grad\,f(x_0,y_0)=(f_x(x_0,y_0),f_y(x_0,y_0))。(f_xfx求的偏导,看不懂的话复习一下高数)

用爬山来举例,你在一座山上爬山,你这个位置的梯度,就是这座山上,你所在的这个位置,最陡的那个方向。

梯度下降就像下山,怎么下山才能尽可能快的下山呢?有一个方法就是,向着最陡的那个方向(梯度)走。

当然这样也有问题,就是我们有可能会走到局部极值(局部最优解),而不是最小值(全局最优解),所以我们才要求我们的成本函数是凸的。

深度学习入门笔记(二)梯度下降法_第3张图片

梯度下降法的执行过程

梯度下降法就是重复执行这样的步骤:

w:=w-\alpha\frac{dJ(w)}{dw}

\alpha在这里代表的是学习率,就是梯度下降法中一步的步长。(就是你在“下山”的过程中,一步迈多大)

\frac{dJ(w)}{dw}在这里就是梯度,和grad\,f(x_0,y_0)=(f_x(x_0,y_0),f_y(x_0,y_0))代表的是同一种东西。

注意:w是n维平面上的一个点。J(w)是成本函数。

计算图

例:J(a,b,c)=3(a+bc)

这个函数的计算图便是:

深度学习入门笔记(二)梯度下降法_第4张图片

 与这个蓝色箭头指向的流程相反,便可以进行导数的计算,如红色的箭头所示。

深度学习入门笔记(二)梯度下降法_第5张图片

假如我们想要求得\frac{dJ}{dv},因为J=w=3v,所以\frac{dJ}{dv}=3

反向传播 backpropagatioin

假如我们想求得\frac{dJ}{da}\frac{dJ}{da}=\frac{dJ}{dv}\frac{dv}{da}(这不就是链式求导法则吗?)

logistic模型中的梯度下降算法

z=w^Tx+b\\ \hat y=a=\sigma(z)\\ L(a,y)=-(ylog(a)+(1-y)log(1-a))

如何用反向运算求导如图所示:

深度学习入门笔记(二)梯度下降法_第6张图片

于是,我们就可以用梯度下降法,这是一次梯度的更新步骤。

w_1:=w_1-\alpha\mathrm{d}w_1

w_2:=w_2-\alpha \mathrm{d}w_2

b:=b-\alpha\mathrm{d}b

你可能感兴趣的:(深度学习笔记,费曼笔记本,逻辑回归,算法,机器学习)