美文网首页
【神经网络】Week1 神经网络基础

【神经网络】Week1 神经网络基础

作者: 霞客环肥 | 来源:发表于2019-11-06 15:05 被阅读0次

1.0 二分类 Binary Classification

在二分类问题中,结果是一个离散的值。
比如输入一张图片,判断图片中有猫(1) OR 没有猫(0):

binary classification

这里的X为特征向量,共有12288维。

python trick----对图片x做归一化, x = \frac{x}{||x||}:
x = \begin{bmatrix}0 & 3 & 4 \\ 2 & 6 & 4\end{bmatrix}
这里的||x||在numpy里:np.linalg.norm(x, axis=1, keepdims=True),
||x|| = \begin{bmatrix} 5. \\ \sqrt{56}\end{bmatrix}

2.0 logistic回归

给定x\hat y = P(y=1|x),这里0< \hat y<1.
在logistic回归中的参数包括:

  • x\in R^{n_x}
  • y \in \{0, 1\}
  • w \in R^{n_x}
  • b \in R
  • \hat y = \sigma(w^Tx + b)= \frac{1}{1+ e^{-z}}, 这里z = w^Tx + b
    sigmoid
    可见,如果z很大,\hat y \approx 1,
    反之,如果z很小,\hat y \approx 0

3.0 logistic回归的损失函数

为了求得最优的w, b,我们需要定义损失函数。
对于第i个训练样本x^{(i)},它的预测值为
\hat y^{(i)} = \sigma(w^Tx^{(i) + b}), \text{where } \sigma(z^{(i)})= \frac{1}{1+e^{-z^{(i)}}}

那么对于一个训练集,若共有m个样本,
\{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ...,(x^{(m)}, y^{(m)})\}
我们希望:
\hat y^{(i)} \approx y^{(i)}
在NG的课程里,loss function和 cost function虽然都表示损失函数,但是有区别:

  • loss function,衡量某个样本预测值\hat y^{(i)}和真实值y^{(i)}之间的差距,比如常见的MSE,
    L(\hat y^{(i)}, y^{(i)})= \frac{1}{2}(\hat y^{(i)} - y^{(i)})^2
    或者,在分类问题中常用的,
    L(\hat y^{(i)}, y^{(i)})= -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)})

理解L(\hat y^{(i)}, y^{(i)})= -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)})
如果 y^{(i)}=1, 此时L(\hat y^{(i)}, y^{(i)})=-y^{(i)}\log \hat y^{(i)}, 我们希望y^{(i)}\to 1,L\to 0
如果y^{(i)}=0, 此时L(\hat y^{(i)}, y^{(i)})=(1 -y^{(i)})\log (1- \hat y^{(i)}),我们希望y^{(i)}\to 0,L\to 0.

  • cost function,是对整个训练集的loss之和求平均,衡量整个训练集预测值和真实值之间的差距,
    J(w, b) = \frac{1}{m} \sum_{i=1}^m L(\hat y^{(i)}, y^{(i)})

4.0 梯度下降法 Gradient Descent

我们已经有
J(w, b) = \frac{1}{m} \sum_{i=1}^m L(\hat y^{(i)}, y^{(i)})= \frac{1}{m} \sum_{i=1}^m [-y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)})]
我们想要找到最佳的\{w,b\}使得J(w, b)最小。

image.png
从总体来说,我们希望找到上图最低点的global optima,具体方法看下图, image.png
假设与之间存在如图所示的函数关系,那么可以通过

来更新,同理,

为了简略,以后\frac{{\rm d} J(w, b)}{{\rm d}w}都写作{\rm d}w

5.0&6.0 导数&导数例子

7.0&8.0 计算图&计算图的导数计算

简单理解,就是复合函数,链式求导

