(更新中)吴恩达 Deeplearning 神经网络和深度学习第二周笔记

本次笔记会记录吴恩达 Deeplearning 课程的第一个专项课程神经网络和深度学习 Neural Networks and Deep Learning 的第二周课程内容。
本次课涉及到的内容有:

  • 二分类 Binary Classification
  • 逻辑回归 Logistic Regression
  • 逻辑回归代价函数 Logistic Regression Cost Function
  • 梯度下降算法 Gradient Descent
  • 导数 Derivatives
  • 计算图 Computation graph
  • 使用计算图计算导数 Derivatives with a Computation Graph
  • 逻辑回归梯度下降 Logistic Regression Gradient Descent

    二分类 Binary Classification

    在二元分类问题中,结果是离散的输出。其结果简而言之就是非黑即白,只有两种可能性。
    这里我们用猫的图像做例子:
    Cat image by 64*64

图像在计算机系统中一般是按照红绿蓝的三原色光模式矩阵储存,三色矩阵的分辨率与图像本身等同。在机器学习里面我们会据此创建特征向量导入到神经网络中。

如果要创建一个特征向量 $x$, 每个像素点的色值都会被“摊开 unroll” 或者 “重塑 reshape”. 按照一个 64 * 64 分辨率的图片来说,这个输入特征向量 $x$ 的维度 dimension 是 $n_{x}=64\times64\times3=12,288$.

同时,我们对课程中出现的一些数学符号有具体的约定,详见Deep Learning Course Notation.

逻辑回归

逻辑回归是一种用于监督式学习的学习算法,它的输出 $y$ 全是 0 或 1. 而逻辑回归的最终目标是最小化预测值和训练集之间的误差。

还是回到上面那个猫猫的例子。
我们给定的图片将转换成特征向量 $x$: $$
Given\ x, \hat{y}=P(y=1|x), where\ 0 \le \hat{y} \le 1
$$
这其中涉及到的参数 Parameters 有:

  • 输入向量: $x\in\mathbb{R}^{n{x}}$ , 这里 $n{x}$ 是特征总数
  • 训练集标记,即训练集对应的正确输出: $y\in0,1$
  • 权重: $w\in\mathbb{R}^{n{x}}$ , 这里 $n{x}$ 是特征总数
  • 偏置: $b\in\mathbb{R}$
  • 输出值: $\hat{y}=\sigma(w^{T}x+b)$
  • S 函数 Sigmoid Function: $s=\sigma(w^{T}x+b)=\sigma(z)=\frac{1}{1+e^{-z}}$
    Sigmoid Function
    $(w^{T}x+b)$ 可以等同于线性函数 $(ax+b)$, 然而函数本身是在 [0,1] 有界,因此我们也能观察到几个特征:
  • 如果实数 $z$ 是一个极大的正数,那么标准差 $\sigma(z)=1$
  • 如果实数 $z$ 是一个非常小的负数,那么标准差 $\sigma(z)=0$
  • 如果实数 $z$ 恰好等于 0, 那标准差 $\sigma(z)=0.5$

    逻辑回归代价函数

    在讲解代价函数之前,可以稍微理清一下损失函数和代价函数之间的关系:
  • 损失函数 Loss function 是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的,用 $\mathscr{L}$ 表示

  • 代价函数 Cost function 是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。

同时,在笔记中也会约定用 $x^{(i)}$ 表示第 $i$ 个训练样本。
$$\hat{y}^{(i)}=\sigma(w^{T}x^{(i)}+b, \sigma(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}}$$
那在以上公式中,我们就需要做到
$$Given {(x^{(1)},y^{(1)}),\cdots,(x^{(i)},y^{(i)})}, we\ want\ \hat{y}^{(i)}\approx y^{(i)}$$

损失函数 Loss (error) function

课堂讲了两个损失函数的例子。
$$\mathscr{L}(\hat{y}^{(i)},\ y^{(i)}) = \frac{1}{2}(\hat{y}^{(i)}-y^{(i)})^2$$
这是z最常见的平方损失函数,也可以说是最小二乘法 Ordinary Least Squares. 但这里有 $\frac{1}{2}$ 的参数,原因是为了方便后面的梯度下降.
$$\mathscr{L}(\hat{y}^{(i)},\ y^{(i)}) = -y^{(i)}log(\hat{y})+(1-y^{(i)})log(1-\hat{y}^{(i)})$$
这是非常常见的对数损失函数 Log Loss, 其中:

  • 如果 $y^{(i)}=1,\ \mathscr{L}(\hat{y}^{(i)},y^{(i)})=-log(\hat{y}^{(i)})$ 这里 $log(\hat{y}^{(i)})$ 和 $\hat{y}^{(i)}$ 都会无限趋近于1,误差才更小。
  • 如果 $y^{(i)}=0,\ \mathscr{L}(\hat{y}^{(i)},y^{(i)})=-log(1-\hat{y}^{(i)})$ 这里 $log(1-\hat{y}^{(i)})$ 和 $\hat{y}^{(i)}$ 都会无限趋近于0,误差才更小。

代价函数

代价函数就是整个训练集损失函数的算数平均值,我们的目标是找到合适的参数 $w$ 和 $b$ 能是代价函数的值最小。
$$J(w,b)=\frac{1}{m}\sum\limits{i=1}^{n}(\hat{y}^{(i)},y^{(i)})=-\frac{1}{m}\sum\limits{i=1}^{n}[y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)})]$$

Powered by Hexo and Hexo Theme Hiker

Copyright © 2016 - 2018 WoadZS's Blog All Rights Reserved.

WoadZS 保留所有权利