在下图所示的Neural Network中,我们将拥有三个节点的layer1及layer4分别称为输入和输出层,而中间的两层layer2,layer3称为隐藏层(hidden layer)。输入数据X,从左侧进入神经网络,经过层层传播最终从右侧输出的过程,称为Feedforward。而根据training set来调整参数的算法,称为Backpropagation Algorithm,即反向传播算法。

在Hidden layer的每个Node中,都存在一个non-linear unit,常用的是有tanh,sigmoid以及ReLu等。如果没有non-linear unit,则无论NN的architecture如何,输出将永远是输入数据的线性组合,Neural Network也就失去了意义。

首先我们约定weight的表达方式如下图所示:

每个节点的左侧输入值z等于:

每个节点的右侧输出值a等于在其输入值z的基础上,施加非线性可微函数σ

假设Neural Network总共有L层,则会有L-1个ω矩阵存在,所以ω矩阵的维度是size(ω)=q*p,其中q为下一层的节点数,p为本层的节点数。在上图的Layer3中,w3为如下的2x4的矩阵形式:

如果将Feedforward propagation的过程矩阵化,则可以写为:

下面来看如何使用Backpropagation更新ω呢。Backpropagation其实是Gradient Descent的一种拓展,如果我们能够拿到cost function对某个ω的梯度值,那么我们就可以对其做梯度下降并迭代求出最优结果。更新算法见:线性回归与梯度下降

为了说明方便,一般会定义一个δ作为某一个节点输入端的误差(即z值的误差):

矩阵化后:

我们可以根据上式,直接算出最后一层的δ值,但是对于任意一层、任意一个节点的δ,则需要将最后一层的误差值进行层层传导,其公式为:

矩阵化后,任意一层的节点误差矩阵为

而我们最终的目的在于求得w的梯度,从而利用gradient descent去更新参数,对于任意一层l的某条路径j,k,我们有:

对任意一层l的所有weight,我们有:

对于第l层bias处的梯度:

Feedforward and BackPropagation Algorithm的更多相关文章

  1. CheeseZH: Stanford University: Machine Learning Ex4:Training Neural Network(Backpropagation Algorithm)

    1. Feedforward and cost function; 2.Regularized cost function: 3.Sigmoid gradient The gradient for t ...

  2. BP反向传播算法的工作原理How the backpropagation algorithm works

    In the last chapter we saw how neural networks can learn their weights and biases using the gradient ...

  3. 反向传播算法 Backpropagation Algorithm

    假设我们有一个固定样本集,它包含 个样例.我们可以用批量梯度下降法来求解神经网络.具体来讲,对于单个样例(x,y),其代价函数为:这是一个(二分之一的)方差代价函数.给定一个包含 个样例的数据集,我们 ...

  4. The Backpropagation Algorithm

    https://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf 7.1 Learning as gradient descent We saw in ...

  5. 神经网络(9)--如何求参数: backpropagation algorithm(反向传播算法)

    Backpropagation algorithm(反向传播算法) Θij(l) is a real number. Forward propagation 上图是给出一个training examp ...

  6. [Converge] Backpropagation Algorithm

    Ref: CS231n Winter 2016: Lecture 4: Backpropagation Ref: How to implement a NN:中文翻译版本 Ref: Jacobian矩 ...

  7. 一文弄懂神经网络中的反向传播法(Backpropagation algorithm)

    最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...

  8. (六) 6.2 Neurons Networks Backpropagation Algorithm

    今天得主题是BP算法.大规模的神经网络可以使用batch gradient descent算法求解,也可以使用 stochastic gradient descent 算法,求解的关键问题在于求得每层 ...

  9. 吴恩达机器学习笔记30-神经网络的反向传播算法(Backpropagation Algorithm)

    之前我们在计算神经网络预测结果的时候我们采用了一种正向传播方法,我们从第一层开始正向一层一层进行计算,直到最后一层的ℎ

随机推荐

  1. Kafka DockerFile

    FROM php:5.6.38-fpm COPY . /alidata/workerspace WORKDIR /alidata/workerspace RUN set -x && a ...

  2. 正则表达式RegExp对象

    3.1 正则表达式对象的创建方式 字面量的方式   var patt = /匹配规则/修饰符;     / --> 边界的意思 new关键字     var patt = new RegExp( ...

  3. 211-基于FMC的ADC-DAC子卡

    基于FMC的ADC-DAC子卡 一.板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集.1路2.5G DA回放的FMC.1路AD同步信号子卡.板卡采用标准FMC子卡架构 ...

  4. APKMirror - 直接下载google play里的应用

    APKMirror - Free APK Downloads - Download Free Android APKs #APKPLZ https://www.apkmirror.com/

  5. Java反编译工具Luyten-0.5.3

    Luyten是一款很强大的反编译工具包,是一款github的开源工具,软件功能非常强大,界面简洁明晰.操作方便快捷,设计得很人性化. 工具软件下载路径:https://github.com/death ...

  6. python-条件判断

    条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...

  7. php内置函数分析之ucwords()

    PHP_FUNCTION(ucwords) { zend_string *str; char *delims = " \t\r\n\f\v"; register char *r, ...

  8. springCloud 服务提供者应返回的统一的数据格式

    package com.zledu.commonentity.entity; import lombok.AllArgsConstructor;import lombok.Data; import j ...

  9. Clean Docker <none>:<none>

    https://www.projectatomic.io/blog/2015/07/what-are-docker-none-none-images/ Reference: https://www.p ...

  10. Android SDK说明(图)