computation graph
前向 后向
u = bc \frac{{\rm d}J}{{\rm d}c} =\frac{{\rm d}J}{{\rm d}u} * \frac{{\rm d}u}{{\rm d}c}=3b
v = a + u \frac{{\rm d}J}{{\rm d}u} = \frac{{\rm d}J}{{\rm d}v} * \frac{{\rm d}v}{{\rm d}u }= 3
J = 3v \frac{{\rm d}J}{{\rm d}v} = 3

9.0 logistic回归中的梯度下降

image.png

首先,回顾一下logistic回归,

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

x \in R^2,即
x = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}, w = \begin{bmatrix} w_1 \\ w_2 \end{bmatrix}
那么,
w^Tx =\begin{bmatrix} w_1 & w_2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = w_1x_1 + w_2x_2

前向 后向 简写
z = w_1x_1 + w_2x_2 \frac{{\rm d}L}{{\rm d}w_1} =\frac{{\rm d}L}{{\rm d}z} * \frac{{\rm d}z}{{\rm d}w_1} =x_1*(a-y) {\rm d}w_1
a = \sigma(z) \frac{{\rm d}L}{{\rm d}z} = \frac{{\rm d}L}{{\rm d}a} * \frac{{\rm d}a}{{\rm d}z} = a-y {\rm d}z
L(a, y) = -y\log a + (1-y)\log (1-a) \frac{{\rm d}L}{{\rm d}a} = -\frac{y}{a} + \frac{1-y}{1-a} {\rm d}a

每次更新,
w_1 := w_1 - \alpha {\rm d}w_1
w_2 := w_2 - \alpha {\rm d}w_2
b := b - \alpha {\rm d}b

\frac{{\rm d}L}{{\rm d}z}= \frac{{\rm d}L}{{\rm d}a} * \frac{{\rm d}a}{{\rm d}z} = a-y的求解过程:
已求的\frac{{\rm d}L}{{\rm d}a} = -\frac{y}{a} + \frac{1-y}{1-a},那么\frac{{\rm d}a}{{\rm d}z}=?
已知 a = \sigma(z) = \frac{1}{1+e^{-z}},那么
\begin{align} \frac{{\rm d}a}{{\rm d}z} &=(-1)* (1+e^{-z})^{-2}*(e^{-z})*(-1)\\ &=\frac{e^{-z}}{(1+e^{-z})^2}\\ &=\frac{1+e^{-z}-1}{(1+e^{-z})^2}\\ &=\frac{1+e^{-z}}{(1+e^{-z})^2}-\frac{1}{(1+e^{-z})^2}\\ &= \frac{1}{1+e^{-z}}-\frac{1}{(1+e^{-z})^2}\\ &= a-a^2\\ &=a(1-a)\end{align}
所以,
\begin{align} \frac{{\rm d}L}{{\rm d}z}&= \frac{{\rm d}L}{{\rm d}a} * \frac{{\rm d}a}{{\rm d}z}\\ &=(-\frac{y}{a} + \frac{1-y}{1-a})*[a(1-a)]\\ &=-y(1-a) + [a(1-y)\\ &=-y + ay + a- ay\\ &=a-y \end{align}

10.0 logistic regression on m examples

我们知道对某一个样本,有
L(\hat y^{(i)}, y^{(i)})= -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)})
其中,
z^{(i)} = w^Tx^{(i)} + b
\hat y^{(i)} =a^{(i)}= \sigma(z^{(i)})

而对整个训练集,
J(w, b) = \frac{1}{m} \sum_{i=1}^m L(\hat y^{(i)}, y^{(i)})

每次更新,
\frac{\partial}{\partial w_1} J(w, b) = \frac{1}{m} \sum_{i=1}^m \underbrace{\frac{\partial}{\partial w_1}L(\hat y^{(i)}, y^{(i)})}_{{\rm d}w_1}

现在开始计算参数w, b
设初始值,J =0;{\rm d}w_1=0; {\rm d}w_2 = 0;{\rm d}b=0,

