第二周:神经网络的编程基础(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]. 深度学习笔记

deeplearning.ai课程学习(2)的更多相关文章

  1. deeplearning.ai课程学习(1)

    本系列主要是我对吴恩达的deeplearning.ai课程的理解和记录,完整的课程笔记已经有很多了,因此只记录我认为重要的东西和自己的一些理解. 第一门课 神经网络和深度学习(Neural Netwo ...

  2. deeplearning.ai课程学习(3)

    第三周:浅层神经网络(Shallow neural networks) 1.激活函数(Activation functions) sigmoid函数和tanh函数两者共同的缺点是,在z特别大或者特别小 ...

  3. deeplearning.ai课程学习(4)

    第四周:深层神经网络(Deep Neural Networks) 1.深层神经网络(Deep L-layer neural network) 在打算使用深层神经网络之前,先去尝试逻辑回归,尝试一层然后 ...

  4. Deeplearning.ai课程笔记--汇总

    从接触机器学习就了解到Andrew Ng的机器学习课程,后来发现又出来深度学习课程,就开始在网易云课堂上学习deeplearning.ai的课程,Andrew 的课真是的把深入浅出.当然学习这些课程还 ...

  5. Deeplearning.ai课程笔记-神经网络和深度学习

    神经网络和深度学习这一块内容与机器学习课程里Week4+5内容差不多. 这篇笔记记录了Week4+5中没有的内容. 参考笔记:深度学习笔记 神经网络和深度学习 结构化数据:如数据库里的数据 非结构化数 ...

  6. Deeplearning.ai课程笔记-改善深层神经网络

    目录 一. 改善过拟合问题 Bias/Variance 正则化Regularization 1. L2 regularization 2. Dropout正则化 其他方法 1. 数据变形 2. Ear ...

  7. 机器学习策略——DeepLearning.AI课程总结

    一.什么是ML策略 假设你正在训练一个分类器,你的系统已经达到了90%准确率,但是对于你的应用程序来说还不够好,此时你有很多的想法去继续改善你的系统: 收集更多训练数据 训练集的多样性不够,收集更多的 ...

  8. Deeplearning.ai课程笔记-结构化机器学习项目

    目录 一. 正交化 二. 指标 1. 单一数字评估指标 2. 优化指标.满足指标 三. 训练集.验证集.测试集 1. 数据集划分 2. 验证集.测试集分布 3. 验证集.测试集大小 四. 比较人类表现 ...

  9. Coursera深度学习(DeepLearning.ai)编程题&笔记

    因为是Jupyter Notebook的形式,所以不方便在博客中展示,具体可在我的github上查看. 第一章 Neural Network & DeepLearning week2 Logi ...

随机推荐

  1. HDU 1071 The area(求三个点确定的抛物线的面积,其中一个点是顶点)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1071 The area Time Limit: 2000/1000 MS (Java/Others)  ...

  2. LinkedList---链表各种方法的实现

    public class ListExer2 { public static void main(String[] args) { LinkList list = new LinkList(); li ...

  3. 22.访问jar包下资源路径里的文件

    访问jar包下资源路径里的文件 因为打包路径和你构建的代码路径是有差异的,想要查看真实的路径情况,可以查看编译后的classes目录下的文件结构. 想要获取资源文件流: private InputSt ...

  4. JVM垃圾回收补充知识点

    1. 分代 虚拟机中的共划分为三个代: 年轻代(Young Gen):eden和survivor-8:1:1 年老代(Old Gen):存储大对象,由survivor晋升 永久代(perm Gen): ...

  5. SpringBoot非官方教程 | 第二十二篇: 创建含有多module的springboot工程

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springbot22-modules/ 本文出自方志朋的博客 这篇文 ...

  6. Windows 2008 server + IIS 7 设置身份模拟(ASP.NET impersonation)

    IIS7 与 IIS 6 相比有了很大的改动,原来在 IIS 6 下可以的设置到了 IIS 7 下有的会发生变化.身份模拟的配置上,IIS7 和 IIS6有很大不同,网上IIS6的身份模拟的文章比较多 ...

  7. eclipse的中文插件链接及使用方法

    链接:http://www.eclipse.org/babel/downloads.php 帮助-->安装-->打开链接使用链接里面的语言包下载地址-->下载安装-->完成

  8. git使用简介(二)

    附上廖雪峰老师Git教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 远程仓库 ...

  9. JavaScript 基础(五) 函数 变量和作用域

    函数定义和调用 定义函数,在JavaScript中,定义函数的方式如下: function abs(x){ if(x >=0){ return x; }else{ return -x; } } ...

  10. Linux之MariaDB

    MariaDB数据库的起源 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜 ...