前馈网络及反向传播

2024-04-03 03:18
文章标签 网络 传播 反向 前馈

本文主要是介绍前馈网络及反向传播,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文主要介绍多层感知器模型(MLP),它也可以看成是一种logister回归,输入层通过非线性转换,即通过隐含层把输入投影到线性可分的空间中。

如果我们在中间加一层神经元作为隐含层,则它的结构如下图所示

    单隐层的MLP定义了一个映射: ,其中 D和L为输入向量和输出向量f(x)的大小。

    隐含层与输出层神经元的值通过激活函数计算出来,例如下图:如果我们选用sigmoid作为激活函数,输入设为x,要求出隐含层的激活值a,公式如下。其中 。

    同理输出的h(x)可以用同样的公式得到,上述过程就是向前传导,因为这种联接图没有闭环或回路。

    我们可以用反向传播法(backpropagation)来训练上面这个神经网络。下面主要介绍backpropation算法。

    假设对于单个样例(x,y),它的代价函数(cost function)为

    对于一个样本集 ,定义它的cost function为:

    我们要做的就是最小化上述式子,类似于最小二乘,不同的是加上了第二项的权重衰减,它是用来防止过拟合,可以把它看成是一个约束项,而整个式子就是求解最值的拉格朗日公式。我们的目标是针对参数    来求其函数  的最小值。为了求解神经网络,我们需要将每一个参数    初始化为一个很小的、接近零的随机值(比如说,使用正态分布  生成的随机值,其中  设置为  ),之后对目标函数使用诸如批量梯度下降法的最优化算法。关于wb的初值,我根据这篇论文(Understanding the difficulty of training deep feedforward neuralnetworks)得出的结论:如果激活函数为tanh,我们设置为之间的值,如果激活函数是sigmoid,则是 

 


 

    关于反向传播算法的推导,UFLDL 中介绍的很清楚,我直接粘帖过来了。

    既然是用梯度下降法,我们先对代价函数J求关于w的偏导数,直接写出结果:

    

    反向传播算法的思路如下:给定一个样例 ,我们首先进行"前向传导"运算,计算出网络中所有的激活值,包括  的输出值。之后,针对第  层的每一个节点 ,我们计算出其"残差,该残差表明了该节点对最终输出值的残差产生了多少影响。对于最终的输出节点,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为  (第  层表示输出层)。对于隐藏单元我们如何处理呢?我们将基于节点(译者注:第  层节点)残差的加权平均值计算 ,这些节点以  作为输入。下面将给出反向传导算法的细节:

 

  1. 进行前馈传导计算,利用前向传导公式,得到  直到输出层  的激活值。
  2. 对于第  层(输出层)的每个输出单元 ,我们根据以下公式计算残差:

[译者注:

]

  1.   的各个层,第  层的第  个节点的残差计算方法如下:

{译者注:

将上式中的的关系替换为的关系,就可以得到:

    

以上逐次从后向前求导的过程即为"反向传导"的本意所在。 ]

  1. 计算我们需要的偏导数,计算方法如下:

        

  最后,我们用矩阵-向量表示法重写以上算法。我们使用"表示向量乘积运算符(在MatlabOctave里用".*"表示,也称作阿达马乘积)。若 ,则 。在上一个教程中我们扩展了  的定义,使其包含向量运算,这里我们也对偏导数  也做了同样的处理(于是又有  )。


  那么,反向传播算法可表示为以下几个步骤:

  1. 进行前馈传导计算,利用前向传导公式,得到 直到输出层  的激活值。
  2. 对输出层(第  层),计算:

    

  1. 对于  的各层,计算:

    

  1. 计算最终需要的偏导数值:

    

实现中应注意:在以上的第2步和第3步中,我们需要为每一个  值计算其 。假设  sigmoid函数,并且我们已经在前向传导运算中得到了 。那么,使用我们早先推导出的 表达式,就可以计算得到 


最后,我们将对梯度下降算法做个全面总结。在下面的伪代码中, 是一个与矩阵  维度相同的矩阵, 是一个与  维度相同的向量。注意这里""是一个矩阵,而不是"   相乘"。下面,我们实现批量梯度下降法中的一次迭代:

 

  1. 对于所有 ,令  ,  (设置为全零矩阵或全零向量)
  2. 对于     
    1. 使用反向传播算法计算   
    2. 计算 
    3. 计算 
  3. 更新权重参数:

    

    

    注意:为了使代价函数更快的收敛,首先要对输入数据进行归一化。

    上面忘了讲tanh激活函数,,非线性数据围绕原点对称更容易很好的收敛代价函数,因为它们倾向于产生零均值输入到下一层,一般讲,tanh有更好的收敛性能。

    

本文转自:http://www.cnblogs.com/loujiayu/p/3545026.html

这篇关于前馈网络及反向传播的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871774

相关文章

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit