Neural Networks and Deep Learning 第二周 逻辑回归总结

一、以神经网络的方式看逻辑回归


  • 构建学习算法的一般结构,包括:
    • 初始化参数
    • 计算损失函数及其梯度
    • 使用一个最优化算法(例如梯度下降法)
  • 正确整合上述函数至模型函数中

1 - 常用库

在开始训练之前需要将自己用到的库进行载入:
仅为介绍步骤,不全为后述实例所用到的库

  • numpy:科学计算包.
  • pandas:
  • h5py: 用于与H5格式文件进行数据交互.
  • matplotlib:常用的绘图包.
    #python
    import pandas
    import numpy as np
    import matplotlib.pyplot as plt
    import h5py

2 - 算法的一般结构

现在让我们来设计一个简单的算法来区分一个图片是否有猫

我们将使用神经网络思维方式构建逻辑回归。下图解释了为什么逻辑回归实际上是一个非常简单的神经网络:
Neural Networks and Deep Learning 第二周 逻辑回归总结
算法的数学表达形式举例 :

①输入的特征值X通过一个线性或者非线性函数
(1)z(i)=wTx(i)+bz^{(i)} = w^T x^{(i)} + b \tag{1}

②假设**函数为 sigmoid:
(2)y^(i)=a(i)=sigmoid(z(i))\hat{y}^{(i)} = a^{(i)} = sigmoid(z^{(i)})\tag{2}
③单个样本的损失
(3)L(a(i),y(i))=y(i)log(a(i))(1y(i))log(1a(i)) \mathcal{L}(a^{(i)}, y^{(i)}) = - y^{(i)} \log(a^{(i)}) - (1-y^{(i)} ) \log(1-a^{(i)})\tag{3}

④所有样本的损失(损失函数):
(4)J=1mi=1mL(a(i),y(i)) J = \frac{1}{m} \sum_{i=1}^m \mathcal{L}(a^{(i)}, y^{(i)})\tag{4}

找到合适的w和b,令J最小

关键步骤:

  • 初始化模型参数
  • 通过最小化损失函数来学习参数
  • 通过学好的参数进行预测
  • 分析结果并总结

3 - 建立我们自己的算法

建立神经网络的主要步骤:

  1. 定义模型的结构(例如输入的特征值数目)
  2. 初始化模型的参数
  3. 循环:
    • 计算 current loss (forward propagation)
    • 计算 current gradient (backward propagation)
    • 更新参数 (gradient descent)
#定义**函数
def sigmoid(z): 

#定义初始化参数函数
def initialize_with_zeros(dim):

#前向传播函数
def propagate(w, b, X, Y):

#最优化函数(如梯度下降)
def optimize(w, b, X, Y, num_iterations, learning_rate, print_cost = False):

#预测函数
def predict(w, b, X):

二、浅层神经网络


以单层隐藏层神经网络举例:
Neural Networks and Deep Learning 第二周 逻辑回归总结