zoukankan      html  css  js  c++  java
  • 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]. 深度学习笔记

  • 相关阅读:
    寻找研究基于NS2研究覆盖网络的小伙伴:)
    ubuntu14.04 键盘错位小问题
    关于NS2安装的若干问题
    关于ubuntu下词典安装
    与NS2一起度过第一个圣诞夜!(NS2入门学习参考资料)
    【转】影响CSS渲染速度的十条编码方法与建议
    类型初始值设定项引发异常
    【转】实用的CSS Hack
    【转】CSS技巧:五个方面促进你写出更加专业的CSS代码
    IIS6.0架构
  • 原文地址:https://www.cnblogs.com/kamekin/p/10018291.html
Copyright © 2011-2022 走看看