• deeplearning.ai课程学习(2)


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

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

    逻辑回归需要注意的两个点是,sigmoid函数log损失函数

    sigmoid函数的函数表达式为

    作为线性函数后的非线性转化,使得逻辑回归有别于硬分类的算法,例如SVM。逻辑回归对于分类的输出结果是[0,1]之间的一个值。

    逻辑回归使用的损失函数(用于更新梯度)是 log损失函数,具体公式如下

    y^和y分别代表预测值和真实值。

    对于log损失函数的解释,可以如下考虑:

    当y=1时损失函数L= -  log(y^),如果想要损失函数 L 尽可能得小,那么 y^ 就要尽可能大,因为sigmoid函数取值[0,1],所以 y^ 会无限接近于1。

    当y=0时损失函数L = - log(1-y^),如果想要损失函数 L 尽可能得小,那么 y^ 就要尽可能小,因为sigmoid函数取值[0,1],所以 y^ 会无限接近于0。

    2、使用计算图求导数(Derivatives with a Computation Graph)

    通过计算图的形式理解前向传播和反向传播。

    前向(正向)传播:

    假设,我们需要去求解 J(a,b,c)=3(a+b*c),我们将它拆成 几个步骤,则如下图所示

    1、计算 u = b*c = 3 * 2 = 6

    2、计算 v = a + u = 5 + 6 = 11

    3、计算 J = 3 * v = 3 * 11 = 33

    在这后面再加上,激活函数的转化,误差的计算就是完整的前向传播过程了。

    反向传播:

    所谓的反向传播,就是假设我们已经进行过了一次前向传播的过程,也就是得到了预测值与实际值之间的误差,

    我们想通过这个误差来调整输入的值(a,b,c),使得他们在前向计算得到的预测值能够更加的接近实际值。

    1、计算 dJ / dv = 3

    2、计算 dv / da = 1以及 dv / du = 1

    3、计算 du / db = c = 2 , du / dc = b = 3

    至此,我们计算了图中所有可见项的导数,那么我们需要计算的 dJ / da,dJ / db,dJ / dc就可以通过链式求导法则得到。

    4、dJ / da = (dJ / dv) * (dv / da) = 3 * 1 = 3 ; dJ / db = (dJ / dv) * (dv / du)  * (du / db) = 3 * 1 * 2 = 2;

       dJ / dc = (dJ / dv) * (dv / du)  * (du / dc) = 3 * 1 * 3 = 3。

    即如下图的过程。

    在第二周,吴恩达首先介绍了逻辑回归算法(以及其损失函数),将逻辑回归算法看成一个神经网络,介绍了梯度下降和计算图,利用计算图更直观的介绍了反向传播的原理以及实现。

    参考文献:

    [1]. 课程视频:Coursera-deeplearning.ai / 网易云课堂

    [2]. 深度学习笔记

  • 相关阅读:
    SQL Server游标的使用【转】
    Window.Open参数、返回值
    .NET中class和struct的区别
    MVC中的几个问题汇总
    委托
    Hadoop集群环境搭建
    数学问题
    Ubuntu命令模式基础
    递归与分治-合并排序、快速排序以及循环赛问题
    Mongodb基础
  • 原文地址:https://www.cnblogs.com/kamekin/p/10018291.html
Copyright © 2020-2023  润新知