01.神经网络和深度学习 —— week2 神经网络基础

2.1 二分类问题

1. 两个问题

  • 实现神经网络如果遍历训练集,不需要用for循环;
  • 为什么神经网络的计算过程可以分为前向传播和后向传播;

2. 给出几个符号及含义

  • 样本 ( x , y ) (x,y) ,训练样本包括m个;
  • x R n x x∈R^{n_{x}} ,表示样本x包含 n x n_{x} 个特征(hight * width * channel);
  • y ( 0 , 1 ) y∈(0,1) ,目标值属于0,1分类;
  • 训练数据: ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) {(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ... , (x^{(m)}, y^{(m)})}
  • X = [ x ( 1 ) , x ( 2 ) , . . . , x ( m ) ] X . s h a p e = ( n x , m ) X = [ x^{(1)}, x^{(2)} , ... , x^{(m)}],X.shape = (n_{x}, m)
  • Y = [ y ( 1 ) , y ( 2 ) , . . . , y ( m ) ] Y . s h a p e = ( 1 , m ) Y = [ y^{(1)}, y^{(2)}, ... , y^{(m)} ],Y.shape = (1, m)

2.2 Logistic Regression

  • l o g i s t i c r e g r e s s i o n logistic regression 用于二分类问题的监督学习;
  • 分类任务中: G i v e n Given x x , w a n t want y ^ = P ( y = 1 x ) \widehat{y}=P(y=1|x) ,其中 x R n x x \in R^{n_{x}} y { 0 , 1 } y \in \{0, 1\} y ^ [ 0 , 1 ] \widehat{y}\in[0, 1]
  • Parameters: w R n x w \in R^{n_{x}} b R b\in R
  • 计算 y ^ = w T x + b \widehat{y}=w^{T}x+b ,引入sigmoid函数限制 y ^ \widehat{y} 取值范围: y ^ = s i g m o i d ( w T x + b ) = σ ( w T x + b ) \widehat{y}=sigmoid(w^{T}x+b)=\sigma(w^{T}x+b)
  • σ ( z ) = 1 1 + e z \sigma(z)=\frac{1}{1+e^{-z}} σ ( z ) = σ ( z ) ( 1 σ ( z ) ) \sigma'(z)=\sigma(z)(1-\sigma(z))
  • s i g m o i d sigmoid 函数图像:
    sigmoid函数图像
    - 梯度消失问题;

2.3 Logistic Regression cost function

为了训练 l o g i s t i c logistic 回归模型的参数 w w 以及 b b ,需要定义一个成本函数。

1. recap

  • y ^ ( i ) = σ ( w T x ( i ) + b ) \widehat{y}^{(i)}=\sigma(w^{T}x^{(i)}+b) w h e r e where σ ( z ( i ) ) = 1 1 + e z ( i ) \sigma(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}} z ( i ) = w T x ( i ) + b z^{(i)}=w^{T}x^{(i)}+b
  • G i v e n Given X = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } X = \{x^{(1)}, x^{(2)} , ... , x^{(m)} \} w a n t want y ^ ( i ) y ( i ) \widehat{y}^{(i)}\thickapprox y^{(i)}

2. loss (error) function

  • 一般使用平方误差函数 ( s q u a r e d (squared e r r o r error) L ( y ^ , y ) = 1 2 ( y ^ y ) 2 L(\widehat{y}, y)= \frac{1}{2}(\widehat{y}-y)^{2} ,但在logistic regression里,一般不用平方误差作为loss function,因为平方误差损失函数一般是非凸函数,使用梯度下降时,容易得到局部最优解,而不是全局最优。
  • l o g i s t i c r e g r e s s i o n l o s s f u n c t i o n logistic regression 的 loss function L ( y ^ , y ) = ( y l o g y ^ + ( 1 y ) l o g ( 1 y ^ ) ) L(\widehat{y}, y)= -(ylog\widehat{y}+(1-y)log(1-\widehat{y}))
    y = 1 y=1 时, L ( y ^ , y ) = l o g y ^ L(\widehat{y}, y)= -log\widehat{y} y ^ 1 \widehat{y}\rightarrow1 时, L ( y ^ , y ) 0 L(\widehat{y}, y)\thickapprox0 ,表示预测效果越好; y ^ 0 \widehat{y}\rightarrow0 时, L ( y ^ , y ) L(\widehat{y}, y)\thickapprox\infin ,表示预测效果越差;
    y = 0 y=0 时, L ( y ^ , y ) = l o g ( 1 y ^ ) ) L(\widehat{y}, y)=-log(1-\widehat{y})) y ^ 0 \widehat{y}\rightarrow0 时, L ( y ^ , y ) 0 L(\widehat{y}, y)\thickapprox0 ,表示预测效果越好; y ^ 1 \widehat{y}\rightarrow1 时, L ( y ^ , y ) L(\widehat{y}, y)\thickapprox\infin ,表示预测效果越差;
  • l o s s f u n c t i o n loss function 是在单个训练样本中定义的,衡量了算法在单个训练样本上的表现。

3. Cost Function

  • 衡量参数 w w b b 在全体训练样本上的表现,是所有训练样本的 l o s s f u n c t i o n loss function 之和。
  • J ( w , b ) = 1 m i = 1 m L ( y ^ ( i ) , y ( i ) ) = 1 m i = 1 m [ ( y l o g y ^ + ( 1 y ) l o g ( 1 y ^ ) ) ] J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\widehat{y}^{(i)}, y^{(i)})=-\frac{1}{m}\sum_{i=1}^m[(ylog\widehat{y}+(1-y)log(1-\widehat{y}))]
  • C o s t F u n c t i o n Cost Function 是关于参数 w b w,b 的函数,我们的目标是迭代计算出最佳的 w b w和b 的值,最小化 C o s t F u n c t i o n Cost Function ,使其尽可能趋近于0。

2.4 梯度下降法

使用梯度下降法来训练或学习得到训练集上的参数 w w b b ,使 c o s t cost f u n c t i o n function 最小。

  • r e p e a t : { repeat:\{
                           w = : w α δ J ( w , b ) δ w w=:w-\alpha\frac{\delta J(w,b)}{\delta w}
                            b = : b α δ J ( w , b ) δ b b=: b-\alpha\frac{\delta J(w,b)}{\delta b}
                     } \}
    在程序代码中通常使用 d w dw 来表示 δ J ( w , b ) δ w \frac{\delta J(w,b)}{\delta w} d b db 来表示 δ J ( w , b ) δ b \frac{\delta J(w,b)}{\delta b}
  • 直观看梯度下降:
    梯度下降
  • 从低维解释梯度下降:
    在这里插入图片描述

2.5 计算图

一个神经网络的计算都是按照前向或反向传播的过程来计算的。首先计算出神经网络的输出,接着进行反向传输操作(计算对应的梯度或导数)。

  • 示例:
    在这里插入图片描述

2.6 Logistc Regression中的梯度下降

  • L o g i s t i c Logistic R e g r e s s i o n Regression 中的 l o s s loss f u n c t i o n function 表达式:
    z = w T x + b z=w^{T}x+b
    y ^ = a = σ ( z ) \widehat{y}=a=\sigma(z)
    L ( a , y ) = ( y l o g ( a ) + ( 1 y ) l o g ( 1 a ) ) L(a, y)=-(y*log(a)+(1-y)*log(1-a))

  • 反向传播过程:
    反向传播过程

  • 反向传播计算导数:

    d a = δ L δ a = y a + 1 y 1 a da=\frac{\delta L}{\delta a}=- \frac{y}{a}+\frac{1-y}{1-a}

    d z = δ L δ z = δ L δ a δ a δ z = ( y a + 1 y 1 a ) a ( 1 a ) = a y dz=\frac{\delta L}{\delta z}=\frac{\delta L}{\delta a}·\frac{\delta a}{\delta z}=(-\frac{y}{a}+\frac{1-y}{1-a})·a(1-a)=a-y

    d w 1 = δ L δ w 1 = δ L δ z δ z δ w 1 = ( a y ) x 1 dw_1=\frac{\delta L}{\delta w_1}=\frac{\delta L}{\delta z}·\frac{\delta z}{\delta w_1}=(a-y)·x_1

    d b = δ L δ b = δ L δ z δ z δ b = a y d_b=\frac{\delta L}{\delta b}=\frac{\delta L}{\delta z}·\frac{\delta z}{\delta b}=a-y

  • 参数更新:

    w 1 = : w 1 α d w 1 w_1=:w_1-\alpha dw_1
    w 2 = : w 2 α d w 2 w_2=:w_2-\alpha dw_2
    b = : b α d b b=:b-\alpha db

2.7 m个样本的梯度下降

  • l o g i s t i c logistic r e g r e s s i o n regression c o s t cost f u n c t i o n function 表达:

    z ( i ) = w T x ( i ) + b z^{(i)}=w^{T}x^{(i)}+b

    y ^ ( i ) = a ( i ) = σ ( z ( i ) ) \widehat y^{(i)}=a^{(i)}=\sigma(z^{(i)})

    J ( w , b ) = 1 m i = 1 m L ( y ^ ( i ) , y ( i ) ) = 1 m i = 1 m [ ( y l o g y ^ + ( 1 y ) l o g ( 1 y ^ ) ) ] J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\widehat{y}^{(i)}, y^{(i)})=-\frac{1}{m}\sum_{i=1}^m[(ylog\widehat{y}+(1-y)log(1-\widehat{y}))]

  • 全局成本函数实际上是 1 1 m m 项损失函数和的平均,因此全局成本函数对 w 1 w_1 的导数,同样是各项损失函数对 w 1 w_1 导数和的平均值。即:

          d z ( i ) = a ( i ) y ( i ) dz^{(i)}=a^{(i)}-y^{(i)}

          d w 1 = 1 m i = 1 m d z ( i ) x 1 ( i ) dw_1=\frac{1}{m}\sum_{i=1}^{m}dz^{(i)}·x_1^{(i)}

          d w 2 = 1 m i = 1 m d z ( i ) x 2 ( i ) dw_2=\frac{1}{m}\sum_{i=1}^{m}dz^{(i)}·x_2^{(i)}

          d b = 1 m i = 1 m ( a ( i ) y ( i ) ) d_b =\frac{1}{m}\sum_{i=1}^{m}(a^{(i)}-y^{(i)})

  • 参数更新