\begin{array}{cc} \fbox{ For i=0 to m:}\\ z^{(i)} = w^Tx^{(i)} + b \\ a^{(i)}= \sigma(z^{(i)}) \\ J += -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)})\\ {\rm d}z^{(i)} = a^{(i)} -y^{(i)}\\ {\rm d}w_1 += x_1^{(i)}{\rm d}z^{(i)}\\ {\rm d}w_2 += x_2^{(i)}{\rm d}z^{(i)}\\ {\rm d}b += {\rm d}z^{(i)}\\ \hline \\ J /= m\\ {\rm d}w_1 /= m\\ {\rm d}w_2 /= m\\ {\rm d}b /= m\\ \end{array}

11.0 向量化 Vectorization

向量化可以优化上述算法,更快,更简约。

举例,已知z =w^T x + b,
x = \begin{bmatrix} x_1 \\ x_2\\ \vdots \\ x^{n_x} \end{bmatrix}, w = \begin{bmatrix} w_1 \\ w_2\\ \vdots \\ w^{n_x} \end{bmatrix}
\begin{array}{cc} \mathrm{Non-vectorized} & \mathrm{Vectorized} \\ \hline \\ z = 0& Z = \text{np.dot(w, x) + b} \\ \text{for i in range(n_x):} & \\ z +=w[i]*x[i] &\\ \end{array}

12.0 logistic回归的向量化

TIP:尽可能避免显式的for循环。

\begin{array}{c|c} {\rm Original}&{\rm Vectorization}\\ \hline J =0;{\rm d}w_1=0; {\rm d}w_2 = 0;{\rm d}b=0 &J =0;{\rm d}w={\rm np.zeros((n_x, 1))};{\rm d}b=0 \\ \hline \fbox{ For i=0 to m:} & \fbox{ For i=0 to m:}\\ z^{(i)} = w^Tx^{(i)} + b&z^{(i)} = w^Tx^{(i)} + b \\ a^{(i)}= \sigma(z^{(i)}) &a^{(i)}= \sigma(z^{(i)})\\ J += -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)}) & J += -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)}) \\ {\rm d}z^{(i)} = a^{(i)} -y^{(i)}\\ {\rm d}w_1 += x_1^{(i)}{\rm d}z^{(i)}& {\rm d}w += x^{(i)} {\rm d}z^{(i)}\\ {\rm d}w_2 += x_2^{(i)}{\rm d}z^{(i)}\\ {\rm d}b += {\rm d}z^{(i)}\\ \hline J /= m&J /= m\\ {\rm d}w_1 /= m &{\rm d}w /= m\\ {\rm d}w_2 /= m\\ {\rm d}b /= m&{\rm d}b /= m\\ \end{array}

13.0 m个样本的向量化

12.0只是对一个样本进行向量化,那么对训练集的m个样本可以进行向量化吗?

样本1 样本2 ... 样本m
z^{(1)} = w^T x^{(1)} +b z^{(2)} = w^T x^{(2)} +b ... z^{(m)} = w^T x^{(m)} +b
a^{(1)} = \sigma(z^{(1)}) a^{(2)} = \sigma(z^{(2)}) ... a^{(m)} = \sigma(z^{(m)})

可见,设X,是所有样本的向量化,且X\in R^{n_x\times m}

X = \underbrace{\begin{bmatrix} |&|&...&|\\ x^{(1)}&x^{(2)} &...&x^{(m)}\\ |&|&...&|\\\end{bmatrix}}_{m}

已经Z的向量化为,
\begin{align} Z &= \begin{bmatrix} z^{(1)}&z^{(2)} &...&z^{(m)}\end{bmatrix}\\ &=\begin{bmatrix} w^T x^{(1)} +b&w^T x^{(2)} +b &...&w^T x^{(m)} +b\end{bmatrix}\\ &=w^TX + b \end{align}
所以,

Z = np.dot(w.T, X) + b

