《神经网络和深度学习》系列文章十四:四个基本方程的证明

出处: Michael Nielsen的《Neural Network and Deep Learning》,点击末尾“阅读原文”即可查看英文原文。

本节译者:哈工大SCIR本科生 王宇轩

声明:如需转载请联系[email protected],未经授权不得转载。


  1. 使用神经网络识别手写数字
  2. 反向传播算法是如何工作的
    • 热身:一个基于矩阵的快速计算神经网络输出的方法
    • 关于损失函数的两个假设
    • Hadamard积
    • 反向传播背后的四个基本等式
    • 四个基本等式的证明(选读)
    • 反向传播算法
    • 反向传播算法代码
    • 为什么说反向传播算法很高效
    • 反向传播:整体描述
  3. 改进神经网络的学习方法
  4. 神经网络能够计算任意函数的视觉证明
  5. 为什么深度神经网络的训练是困难的
  6. 深度学习

反向传播等式为我们提供了一个计算代价函数梯度的方法。下面让我们明确地写出该算法:

  1. 输入 :计算输入层相应的激活函数值
  2. 正向传播:对每个,计算
  3. 输出误差 计算向量
  4. 将误差反向传播:对每个计算
  5. 输出:代价函数的梯度为

通过以上算法就能看出它为什么叫反向传播算法。我们从最后一层开始,反向计算错误向量。在神经网络中反向计算误差可能看起来比较奇怪。但如果回忆反向传播的证明过程,会发现反向传播的过程起因于代价函数是关于神经网络输出值的函数。为了了解代价函数是如何随着前面的权重和偏移改变的,我们必须不断重复应用链式法则,通过反向的计算得到有用的表达式。

练习

  • 修改一个神经元后的反向传播
    假设我们修改了正向传播网络中的一个神经元,使得该神经元的输出为,其中是一个非sigmoid函数的函数。在这种情况下我们应该怎样修改反向传播算法?
  • 线性神经元的反向传播

    假设我们在整个神经网络中用代替常用的非线性方程。重新写出这种情况下的反向传播算法。

    正如我在上文中已经说过的,反向传播算法对每个训练样本计算代价函数的梯度。在实际情况中,经常将反向传播算法与诸如随机梯度下降的学习算法共同使用,在随机梯度下降算法中,我们需要计算一批训练样本的梯度。给定一小批(mini-batch)个训练样本,下面的算法给出了基于这些训练样本的梯度下降学习步骤:

  1. 输入一组训练样本
  2. 对每个训练样本 设定相应的输入激活值并执行以下步骤:
    1. 正向传播:对于每个,计算
    2. 输出误差:计算向量
    3. 将误差反向传播:对每个,计算
  3. 梯度下降:对每个,分别根据法则更新权重和偏移。

当然,为了在实际应用时实现随机梯度下降,你还需要一个用于生成小批(mini-batches)训练样本的外部循环和一个用于逐步计算每一轮迭代的外部循环。为了简洁,这些都被省略了。

下一节我们将介绍“反向传播算法代码”,敬请关注!


    • “哈工大SCIR”公众号
    • 编辑部:郭江,李家琦,徐俊,李忠阳,俞霖霖
    • 本期编辑:李忠阳
时间: 2024-07-31 00:19:36

《神经网络和深度学习》系列文章十四:四个基本方程的证明的相关文章

【深度学习系列3】 Mariana CNN并行框架与图像识别

