这一讲主要介绍了神经网络,基本内容之前如果学习过Andrew的Machine learning应该也都有所了解了。不过这次听完这一讲后还是有了新的一些认识。

计算图 Computational graph

之前没有体会到计算图的强大,今天听Serena讲解后,有一种豁然开朗的感觉。 总的来说,有一些很复杂的表达式,如果直接使用它对变量求导,虽然也能得到一个显式的表达,但可能会牵扯到非常复杂的展开、求导等一系列操作。如果换种方式,把这个式子里的基本运算,通过计算图的方式表示出来,用节点来表示一个基本运算,如 +、*、max等。那么我们从结尾出发,不断地在当前的节点上对前面的变量进行求导,这个求导过程往往非常简单,然后根据链式法则,不断“向后”传播,就可以得到整个式子关于输入变量的导数。这个思想也正是神经网络的精髓所在。
值得注意的是,我们可以根据自己的需要选择性地合并一些节点,比如像sigmoid函数,非常常见,而且我们也能够给出它的微分的显式表达,这时候就没有必要冗余地去列举sigmoid函数里的每一个简单运算。

max的微分怎么求

普通的加法、乘法的微分都很好想象,如果这个节点是对输入变量求一个max值呢?此时当前节点对于输入变量的微分分别是多少?

其实也不难想象,答案就是,对于是max的那个变量,微分是1,其它为0。这也非常合理,因为有了这个max的操作,相当于其它变量都对输出不会再产生影响了,那么再把微分传递给它们也用处不大,因为我们关心的是最终的表达式在那些能够影响它的值的那些变量上的微分或者梯度

Jacobian matrix 雅克比矩阵

因为我们实际上处理的数据大多数是向量化的,那么求导的结果其实是一个雅可比矩阵。不要被这个名字吓到,其实它就是一个用每个输出维度对每个输入维度求导的过程。
假设我们输入的x是n维,输出的y是m维,那么函数f(x) = y 针对x求导得到的雅克比矩阵是m*n的,其i,j位置的值为\(d(y_i)/d(x_j)\)。

(来自维基百科https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant)

主题无关

Serena Yeung的英语听着好舒服,发音很清晰,不拖泥带水,几乎没有不必要的语气词,值得学习~~而且人还很美,感觉这门课的老师们颜值都好高@_@

CS231n笔记 Lecture 4 Introduction to Neural Networks的更多相关文章

  1. cs231n spring 2017 lecture4 Introduction to Neural Networks 听课笔记

    1. Backpropagation:沿着computational graph利用链式法则求导.每个神经元有两个输入x.y,一个输出z,好多层这种神经元连接起来,这时候已知∂L/∂z,可以求出∂L/ ...

  2. CS231n笔记 Lecture 1 Introduction

    主题有关 这一讲主要是介绍性质的,虽然大多数概念以前听说过,但还是在他们的介绍中让我有如下一些认识,所谓温故而知新,不无道理: IMAGENET Feifei Li的团队首先爬取.标注了IMAGENE ...

  3. cs231n spring 2017 lecture4 Introduction to Neural Networks

    1. Backpropagation:沿着computational graph利用链式法则求导.每个神经元有两个输入x.y,一个输出z,好多层这种神经元连接起来,这时候已知∂L/∂z,可以求出∂L/ ...

  4. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week1 Introduction to deep learn ...

  5. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week2 Neural Networks Basics课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week2 Neural Networks Basics 2.1 ...

  6. 深度学习笔记(三 )Constitutional Neural Networks

    一. 预备知识 包括 Linear Regression, Logistic Regression和 Multi-Layer Neural Network.参考 http://ufldl.stanfo ...

  7. CS231n笔记 Lecture 5 Convolutional Neural Networks

    一些ConvNets的应用 Face recognition 输入人脸,推测是谁 Video classfication Recognition 识别身体的部位, 医学图像, 星空, 标志牌, 鲸.. ...

  8. 机器学习入门14 - 神经网络简介 (Introduction to Neural Networks)

    原文链接:https://developers.google.com/machine-learning/crash-course/introduction-to-neural-networks/ 神经 ...

  9. 论文笔记《Notes on convolutional neural networks》

    这是个06年的老文章了,但是很多地方还是值得看一看的. 一.概要 主要讲了CNN的Feedforward Pass和 Backpropagation Pass,关键是卷积层和polling层的BP推导 ...

随机推荐

  1. zend studio failed to create java virtual machine无法启动的解法

    zend studio failed to create java virtual machine 解决方案:在安装目录下修改ZendStudio.ini中第十四行处改成 -Xmx512M. -sta ...

  2. module.exports exports 和export export default

    首先可以知道的是这是两组不同模块规范. module.exports 是CommonJS模块规范,通过require 导入 a.js: var x = 'hello' module.exports.x ...

  3. How to Install PhantomJS on Ubuntu 16.04

    Introduction PhantomJS is a scripted, headless browser that can be used for automating web page inte ...

  4. 再生龙备份还原linux系统

    相关下载: Clonezilla再生龙:http://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/ tuxboot ...

  5. 阿里大鱼短信发送 FOR DT

    //增加了参数$action 来标志发送的是什么短信 注册短信 验证码短信 提示短信等 function send_sms($mobile, $message, $word = 0, $time = ...

  6. COMP9021--6.6

    1. 在print结尾处添加end='' print默认在字符串结尾处添加换行符,添加end=''后表示这个语句并没有结束,结尾不换行 2. 为了减少重复代码以及便于修改,我们可以编写函数 1) 函数 ...

  7. Java-basic-2-

    接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类. 如果一个类定义在某个包中,那么package语句应该在源文件的首行. 如果源文件包含import语句,那么应该放在package语句和 ...

  8. Spring核心技术(十三)——环境的抽象

    本章将描述一下Spring中针对环境的抽象. Environment是一个集成到容器之中的特殊抽象,它针对应用的环境建立了两个关键的概念:profile和properties. profile是命名好 ...

  9. django_orm操作

    查询操作和性能优化 1.基本操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23   增   models.Tb1.object ...

  10. 【Netty】NIO框架Netty入门

    Netty介绍 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...