第二周:神经网络的编程基础(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. 整理关于 VS Code 一些小技巧:系列一

    官方介绍 VisualStudioCode是一个轻量级且功能强大的源代码编辑器,它运行在桌面上,支持Windows.MacOS和Linux系统.它提供了对JavaScript.TypeScript和N ...

  2. vue2高仿饿了么app

    Github地址: https://github.com/ccyinghua/appEleme-project 一.构建项目所用: vue init webpack appEleme-project ...

  3. Knowledge Point 20180305 数据在计算机中的表示

    计算机发明的初衷就是用于帮助我们加工和处理数据,虽然时至今天计算机看起来无所不能,但它根本上还是在做数据的加工和处理,数据的机器层次表示将直接影响到计算机的结构和性能. 在计算机中,采用数字化方式来表 ...

  4. NEC 框架规范 css reset

    /* reset */html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,captio ...

  5. noip2018 洛谷 P1969积木大赛

    1 //一定不要忘记这句话 “连续区间 ”!! #include<bits/stdc++.h> using namespace std; int main(){ int n, h;//n是 ...

  6. Linux 学习第二天

    一.常用命令的使用 1.echo echo https://www.cnblogs.com/rise-home/ 输出字符串 2.ps  -aux(显示进程信息) ps 进程状态共有5种 A.STAT ...

  7. Java语言利用Collections.sort对Map,List排序

    1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...

  8. JSP/Servlet开发——第六章 JSP开发业务应用

    1. 大容量的数据显示的缺点: ●当数据量较多时,用户需要拖动页面才能浏览更多信息: ●数据定位不便: 2.分页显示: ●既能显示多条数据,又不需要拖动页面,是数据更加清晰直观,页面不再冗长,也不受数 ...

  9. 三角形div原理(小知识点)

    三角形div其实就是从边框的演变过程 #sider2{ width: 100px; height: 100px; border-top: 30px solid #000; border-right:  ...

  10. Python基本数据类型(二)

    数字类型: 数字的定义: 1.数字不可变,不可迭代 在python3里面所有的整形都是  int 在python2里面数字叫整型,整数类型,有int 有long 数字的方法: 数字的方法: 1.--- ...