吴恩达深度学习课程之第一门课 神经网络和深度学习 第二周课程笔记一

本文参考黄海广主编针对吴恩达深度学习课程DeepLearning.ai 《深度学习课程 笔记 (V5.1 )》

第二周:神经网络的编程基础 (Basics of Neural Network rogramming)

2.1 二分类(Binary Classification)

学习神经网络的基础知识,在神经网络的计算中,通常先有一个叫做前向暂停(forward pause)或叫做前向传播(foward propagation)的步骤,接着有一个叫做反向暂停(backward pause) 或叫做反向传播(backward propagation)的步骤,会向你介绍为什么神经网络的训练过程可以分为前向传播和反向传播两个独立的部分。

使用逻辑回归(logistic regression)来传达这些想法,逻辑回归是一个用于二分类(binary classification)的算法。首先我们从一个问题开始说起,这里有一个二分类问题的例子,假如你有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签 1 作为结果;如果识别出不是猫,那么输出标签 0 作为结果。现在我们可以用字母 y来 表示输出的结果标签

一张图片在计算机中是如何表示的,为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,如果你的图片大小为 64x64 像素,那么你就有三个规模为 64x64 的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。为了便于表示,这里我画了三个很小的矩阵,注意它们的规模为 5x4 而不是 64x64,如下图所示:

 为了把这些像素值放到一个特征向量中,我们需要把这些像素值提取出来,然后放入一个特征向量x。在二分类问题中,我们的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果y为 1 还是 0,也就是预测图片中是否有猫。

符号定义 :
x:表示一个nx维数据,为输入数据,维度为(nx ,1);
y:表示输出结果,取值为(0,1);(二分类)
(x (i) ,y (i) ):表示第i组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;
X = [x (1) ,x (2) ,...,x (m) ]:表示所有的训练数据集的输入值,放在一个 nx × m的矩阵中,其中m表示样本数目;
Y = [y (1) ,y (2) ,...,y (m) ]:对应表示所有训练数据集的输出值,维度为1 × m。

用一对(x,y)来表示一个单独的样本,x代表nx 维的特征向量,y 表示标签(输出结果)只0 或 1。 而训练集将由𝑛个训练样本组成,其中(x (1) ,y (1) )表示第一个样本的输入和输出,(x(2) ,y (2) )表示第二个样本的输入和输出,直到最后一个样本(x (m) ,y (m) ),然后所有的这些一起表示整个训练集。有时候为了强调这是训练样本的个数,会写作Mtrain ,当涉及到测试集的时候,我们会使用Mtest来表示测试集的样本数,所以这是测试集的样本数。

最后为了能把训练集表示得更紧凑一点,我们会定义一个矩阵用大写X的表示,它由输量x (1) 、x (2) 等组成,如下图放在矩阵的列中,所以现在我们把x (1) 作为第一列放在矩阵中,x (2) 作为第二列,x(m) 放到第m列,然后我们就得到了训练集矩阵X。

X是一个规模为nx 乘以m的矩阵,当你用 Python 实现的时候,你会看到 X.shape ,这是一条 Python 命令,用于显示矩阵的规模,即 X.shape 等于(nx ,m)

那么输出标签y,规模为 1 乘以𝑛的矩阵,同样地使用 Python 将表示为 Y.shape 等于(1,m),表示这是一个规模为 1 乘以𝑛的矩阵。

 2.2 逻辑回归(Logistic Regression)

本节将主要介绍逻辑回归的 Hypothesis Function(假设函数)

一个算法能够输出预测,你只能称之为y^ ,也就是你对实际值 y的估计。更正式地来说,你想让 y ^ 表示 y等于 1 的一种可能性或者是机会,前提条件是给定了输入特征X。在之前的视频中所说的,X是一个nx 维的向量(相当于有nx 个特征的特征向量)。我们用𝑥来表示逻辑回归的参数,这也是一个nx维向量(因为𝑥实际上是特征权重,维度与特征向量相同),参数里面还有b,这是一个实数(表示偏差)。所以给出输入x以及参数w和b之后,我们怎样产生输出预测值y^ ,一件你可以尝试却不可行的事是让y ^ = wt + b。时候我们得到的是一个关于输入x的线性函数,实际上这是你在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法.

因为你想让y^ 表示实际值y等于 1的机率的话,y^ 应该在 0 到 1 之间。这是一个需要解决的问题。

 因为Wt + 𝑐b能比 1 要大得多,或者甚至为一个负值。对于你想要的在 0 和 1 之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是y^ 等于由上面得到的线性函数式子作为自变量的 sigmoid函数中,公式如上图最下面所示,将线性函数转换为非线性函数。下图是 sigmoid 函数的图像,如果我把水平轴作为z轴,那么关于z的 sigmoid 函数是这的,它是平滑地从 0 走向 1,让我在这里标记纵轴,这是 0,曲线与纵轴相交的截距是 0.5,这就是关于z的 sigmoid 函数的图像。我们通常都使用𝑨来表示Wt+ b的值

 

 

 

2.3 逻辑回归的代价函数(Logistic Regression Cost Function)

2.2我们讲了逻辑回归模型,2.3讲逻辑回归的代价函数(也翻译作成本函数)。逻辑回归可以看做是一个非常小的神经网络

为什么需要代价函数:
为了训练逻辑回归模型的参数参数w和参数b我们,需要一个代价函数,通过训练代价函数来得到参数w和参数b。先看一下逻辑回归的输出函数:

为了让模型通过学习调整参数,你需要给予一个m样本的训练集,这会让你在训练集上找到参数w和参数b,,来得到你的输出。对训练集的预测值,我们将它写成y^ ,

训练样本i所对应的预测值是y (i) ,是用训练样本的Wt + b然后通过 sigmoid 函数来得到,也可以把z定义为
z(i) = Wt x (i) + b,我们将使用这个符号(i)注解,上标(i)来指明数据表示x或者y,或者z或者其他数据的第个i 训练样本,这就是上标(i)的含义。

损失函数:
损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:𝑀(y^ ,y).
我们通过这个𝑀称为的损失函数,来衡量预测输出值和实际值有多接近一般我们用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是我们在逻辑回归模型中会定义另外一个损失函数。

为什么要用这个函数作为逻辑损失函数?

因为当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值。当我们使用平方误差作为损失函数的时候,你会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小,为了更好地理解这个损失函数怎么起作用,我们举两个例子

损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何为了衡量算法在全部训练样本上的表现如何,我们需要定义一个算法的代价函数,算法的代价函数是对m个样本的损失函数求和然后除以m :

损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻辑回归模型时候,我们需要找到合适的w和b,来让代价函数 J 的总代价降到最低。 根据我们对逻辑回归算法的推导及对单个样本的损失函数的推导和针对算法所选用参数的总代价函数的推导,结果表明逻辑回归可以看做是一个非常小的神经网络

2.4 梯度下降法

梯度下降法可以做什么?

在你测试集上,通过最小化代价函数(成本函数)J(w,b)来训练的参数w和b

如图,代价函数(成本函数)𝐾(𝑥,𝑐)是一个凸函数(convex function),像一个大碗一样

如图,这就与刚才的图有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数(成本函数)J(w,b)特性,我们必须定义代价函数(成本函数)J(w,b)为凸函数。 初始化w和b。

梯度下降算法步骤:

1. 初始化w和b

2. 朝最陡的下坡方向走一步,不断地迭代

3.直到走到全局最优解或者接近全局最优解的地方

通过以上的三个步骤我们可以找到全局最优解,也就是代价函数(成本函数)J(w,b)这个凸函数的最小值点。

更新权重

2.5 导数(Derivatives )

2.6 更多的导数例子(More Derivative Examples )

有关导数

第一点,导数就是斜率,而函数的斜率,在不同的点是不同的。

第二点,导数公式

 

2.7 计算图(Computation Graph)

可以说,一个神经网络的计算,都是按照前向或反向传播过程组织的。

首先我们计算出一个新的网络的输出(前向过程),紧接着进行一个反向传输操作,后者我们用来计算出对的梯度或导数

 概括一下:计算图组织计算的形式是用蓝色箭头从左到右的计算,反向红色箭头(也就是从右到左)的导数计算

2.8 计算图的导数计算(Derivatives with a Computation  Graph )

使用流程计算图来计算函数 J。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clark-dj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值