Introduction to Neural Networks

BP

梯度反向传播BackPropagation,是神经网络中的重要算法,主要思想是:

  • 计算网络的输出与期望输出之间的误差

  • 将误差从网络的输出层回传,沿着网络逐层传递,传递的是损失值相对当前层里参数的梯度

  • 当每一层都接收到该层的参数梯度时,沿着梯度方向更新参数

  • 用更新后的网络参数来计算新的输出,再重新计算误差,误差梯度回传,循环上述过程直到参数收敛

 

结合计算图来理解:

computation graph 计算图

任何函数都可以拆成计算图的形式

绿色的部分,是每个计算节点的输入值和输出值,即forward pass

红色的部分,是网络最终输出对于每个节点的梯度= local gradient * 前一个节点的梯度,即backward pass

  • 最终输出的节点
    \[\frac{\partial f}{\partial f} = 1 \]
  • 对前一个节点的梯度:记 $f = \frac{1}{z} $ (z为中间变量的名称),
    \[ \frac{\partial f}{\partial z} = \frac{\partial f}{\partial f} * \frac{\partial f}{\partial z} = 1 * \frac{-1}{1.37^2} =-0.53 \]
  • 对倒数第二个节点的梯度:记 $z = h+1 $,
    \[ \frac{\partial f}{\partial h} = \frac{\partial f}{\partial z} * \frac{\partial z}{\partial h} = -0.53*1 =-0.53 \]
  • 对倒数第三个节点的梯度:记 \(h = e^m\) ,
    \[ \frac{\partial f}{\partial m} = \frac{\partial f}{\partial h} * \frac{\partial h}{\partial m} = -0.53*e^{-1} =-0.20 \]

将一维推广到多维,现在假设W是 2 * 2,x是 2 维向量

 

【注意】

在全连接网络Fully Connected Network中,做反向传播时,误差对偏置bias的求导,需要对所有样本求和,这是因为loss就是对所有样本求和的结果,简单推理如下:
\[
shape \ of\ x:(N,D),\ shape\ of\ w:(D,), \ shape \ of \ b:(D,) \\
loss = \sum_{i=1}^N L_i \ , loss \ is \ a \ constant \\
d\ scores = \frac{d\ loss}{d\ scores} \ , shape \ is\ (N,D) \\
scores = wx + b \\
d\ b_j = \frac{d\ loss_j}{d\ b_j} = \frac{d\ loss}{d\ scores} * \frac{d\ scores}{d\ b} =\sum_i^N d\ scores_{ij} \\
<=> d\ b_j = \frac{d\ scores_{1j}+d\ scores_{2j}+...}{d\ b_j} \\ (d\ loss_j = \sum_i^N L_{ij} )
\]

Nerual Network

​ neural network are a class of functions where we have simpler functions that are stacked on top of each other with non-linear functions in-between.. and we stacked them in a hierarchical way in order to make up a more complex non-linear function

可以看做是线性函数的叠加,同时线性函数层之间还夹杂着非线性层,来使网络具有非线性

  • 如果单纯全是线性层的话,网络的代表能力会比较差 即难以表示复杂的变化:想象一下 多个线性函数的叠加在一起得到的也是线性函数 而线性函数的表达能力比较差 比如二维坐标系x-y下的线性函数只是一条直线,当特征产生一些变化 输出必须随之变化
     

网络中不同线性函数层是在提取不同层次的特征,网络中较低的层提取低层的语义特征,越高层提取到的特征越抽象。比如:

  • 网络有两层线性函数层,对于输入图像,第一层的特征(or templates)有专门检测左侧人脸的滤波器,和检测右侧人脸的滤波器;而第二层特征是对第一层提取出来的特征做weighted sum 可以理解为第二层的特征有专门检测人脸的滤波器
  • 如果输入图像是左侧人脸,那么经过第一层特征提取之后,检测左侧人脸滤波器得到的结果(score)比检测右侧人脸滤波器得到的结果高,然后输入到第二层,经过第二层的特征提取之后,在检测人脸的滤波器得到的结果(score)比在检测车的滤波器得到的结果高,第二层的输出即为网络的输出。
  • 如果输入图像是正面人脸,那么经过第一层,左侧人脸滤波器得到的结果可能大致等于右侧人脸滤波器的结果,而经过第二层之后,得到的输出仍然也是人脸的可能性高于车辆。

 

Convolutional Neural Network

参见之前的博文

