反向传播 — 简单解释

一、说明

     关于反向传播,我有一个精雕细刻的案例计划,但是实现了一半,目前没有顾得上继续充实,就拿论文的叙述这里先起个头,我后面将修改和促进此文的表述质量。

    

二、生物神经元

        大脑是一个由大约100亿个神经元组成的复杂网络。每个神经元都有输入通道(树突)和一个输出通道(轴突),将其连接到大约 10,000 个其他神经元。神经元通过电化学信号进行交流。如果这些电输入的总和高于某个阈值,则神经元会激活或放电,这意味着它会沿着轴突将电化学信号传输到其他神经元,这些神经元的树突附着在其任何轴突上。如果总和低于阈值,则神经元不会触发。

        人工神经网络(ANN)是一种大致基于大脑架构的机器学习算法。它通过人工神经元对生物神经元进行建模。人工神经网络是人工神经元的网络(逐层连接)。

        上面有时简明扼要地表示为:

        人工神经元从数据集接收一个或多个数字输入,每个输入乘以一个权重。这些权重就像重要因素一样,影响每个输入的整体影响。然后神经元执行两个步骤:

  1. 加权总和:它计算加权输入的总和。
  2. 激活:它将非线性激活函数应用于此总和。此函数根据神经元输入的组合强度确定神经元是否“触发”(输出非零值)。

        然后,生成的输出被传递到网络中的下一个神经元或成为最终结果。

        最初,每个神经元的每个输入的权重是随机分配的,或者使用一些启发式或迁移学习。除了与每个输入相关的权重外,还为每个神经元分配了一个额外的权重。该权重称为偏差项,与偏差项相关的输入值为 -1。这是一个偏置节点。在训练过程中,所有权重都会反复更新,直到神经元输出与输出实际值之间的差异最小化。神经元输出与实际输出之间的这种差异称为误差。

        通过加权和和非线性激活函数,人工神经网络对数据执行一系列数学运算。这个过程允许他们根据他们在数据中发现的模式进行学习和预测。

        深层和浅层神经网络

        除了输入层和输出层外,神经网络还可以具有一个或多个中间层的神经元。这些层称为隐藏层。浅层神经网络只有一个隐藏层。具有多个隐藏层的网络称为深度神经网络。

        因此,在人工神经网络中,随着每层神经元数和神经元层数的增加,权重的数量也会增加。人工神经网络的训练或拟合包括从训练数据中迭代学习其权重的最佳值。使用技术优化权重

        错误

        包括神经网络在内的所有 ML 模型都会学习输入数据(称为训练数据)中的模式(模型或数学方程),并使用这些模式来预测看不见的数据(测试数据)的目标值。预测值与实际值不匹配将计为误差。

        神经网络(就像线性回归一样)从他们的错误或错误中学习。

        对于给定的数据集,通常使用量化网络所犯错误的数学函数。这种函数称为成本函数或损失函数。成本函数量化给定数据点的 DNN 输出与实际输出的接近程度。

        常见的损失函数是回归任务的均方损失,分类任务的交叉熵损失。损失函数必须是可微的。

        均方误差 (MSE):

三、人工神经网络的训练

        该错误仅在网络的输出层变得明显。成本函数相对于网络中每个权重的梯度(偏导数)用于根据梯度下降算法指定的权重更新规则或其变体更新网络的特定权重。

        函数的导数是函数值(输出)的变化与其输入(数据)的变化之比。正导数意味着函数输出随着输入的增加而增加,反之亦然。

        梯度下降是一种函数最小化算法。它用于最小化网络的成本函数/损失/错误。也就是说,梯度下降计算 epoch 之后网络权重的更新(epoch 是训练数据集的传递),直到我们得到一组误差函数梯度最小(理想情况下为零)的权重。我们在这里使用的原理是,当函数处于最小值或最大值时,函数的梯度为零。

        让我们将其可视化为其中一个权重 wi、相应的成本函数 J 和一个称为学习率的参数 η。

        

梯度下降

在梯度下降中更新权重(参数)的公式为:

        梯度下降权重更新规则

        高学习率(大η)会导致权重的大幅更新,可能会超过最小值并卡在局部最小值。相反,低学习率(小η)会导致收敛缓慢,甚至卡在起点附近。正确选择学习率对于高效培训很重要。