2.8 向量化

深度学习的算法中,我们通常面临大数据集,程序编写过程中,尽可能减少loop循环语句,使用向量化提高程序运行速度。

  • 逻辑回归向量化
    输入矩阵 X : ( n x , m ) X:(n_x,m)
    权重矩阵 w : ( n x , 1 ) w:(n_x,1)
    偏置变量 b : b:一个常数
    输出矩阵 Y : ( 1 , m ) Y:(1,m)

  • 单次迭代梯度下降算法流程:

#正向
Z = np.dot(w.T,X)+b
A = sigmoid(Z)
#反向
dZ = A - Y
dw = 1/m * np.dot(X,dZ.T)
db = 1/m * np.sum(dZ)
#参数更新
w = w - alpha * dw
b = b - alpha * db

2.9 logistic regression cost function 的解释

预测输出 y ^ = σ ( w T x + b ) w h e r e \widehat{y}=\sigma(w^Tx+b),where σ ( z ) = 1 1 + e z \sigma(z)=\frac{1}{1+e^{-z}} y ^ \widehat{y} 表示预测输出为正类(+1)的概率。

  • l o s s loss f u n c t i o n : function:
    y ^ = P ( y = 1 x ) \widehat{y}=P(y=1|x) :当 y = 1 y=1 时, P ( y x ) = y ^ P(y|x)=\widehat{y} ;当 y = 0 y=0 时, P ( y x ) = 1 y ^ P(y|x)=1-\widehat{y}
    上述两种情况整合到一起,即 P ( y x ) = y ^ y ( 1 y ^ ) 1 y P(y|x)=\widehat{y}^{y}(1-\widehat{y})^{1-y}
    对上式进行log处理(单调函数不影响原函数的单调性):
    l o g P ( y x ) = l o g ( y ^ y ( 1 y ^ ) 1 y ) = y l o g y ^ + ( 1 y ) ( 1 y ^ ) logP(y|x)=log(\widehat{y}^{y}(1-\widehat{y})^{1-y})=ylog\widehat{y}+(1-y)(1-\widehat{y})
    概率 P ( y x ) P(y|x) 表示预测的准确性,越大越好。对上式加上负号,转化为单个样本的 l o s s loss 函数,期望越小越好:
    L ( y ^ , y ) = ( y l o g y ^ + ( 1 y ) ( 1 y ^ ) ) L(\widehat{y},y)=-(ylog\widehat{y}+(1-y)(1-\widehat{y}))
  • c o s t cost f u n c t i o n : function:
    m m 个训练样本时,假设样本之间独立同分布,则:

        P ( l a b e l P(label i n in l a b e l s e t ) = i = 1 m P ( y ( i ) x ( i ) ) labelset)=\prod_{i=1}^{m}P(y^{(i)}|x^{(i)})

   l o g P ( . . . ) = i = 1 m P ( y ( i ) x ( i ) ) = i = 1 m L ( y ^ , y ) \Rightarrow logP(...)=\sum^m_{i=1}P(y^{(i)}|x^{(i)})=-\sum^m_{i=1}L(\widehat{y},y)

        此时 c o s t cost f u n c t i o n : function: (因为 c o s t cost 求最小,加负号)

        J ( w , b ) = 1 m i = 1 m L ( y ^ , y ) = 1 m i = 1 m ( y l o g y ^ + ( 1 y ) ( 1 y ^ ) ) J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\widehat{y},y)=-\frac{1}{m}\sum_{i=1}^{m}(ylog\widehat{y}+(1-y)(1-\widehat{y}))

参考资料:

[1] Andrew Ng 课程笔记连载:https://zhuanlan.zhihu.com/p/29688927
[2] 网易云课堂 Andrew Ng课程

本周编程作业链接:https://blog.csdn.net/iCode_girl/article/details/86702982
测验链接:https://blog.csdn.net/u013733326/article/details/79865858

猜你喜欢

转载自blog.csdn.net/iCode_girl/article/details/86670835