同理,A的向量化,
A = \begin{bmatrix} a^{(1)}&a^{(2)} &...&a^{(m)}\end{bmatrix} = \sigma(Z)

14.0 m个样本的向量化后的梯度计算

A = \begin{bmatrix} a^{(1)}&a^{(2)} &...&a^{(m)}\end{bmatrix}, Y = \begin{bmatrix} y^{(1)}&y^{(2)} &...&y^{(m)}\end{bmatrix}.

这时,再与初始的,包含多个for循环的算法对比:

\begin{array}{c|c} {\rm Original}&{\rm Vectorization}\\ \hline J =0;{\rm d}w_1=0; {\rm d}w_2 = 0;{\rm d}b=0&\fbox{ For iter in range(1000):} \\ \hline \fbox{ For i=0 to m:}&Z = {\rm np.dot}(w.T,X)+b\\ z^{(i)} = w^Tx^{(i)} + b&A = \sigma (Z) \\ a^{(i)}= \sigma(z^{(i)}) & {\rm d}Z = A - Y\\ J += -y^{(i)}\log \hat y^{(i)} + (1 -y^{(i)})\log (1- \hat y^{(i)}) &{\rm d}w = \frac{1}{m}X({\rm d}Z)^T\\ {\rm d}z^{(i)} = a^{(i)} -y^{(i)}&{\rm d}b = \frac{1}{m}{\rm np.sum({\rm d}Z)}\\ {\rm d}w_1 += x_1^{(i)}{\rm d}z^{(i)}&w:=w - \alpha{\rm d}w\\ {\rm d}w_2 += x_2^{(i)}{\rm d}z^{(i)}&b:=b - \alpha{\rm d}b\\ {\rm d}b += {\rm d}z^{(i)}\\ \hline J /= m\\ {\rm d}w_1 /= m \\ {\rm d}w_2 /= m\\ {\rm d}b /= m\\ \end{array}

相关文章

  • 吴恩达 —— 深度学习 Course 1 笔记

    Course1:神经网络和深度学习,包括: [1] Week1:深度学习概述[2] Week2:神经网络基础[3]...

  • 【神经网络】Week1 神经网络基础

    1.0 二分类 Binary Classification 在二分类问题中,结果是一个离散的值。比如输入一张图片,...

  • 神经网络(一)

    神经网络 1. 神经网络基础 2. 浅层神经网络分析 3. 卷积神经网络 4. 卷积神经网络MNIST数字图片识别...

  • 神经网络(二)

    神经网络 1. 神经网络基础 2. MNIST数据集浅层神经网络分析 3. 卷积神经网络 4. 卷积神经网络MNI...

  • datawhale-task05(卷积神经网络基础;leNet;

    卷积神经网络基础 LeNet和其他进阶卷积神经网络

  • 神经网络介绍

    1 人工神经网络基础介绍 1.1 人工神经网络的现实基础 人工神经网络是模拟人的大脑所设计出来的模型,通过模拟...

  • 人工智能教程 - 目录

    目录 请先看前言 前言 1 深度学习 1.1 介绍神经网络 1.1.1 什么是神经网络 1.2 神经网络基础 1....

  • LSTM原理及生成藏头诗(Python)

    一、基础介绍 1.1 神经网络模型 常见的神经网络模型结构有前馈神经网络(DNN)、RNN(常用于文本 / 时间系...

  • 深度学习概念和基础

    深度学习是以神经网络为基础的,神经网络是机器学习的一种算法。 关于机器学习中的神经网络: 机器学习之神经网络1前向...

  • 18-tensorflow

    基础 深度学习介绍 深度学习,如深度神经网络、卷积神经网络和递归神经网络已被应用计算机视觉、语音识别、自然语言处理...

网友评论

      本文标题:【神经网络】Week1 神经网络基础

      本文链接:https://www.haomeiwen.com/subject/fitdbctx.html