四、微积分的链式法则

        如何计算损失函数的偏导数是直截了当的,因为权重定向连接到输出层或输出神经元,但是我们如何计算其偏导数,而不是直接连接到输出层的权重,即隐藏层中输入的权重。

        链式法则是计算复合函数(如神经网络)导数的强大工具。

        正如我们所看到的,神经网络是一个复合函数(即使是单个神经元也是权重和输入相乘的复合函数,将这些乘积相加,应用激活函数),其中每一层都获取前一层的输出并应用转换。然后将最终输出与所需结果进行比较,从而得出成本函数值。

        链式法则指出,复合函数 f(g(x)) 的导数等于 f′(g(x)∗g′(x)。 即,复合函数 f(g(x)) 的导数等于函数 f 相对于 g(x) 的导数和函数 g 相对于 x 的导数的乘积。

        反向传播递归应用链式法则来计算网络中每个权重的成本函数梯度,然后根据梯度下降算法的规则更新该权重。

        让我们以一个非常小的神经网络为例,它只有一个输入神经元 x、一个隐藏神经元和一个输出神经元。净输出为 y′,实际输出为 y,因此误差 J(w) 为 1/n*(y−y′)^2(假设 MSE 为成本函数)。

        小型神经网络

        现在要找到 J wrt y′ 的导数,链式法则说我们需要找到 y′ wrt 的导数,它自己的输入参数,即 w2 和 z,(从网络中可以看出,y′ 是应用于 w2 和 z 乘积的 SoftMax 的组合),而 z 反过来是一个复合函数,由 sigmoid 组成,应用于 w1 和 x 的函数积。因此,我们需要计算以下导数,

        因此,链式法则的递归应用允许我们训练非常深入的神经网络,其中包含数十亿层和数十亿(数万亿)参数。一个深度(层数)和宽度(每层神经元数)足够大的深度神经网络,在足够的数据上训练足够多的纪元,可以近似任何函数。这就是为什么今天的生成式人工智能模型已经学习了英语或印地语等自然语言的模型,或者他们已经学会了生成逼真的艺术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寄存器(内存访问)

文章目录 寄存器(内存访问)1 内存中字的存储2 DS和[address]3 字的传送4 mov、add、sub指令5 数据段6 栈7 CPU提供的栈机制8 栈顶超界的问题9 push、pop指令10 栈段 寄存器(内存访问) 1 内存中字的存储 CPU中,用16位寄…

css的严格模式和混杂模式区别?

在网页开发中,CSS 的严格模式(也称为标准模式)和混杂模式(也称为怪异模式或兼容模式)是两种不同的渲染模式,它们影响了浏览器对网页的解析和渲染方式,下面是它们之间的主要区别: 严格…

pycharm安装配置运行py代码与命令行运行

命令行(winr cmd python) 三个小箭头表示可以运行py代码 什么是解释器 文字翻译二进制 你对电脑说 我爱你 电脑不知道什么意思 你对电脑说 111001101000100010010001 111001111000100010110001 111001001011110110100000 电脑便知道了你爱它 那么如何给计算机说这些二进制串…

C++中的STL-string类

文章目录 一、为什么学习string类?1.1 C语言中的字符串 二、准库中的string类2.2 string类2.3 string类的常用接口说明2.4 string类对象的容量操作2.5 string类对象的访问及遍历操作2.5 string类对象的修改操作2.7 string类非成员函数2.8 模拟实现string 一、为什么…

字节飞书前端实习面试

属于是被字节狠狠地拷打了。面试官人很好,让人感觉有很沉稳的感觉。问了一大堆关于底层的问题,属于是把我整麻了。 项目部分问的不多,主要问的都是一些前端涉及的底层知识,层层递进。 1.vue3的响应式是如何实现的 2.computed和watch是什么,有什么应用场景 3.盒子模型 4.BF…

富文本配置渲染场景问题杂谈

背景 可视化页面搭建场景,需要支持配置富文本内容并在页面中渲染,富文本编辑器SDK采用了tinymce/tinymce-react。 问题场景 问题1 :文本数据转义 富文本编辑器生成的HTML富文本在服务端存储时会对字符串进行转义,比如&#xf…

配置服务器自启动极简方式 /etc/rc.d/rc.local

配置服务器自启动有三种方式,本文采用极简方式 1. 修改 脚本 /etc/rc.d/rc.local 设置启动应用的脚本 vim /etc/rc.d/rc.local --追加以下内容 /home/init.sh >> /var/log/my_init.log 2>&1 &exit 0 脚本注释:命令中 2>&…

css选择器nth-last-child(n)的学习理解

上一节我们介绍了:nth-child(n)的使用,这一节我们来介绍一下:nth-last-child(n) :nth-last-child(n):此选择器和nth-child(n)类似都是选择其父元素的第 n 个子元素,唯一的区别在于它是从父元素的子元素末尾开始往前数,一直到第一个…

多项式回归算法模拟

python3.6 环境 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures# 生成随机数作为x变量,范围在-5到5之间,共100个样本 x np.random.un…

深度学习训练GPU显卡选型攻略

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 📑上期文章:『仪酷LabVIEW OD实战(5)——Object DetectionTensorRT工具包快速实现yolo目标检测』 🍻本文由virobotics(仪酷智能)原创…

Web框架开发-web框架

一、web框架 web框架(web framwork)是一种开发框架,用来支持动态网站,网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…

51单片机的万年历闹钟及温度补偿

撰写一篇基于51单片机的万年历闹钟及温度补偿的论文,你需要按照学术论文的标准格式和结构来组织内容。以下是一个大致的论文框架和内容建议: 基于51单片机的万年历闹钟及温度补偿系统设计与实现 摘要: 简要介绍论文的研究背景、目的、方法、…

C++特性之一:继承

1. 派生类的成员变量、成员函数、构造、析构 2. 继承的切片 3. 重定义/隐藏 重定义/隐藏:派生类和基类有同名的成员,就叫隐藏。派生类的成员隐藏了基类的成员。 隐藏时可以通过类作用限定符来访问被隐藏的成员。 class Person { public:void Print(){…

代码学习记录19

随想录日记part19 t i m e : time: time: 2024.03.14 主要内容:今天的主要内容是二叉树的第七部分,主要涉及修剪二叉搜索树 ;将有序数组转换为二叉搜索树;把二叉搜索树转换为累加树。 669. 修剪…

【UE5】非持枪状态蹲姿移动的动画混合空间

项目资源文末百度网盘自取 在BlendSpace文件夹中单击右键选择动画(Animation)中的混合空间(Blend Space) ,选择SK_Female_Skeleton,命名为BS_NormalCrouch 打开BS_NormalCrouch 水平轴表示角色的方向,命名为Direction,方向的最…

原生php单元测试示例

下载phpunit.phar https://phpunit.de/getting-started/phpunit-9.html 官网 然后win点击这里下载 新建目录 这里目录可以作为参考&#xff0c;然后放在根目录下 新建一个示例类 <?phpdeclare(strict_types1);namespace Hjj\DesignPatterns\Creational\Hello;class He…

如何实现系统的高可用性

实现系统的高可用性是确保系统持续提供服务的关键要素。下面是一些常见的高可用方案&#xff1a; 冗余部署&#xff1a;将系统的关键组件部署在多台服务器上&#xff0c;通过搭建主备或者集群的架构来实现冗余。当主服务器出现故障时&#xff0c;备用服务器能够自动接管&#…

Flutter可重排的列表控件ReorderableListView详解

文章目录 ReorderableListView 介绍主要属性使用示例注意事项 ReorderableListView 介绍 ReorderableListView 是 Flutter 中一个可重排的列表控件&#xff0c;允许用户通过拖动来改变列表项的顺序。它继承自 ListView&#xff0c;并提供了一些额外的功能来实现重排功能。 主…

面试 Java 并发编程八股文十问十答第六期

面试 Java 并发编程八股文十问十答第六期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;synchronized 和 R…

安卓通过termux部署ChatGLM

一、安装Termux并进行相关配置 1、安装termux Termux 是一个 Android 终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的 Linux 环境。 不需要 root 权限 Termux 就可以正常运行。Termux 基本实现 Linux 下的许多基本操作。可以使用 Termux 安装 python&…