反向传播与神经网络

1.反向传播

关于反向传播我的理解是这样的,SVM和SoftMax可以看成一层神经网络,你如果想要调整它的W很简单,只有求导就可以了,但是当神经网络有多层的话,你无法直接求导来更新最开始层的W,于是就出现了反向传播这个工具。至于神经网络为什么需要多层,理由有很多,我先举个例子,比如一个汽车在图片里面可以有各个方向的,而一层神经网络(SVM和SoftMax)只能处理一种方向的情况,当你需要处理所有情况就需要多层神经网络了。

上面是关于为什么需要多层神经网络和反向传播的解释,下面我介绍反向传播的具体做法:

根据每一个神经元进行分离,每个神经元只管它的输入与输出的偏导,这样链式传播回去就能得到最开始的偏导,也就能改变每一层的W了,如下图:

实例为:

上图,线上方的数字代表输入,下面的数字代表反向传播求回来的偏导,在复杂的函数里面也可以这样一步一步求出来,里面的图被称为计算图。

2.神经网络

前面我已经介绍过SVM和反向传播了,你可以将神经网络理解成多层SVM,为什么需要多层上面我也已经说过了,为了处理不同的情况,公式和示意如下图:

上图的x为输入的图片特征向量,h为中间值,W1为第一层的模板向量,W2为第二层模板向量,S为最后输出种类的分数。(比如这个2层神经网络就可以处理车头向左和向右2种情况)

2.1激励函数

前面我还说了一种SVM无法解决情况,比如:

神经网络就出现了一种特别的解决方法—激励函数,什么意思呢,就是可以把线性的函数转换为非线性的,从而更好的分类,举个例子:

sigmoid函数,数学形式很简单,是σ(x)=1/(1+e^(-x)),图像如上图所示,功能是把一个实数压缩至0到1之间。输入的数字非常大的时候,结果会接近1,而非常大的负数作为输入,则会得到接近0的结果,比如上图的第二张图,我们可以把区域的点到原点的距离为sigmoid函数的x变量,那么就可以根据这个结果进行分类的,大于多少或者小于多少为红色,其余为蓝色,就能解决线性不能解决的问题了。

原文地址:https://www.cnblogs.com/tangmiao/p/8182979.html

时间: 2024-11-10 01:25:14

反向传播与神经网络的相关文章

实现一个反向传播人工神经网络

为何实现一个BP神经网络? “What I cannot create, I do not understand” — Richard Feynman, February 1988 实现一个BP神经网络的7个步骤 选择神经网络 结构 随机 初始化权重 实现 前向传播 实现 成本函数 $J(\Theta)$ 实现反向传播算法并计算 偏微分 $\frac{\partial}{\partial\Theta_{jk}^{(i)}}J(\Theta)$ 使用 梯度检查 并在检查后关闭 使用梯度下降或其它优

CS231n 2017 学习笔记04——反向传播与神经网络 Backpropagation and Neural Networks

本博客内容来自 Stanford University CS231N 2017 Lecture 4 - Backpropagation and Neural Networks 课程官网:http://cs231n.stanford.edu/syllabus.html 从课程官网可以查询到更详细的信息,查看视频需要FQ上YouTube,如果不能FQ或觉得比较麻烦,也可以从我给出的百度云链接中下载. 课程视频&讲义下载:http://pan.baidu.com/s/1gfu51KJ 计算图 Comp

一文弄懂神经网络中的反向传播法——BackPropagation

最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进行补充,但是补充的又是错的,难怪觉得有问题.反向传播法其实是神经网络的基础了,但是很多人在学的时候总是会遇到一些问题,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用.如果不想看公式,可以直接把数值带进去,实际的计算一下,体会一下这个过程之后再来推导公式,这样就会觉得很容

DL4NLP——神经网络(一)前馈神经网络的BP反向传播算法步骤整理

这里把按[1]推导的BP算法(Backpropagation)步骤整理一下,备忘使用.[1] 中直接使用矩阵微分的记号进行推导,整个过程十分简洁.而且这种矩阵形式有一个非常大的优势就是对照其进行编程实现时非常方便. 但其实用标量计算推导也有一定的好处,比如可以清楚地知道某个权重是被谁所影响的. 记号约定: $L$:神经网络的层数.输入层不算. $n^l$:第 $l$ 层神经元的个数.偏置神经元不算在内. $W^{l}\in\mathbb R^{n^l\times n^{l-1}}$:第 $l-1

神经网络训练中的Tricks之高效BP(反向传播算法)

神经网络训练中的Tricks之高效BP(反向传播算法) 神经网络训练中的Tricks之高效BP(反向传播算法) [email protected] http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我们这些所谓的尝试应用机器学习技术解决某些问题的人,更是如此.曾记得,我们绞尽脑汁,搓手顿足,大喊“为什么我跑的模型不work?”,“为什么我实现的效果那么差?”,“为什么我复现的结果没有他论文里面说的那么好?”.有人会和你说“你不懂调参!

循环神经网络(RNN)模型与前向反向传播算法

在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域. 1. RNN概述 在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的.但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不

反向传播神经网络极简入门

反向传播神经网络极简入门 我一直在找一份简明的神经网络入门,然而在中文圈里并没有找到.直到我看到了这份162行的Python实现,以及对应的油管视频之后,我才觉得这就是我需要的极简入门资料.这份极简入门笔记不需要突触的图片做装饰,也不需要赘述神经网络的发展历史:要推导有推导,要代码有代码,关键是,它们还对得上.对于欠缺的背景知识,利用斯坦福大学的神经网络wiki进行了补全. 单个神经元 神经网络是多个“神经元”(感知机)的带权级联,神经网络算法可以提供非线性的复杂模型,它有两个参数:权值矩阵{W

深度学习基础--神经网络--BP反向传播算法

BP算法: 1.是一种有监督学习算法,常被用来训练多层感知机.  2.要求每个人工神经元(即节点)所使用的激励函数必须可微. (激励函数:单个神经元的输入与输出之间的函数关系叫做激励函数.) (假如不使用激励函数,神经网络中的每层都只是做简单的线性变换,多层输入叠加后也还是线性变换.因为线性模型的表达能力不够,激励函数可以引入非线性因素) 下面两幅图分别为:无激励函数的神经网络和激励函数的神经网络 如图所示,加入非线性激活函数后的差异:上图为用线性组合逼近平滑曲线来分割平面,下图为使用平滑的曲线

【神经网络和深度学习】笔记 - 第二章 反向传播算法

上一章中我们遗留了一个问题,就是在神经网络的学习过程中,在更新参数的时候,如何去计算损失函数关于参数的梯度.这一章,我们将会学到一种快速的计算梯度的算法:反向传播算法. 这一章相较于后面的章节涉及到的数学知识比较多,如果阅读上有点吃力的话也可以完全跳过这一章,把反向传播当成一个计算梯度的黑盒即可,但是学习这些数学知识可以帮助我们更深入的理解神经网络. 反向传播算法的核心目的是对于神经网络中的任何weight或bias计算损失函数$C$关于它们的偏导数$\frac{\partial C}{\par