[基础]斯坦福cs231n课程视频笔记(二) 神经网络的介绍的更多相关文章

  1. [基础]斯坦福cs231n课程视频笔记(三) 训练神经网络

    目录 training Neural Network Activation function sigmoid ReLU Preprocessing Batch Normalization 权重初始化 ...

  2. [基础]斯坦福cs231n课程视频笔记(一) 图片分类之使用线性分类器

    线性分类器的基本模型: f = Wx Loss Function and Optimization 1. LossFunction 衡量在当前的模型(参数矩阵W)的效果好坏 Multiclass SV ...

  3. 转:深度学习斯坦福cs231n 课程笔记

    http://blog.csdn.net/dinosoft/article/details/51813615 前言 对于深度学习,新手我推荐先看UFLDL,不做assignment的话,一两个晚上就可 ...

  4. 神经网络系列学习笔记(二)——神经网络之DNN学习笔记

    一.单层感知机(perceptron) 拥有输入层.输出层和一个隐含层.输入的特征向量通过隐含层变换到达输出层,在输出层得到分类结果: 缺点:无法模拟稍复杂一些的函数(例如简单的异或计算). 解决办法 ...

  5. Linux入门视频笔记二(Shell)

    一.Shell脚本编程基础 1.简单地理解是脚本就是一堆的Linux命令或其他命令,把他们写到一起,打包成一个文件就是脚本,Shell脚本一般以.sh后缀结尾 2.sh text.sh:运行text. ...

  6. javass 视频笔记二 (关键字,标示符,常量变量,运算符和if-else)

    1,java的关键字和标识符2,java的基本数据类型3,变量和常量4,java的运算符5,if-else if - else表达式1,java的关键字和标识符      1.1,所有关键字都要小写 ...

  7. 《分布式Java应用之基础与实践》读书笔记二

    远程调用方式就是尽可能地使系统间的通信和系统内一样,让使用者感觉调用远程同调用本地一样,但其实没没有办法做到完全透明,例如由于远程调用带来的网络问题.超时问题.序列化/反序列化问题.调式复杂的问题等. ...

  8. 斯坦福机器学习课程 Exercise 习题二

    Exercise 2: Linear Regression 话说LaTex用起来好爽 Matlab代码 迭代并且画出拟合曲线 Linear regression 公式如下 hθ(x)=θTx=∑i=0 ...

  9. CS231n课程笔记翻译9:卷积神经网络笔记

    译者注:本文翻译自斯坦福CS231n课程笔记ConvNet notes,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客和猴子翻译完成,堃堃和李艺颖进行校对修改. 原文如下 内容列 ...

随机推荐

  1. 4.Java基础_Java类型转换

    import javax.swing.plaf.synth.SynthMenuBarUI; /* 类型转换 自动类型转换: 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量 强制类型 ...

  2. headers

    headers: # Windows 10 IE 11.0 headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0 ...

  3. Linux上发布E卡通项目

    Linux上发布E卡通项目 使用的命令 ps -ef | grep java kill -9 22314 nohup java -jar smartcard-ms-0.0.1-SNAPSHOT.jar ...

  4. 01_javaSE面试题:自增变量

    开启刷面试题,都是根据视频进行刷面试题的 自增变量,只要记住两点 i++ 是先赋值后计算 ++i 是先计算后赋值 看下面的代码 int i = 1; i = i++; int j = i++; int ...

  5. 第05组团队Github现场编程实战

    第05组团队Github现场编程实战 一.组员职责分工 组员 分工 卢欢(组长) 前后端接口设计 严喜 寻找相关资料 张火标 设计并描述界面原型 钟璐英 编写随笔 周华 填写完善文档 古力亚尔·艾山 ...

  6. Paper | Multi-scale Dense Networks for Resource Efficient Image Classification

    目录 故事背景 方法 两种加速策略 网络设计 网络优化 失败设计 回头品味 实验 数据集和数据处理 结果 第二次阅读 本文不是第一个提出early exit思想的 写作流畅 网络回顾 其他 发表在IC ...

  7. Kubernetes集群的安全机制

    集群的安全性需要考虑以下几个目标: 1.保证容器与其所在宿主机的隔离 2.限制容器给基础设施及其他容器带来的消极影响的能力 3.最小权限原则——合理限制所有组件的权限,确保组件只执行它被授权的行为 4 ...

  8. JAVA基础系列:Object类

    1. 万物皆对象 1. JVM在编译源代码时,在遇到没有继承Object的对象的时候,编译器会默认指定一个默认的父类Object 2. Object 和接口的关系,接口是否继承Object?接口没有继 ...

  9. 项目倒入maven 遇到的问题只有 main 了

    归根结底是倒入错了: (1)首先  view->Toolbar; (2) 点击 File==>project structure 然后:在 project settings中点击 modu ...

  10. Windows 防火墙无法更改某些设置错误代码 0x80070422

    Windows 防火墙无法更改某些设置错误代码 0x80070422 解决方法: 1.cmd ->services.msc 按下回车键打开服务 :   2.在服务界面双击打开[Windows F ...