[深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框架. 将深度卷积神经网络(Convolutional Neural Networks, 简称CNNs)用于图像识别在研究领域吸引着越来越多目光.由于卷积神经网络结构非常适合模型并行的训练,因此以模型并行+数据并行的方式来加速Deep CNNs训练,可预期取得较大收获.Deep CNNs的单机多GPU

【深度学习系列2】Mariana DNN多GPU数据并行框架

[深度学习系列2]Mariana DNN多GPU数据并行框架 本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架. 深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点[1][2],产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能力,适合于加速深度神经网络训练.DNN的单机多GPU数据并行框架是Mariana的一部分,Mariana技术

quick-cocos2d-x 学习系列之十四 测试用例

quick-cocos2d-x 学习系列之十四 测试用例 定义变量,创建13个场景名字 local items = { "framework.helper", "framework.native", "framework.display", "framework.crypto", "framework.network", "framework.luabinding", "fra

《神经网络与深度学习》(四) 受限玻尔兹曼机

转自:http://blog.csdn.net/qiao1245/article/details/50932519 谈到神经网络,就不得不提到最近非常火的深度学习.那么什么是深度学习?它与神经网络的关系是什么?深度学习的基本原理和常用算法是什么?我将在这篇中详细解答. 什么是深度学习 深度学习来源于人工神经网络,它的思想是组合低层次的特征从而构建出更加抽象的深层次特征.深度学习的概念由Hinton等人于2006年提出, 它是一个新的机器学习领域,通过更"深"层次的训练,它可以更加良好的

【深度学习系列1】 深度学习在腾讯的平台化和应用实践(转载)

转载:原文链接 [深度学习系列1] 深度学习在腾讯的平台化和应用实践 引言:深度学习是近年机器学习领域的重大突破,有着广泛的应用前景.随着Google公开 Google Brain计划,业界对深度学习的热情高涨.腾讯在深度学习领域持续投入,获得了实际落地的产出.我们准备了四篇文章,阐述深度学习的原理和在腾讯的实 践,介绍腾讯深度学习平台Mariana,本文为第一篇. 深度学习(Deep Learning)是近年来机器学习领域的热点,在语音识别.图像识别等领域均取得了突破性进展.腾讯提供广泛的互联

使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】

转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 GPU 学习深度学习>系列文章的第二篇,主要介绍了 Tensorflow 的原理,以及如何用最简单的Python代码进行功能实现.本系列文章主要介绍如何使用 腾讯云GPU服务器 进行深度学习运算,前面主要介绍原理部分,后期则以实践为主. 往期内容: 使用腾讯云 GPU 学习深度学习系列之一:传统机器学

【深度学习系列4】深度学习及并行化实现概述

[深度学习系列4]深度学习及并行化实现概述 摘要: 深度学习可以完成需要高度抽象特征的人工智能任务,如语音识别.图像识别和检索.自然语言理解等.深层模型是包含多个隐藏层的人工神经网络,多层非线性结构使其具备强大的特征表达能力和对复杂任务建模能力.训练深层模型是长期以来的难题,近年来以层次化.逐层初始化为代表的一系列方法的提出给训练深层模型带来了希望,并在多个应用领域获得了成功.深层模型的并行化框架和训练加速方法是深度学习走向实用的重要基石,已有多个针对不同深度模型的开源实现,Google.Fac

(转)神经网络和深度学习简史(第一部分):从感知机到BP算法

深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chenxiaoqing.范娜Fiona.杨超.微胖.汪汪.赵巍 导读:这是<神经网络和深度学习简史>第一部分.这一部分,我们会介绍1958年感知机神经网络的诞生,70年代人工智能寒冬以及1986年BP算法让神经网络再度流行起来. 深度学习掀起海啸 如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,

【深度学习系列】关于PaddlePaddle的一些避“坑”技巧

最近除了工作以外,业余在参加Paddle的AI比赛,在用Paddle训练的过程中遇到了一些问题,并找到了解决方法,跟大家分享一下: PaddlePaddle的Anaconda的兼容问题 之前我是在服务器上安装的PaddlePaddle的gpu版本,我想把BROAD数据拷贝到服务器上面,结果发现我们服务器的22端口没开,不能用scp传上去,非常郁闷,只能在本地训练.本机mac的显卡是A卡,所以只能装cpu版本的,安装完以后,我发现运行一下程序的时候报错了: 1 import paddle.v2 a

quick-cocos2d-x 学习系列之十六 塔防完结

quick-cocos2d-x 学习系列之十六 塔防完结 1.  math2d.lua文件 该文件实现了常用的数学函数. Dist函数实现两点的距离. radians4point求两点的夹角(弧度) pointAtCircle求圆上一个点的位置 pointAtLineToPoint求线段上与指定点距离最近的点 degrees2radians角度转换为弧度 radians2degrees弧度转换为角度 2.  utils.lua文件 2.1         drawCircle 返回newCirc