神经网络和深度学习(吴恩达) _神经网络基础

本系列笔记旨在记录自己的学习过程,能够及时回顾整理学过的东西,有助于加深理解和记忆。学这个课程的同时,也在看《机器学习》(周志华),所以会将书和视频的内容结合起来,综合学习。

那么本篇主要是第二周的视频课程中讲到的:二分分类Logistic回归损失函数梯度下降向量化

  • 二分分类:

简单的理解就是输出的结果是两个离散的值,就像课程中举的例子:通过输入一张图片的信息,经过一些列的计算,输出一个离散的Y值,预测图片中是否有猫,当Y=1时表示图片中有猫,反之当Y=0时,表示图片中没有猫。神经网络和深度学习(吴恩达) _神经网络基础_第1张图片


  • Logistic回归:

我看很多人将这个翻译成逻辑回归,而在《机器学习》中,作者认为应该更为准确的叫对数几率回归,这里我就不对这两个翻译做过多的纠缠,知道就好,我们的重点应该是理解这个概念。

Logistic回归实际上是实现上面所说的二分分类的具体方法,可以这样理解:线性回归函数y=wx+b的输出区间为(-∞,+∞),而二分分类的输出区间应该是(0,1),用正经的话就是需要一个函数将区间(-∞,+∞)映射到区间(0,1),当然也可以这样通俗的理解:需要对线性函数做一个“整形”手术,而这个“手术刀”就是Sigmoid函数,“整形”的过程就是Sigmoid(y)。下面给出Sigmoid函数的表达式和图像,帮助我们更直观的理解:

神经网络和深度学习(吴恩达) _神经网络基础_第2张图片


  • 损失函数:

损失函数其实有很多,可能容易想到的就是平方损失函数(y-yˆ)²,但它是一个非凸的函数,这样在后面利用梯度下降算法优化权重参数时,得到的仅仅是局部的最优解,并不能得到全局的最优解,如图所示:

神经网络和深度学习(吴恩达) _神经网络基础_第3张图片

所以在Logistic回归中,我们使用的是对数损失函数



这是一个凸函数,可以得到全局的最优解,那么怎么理解这个函数呢?我们可以想这样2个例子:

①当y=0时,L(yˆ,y) = -log(1-yˆ),如果要使损失函数尽可能小,即要log(1-yˆ)尽可能大,所以yˆ要尽可能小,而yˆ的取值区间为(0,1),故yˆ=0

②当y=1时,L(yˆ,y) = -logyˆ,同样如果要使损失函数尽可能小,即要logyˆ尽可能大,所以yˆ=1。

所以我们能通过使损失函数尽可能小,来得到我们正确的预测值yˆ


  • 梯度下降:

Gradient Descent Optimization(梯度下降)是神经网络训练中最常用的参数优化算法。首先要明白梯度是一个向量,向量我们大家都知道,是能表示方向的,梯度的方向就是函数f增长最快的方向,梯度的反方向即函数f下降最快的方向。比如一元函数的梯度y'(y对x的导数),二元函数的梯度就是(f'x,f'y)(函数f对x、y的偏导),以此可以类推的更多元,这里给出一元和二元的图像,能够有更直观的理解梯度下降:

神经网络和深度学习(吴恩达) _神经网络基础_第4张图片

神经网络和深度学习(吴恩达) _神经网络基础_第5张图片

在Logistic回归中,梯度下降算法是如何来更新参数w、b的呢?

神经网络和深度学习(吴恩达) _神经网络基础_第6张图片

首先进行正向传播,得到预测结果a,从而计算出损失函数L(a,y)。接下来进行反向传播,通过求出的dw、db,用w = w - αdw,b = b - αdb来更新参数w、b(α为学习率,当损失函数下降到最小时,参数w、b也就确定下来,模型训练完成。


  • 向量化:

向量化在神经网络中非常非常的重要,课程中也花了大量篇幅讲为什么要向量化,但我这里不想详细阐述。只需知道:①向量化计算速度更快(for循环是线性运算,而向量化后可以并行运算,速度不是一个数量级的)②编码更简单(矩阵的点乘直接用numpy库中的一行语句就能完成)


这周的课后习题是完成一个很简单的神经网络,判断输入的图片中是否有猫,是理论上升到实践的一个很好练手。

神经网络和深度学习(吴恩达) _神经网络基础_第7张图片

网易云课堂上只有视频课,课后习题在github上有。也希望大家down下来自己练练。

你可能感兴趣的:(学习笔记)