TensorFlow入门(十七、神经元的拟合原理)

news2024/9/28 21:29:28

深度学习的概念源于人工神经网络的研究,神经网络是由多个神经元组成,。一个神经元由以下几个关键知识点组成:

                                ①激活函数                ②损失函数                ③梯度下降

单个神经元的网络模型如图所示

用计算公式表达如下:

z为输出的结果,x为输入,w为权重,b为偏置值。z的计算过程是将输入的x与其对应的w相乘,然后再把结果加上偏置值b。

模型每次的训练学习是为了调整w和b从而得到一个合适的值,最终由这个值配合运算公式所形成的逻辑就是神经网络的模型。可以看一下大脑细胞里的神经突触。它和我们建立的模型有点神似。

        大脑神经细胞是靠生物电来传递信号的,可以把它理解成经过模型的具体数值

        神经细胞相连的树突有粗有细,显然对通过不同粗细连接的生物电信号,会有不同的影响。这类似权重w,因为每个输入节点都会与相关连接的w相乘,也就实现了对信号的放大、缩小处理

        中间的细胞体是不知道如何运作的。可以将所有输入的信号经过w变换之后,再添加一个额外的偏置量b,把它们加在一起求和,然后再选择一个模拟细胞体处理的函数(即激活函数)来实现整个过程的仿真。当通过调整w和b得到一个合适的值后,再配合合适的激活函数,就会发现它可以产生很好的拟合效果,从而得出细胞体的运作逻辑。

正向传播

        模拟细胞体的仿真过程中,将数据从输入到输出的这种流向传递过程,称为正向传播。且该过程是在一个假设有合适的w和b的基础上,才可以实现对现实环境的正确拟合。然而,在现实环境中,是不知道w和b的值具体是多少才算正常的。

反向传播

        反向传播的目的 : 告诉模型w和b的值调整到多少合适。

        在一开始没有得到合适的权重时,正向传播生成的结果与实际的标签是有误差的,反向传播就是要把这个误差传递给权重,让权重做适当地调整来达到一个合适的输出。

        代码示例如下:

#反向优化
cost = tf.reduce_mean(tf.square(Y - z))
learning_rate = 0.01
#使用梯度下降算法
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

        实际训练过程中,模型需要通过多次迭代一点一点的修正,直到输出值与实际标签值的误差小于某个阈值为止。这个过程中,还需要将输出的误差转化为权重的误差,经常使用的算法是误差反向传播算法,也就是BP算法。

        为了要让损失值变得最小化,需要通过对其求导的方式,找到最小值时刻的函数切线斜率(也就是梯度),从而让w和b的值沿着这个梯度来调整。至于每次调整多少,我们引入一个叫做"学习率"的参数来控制,这样通过不断的迭代,使误差逐步接近最小值,最终找到w和b的合适值,达到拟合的效果。

误差反向传播算法-BP算法的思想

        反向传播使用的BP算法是应用较为广泛的一种参数学习算法。它是一种按照误差逆向传播算法训练的多层前馈神经网络。

        该算法的核心思想就是通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值。

        BP算法的模型示意图如下:

        BP算法的学习过程由信号的正向传播(求损失)与误差的反向传播(误差回传)两个过程组成:

                正向传播FP(求损失) : 在这个过程中,根据输入的样本、给定的初始化权重值w和偏置量b,计算最终输出值以及输出值与实际值之间的损失值。如果损失值不在给定的范围内则进行反向传播的过程,否则停止w、b的更新。

                反向传播BP(回传误差) : 将输出以某种形式通过隐层向输入层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

        由于BP算法是通过传递误差值δ进行更新求解权重值w和偏置值b,所以BP算法也常常被叫做δ算法。

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

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

相关文章

还在为没机器练手搭集群而苦恼?快进来免费领机器了!

前几天,在我们的技术交流群里看到有小伙伴问:有没有练手搭建Redis集群的方式推荐: 这里不禁让我想到,对于各种集群和分布式基础设施的搭建,其实是每个开发者进阶时候都要经历的一个成长过程。但是,这里对于…

数据结构与算法—时间复杂度和空间复杂度

目录 1. 什么是数据结构? 2.什么是算法? 3、算法的复杂度 4、时间复杂度 (1) 时间复杂度的概念: (2) 大O的渐进表示法: 六个例题: (3) 时间复杂度对比: 两个例题: OJ题分析时间复杂度…

一次HTTP请求流量分析详解(很详细一看就懂)

为什么要研究一个请求需要多少流量? 某天,办公室WIFI挂了,然后就开启热点用了一天,手机流量直接耗光50多个G。 后来排查发现有个任务每分钟成百上千个请求,所以才开始想到研究一下每个请求到底消耗了多少流量。以便在今…

orangepi 香橙派-实时时钟模块使用DS1307/DS3231/PCF8563

香橙派断电后,不带电池,所以时间也没法保持,需要增加模块进行时间处理 支持三种模块 DS1307/DS3231/PCF8563 在某宝上面可以买到 例子 I2cConnectionSettings settings new I2cConnectionSettings(1, Ds1307.DefaultI2cAddress); I2cDevi…

Java每日笔试题错题分析(2)

Java每日笔试题错题分析(2) 一、错题知识点前瞻第31题第24题第29题第10题 二、错题展示及其解析第31题第24题第29题第10题 一、错题知识点前瞻 第31题 三目运算符类型转换 在三目运算符java开发的环境下可以简单理解为双目运算符的类型转换问题&#xf…

基于YOLOv5、YOLOv8的烟雾报警检测(超实用项目)

目录 1.简介 2.YOLO算法 3.基于YOLOv5、YOLOv8的烟雾检测报警系统 3.1gui界面主代码 3.2YOLOv5主代码 视频已上传b站 YOLOv5、YOLOv8检测-烟雾检测报警系统_哔哩哔哩_bilibili 本文为系列专栏,包括各种YOLO检测算法项目、追踪算法项目、双目视觉、深度结构…

idea提示:无法下载源代码,找不到此对象的源代码

最近在入门消息队列,在项目里新引入了一个RabbitMQ的依赖,新建完Channel对象之后,调用该对象的方法queueDeclare想创建队列,结果发现方法里的参数都没有提示。遂点进去看,卧槽,源码下载不下来,这…

系统打印服务已关闭,竟然是它的问题!

故障现象: 一台电脑不能打印文件,一点打印就弹出对话框提示打印服务已关闭。手动开启打印服务后,大约不到1分钟打印服务又自动关闭了。 故障检修: 电脑重新启动后再次重启打印服务,打印服务依然还是会自动关闭。估计是…

【C刷题】day4

一、选择题 1、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( ) A: n0;while(chgetchar()!\n)n; B: n0;while(getchar()!\n)n; C: for(n0;getchar()!\n…

加密市场波动:地缘政治与美股走弱引发不确定性!

伴随着国庆假期的结束,多日波动率维持低位的加密市场也似乎开始苏醒。近期多次突破28000美元未果的比特币,于9日15:00开始从27800美元附近下跌,最低跌至27260美元,同期以太坊也至1550美元左右,创近半个月来新低。 Coin…

JVM 虚拟机面试知识脑图 初高级

导图下载地址 https://mm.edrawsoft.cn/mobile-share/index.html?uuid3f88d904374599-src&share_type1 类加载器 双亲委派模型 当一个类收到类加载请求,它首先把类加载请求交给父类(如果还有父类,继续往上递交请求).如果父类无法加载该类,再交给子类加载 防止内存中出现…

[LeetCode]链式二叉树相关题目(c语言实现)

文章目录 LeetCode965. 单值二叉树LeetCode100. 相同的树LeetCode101. 对称二叉树LeetCode144. 二叉树的前序遍历LeetCode94. 二叉树的中序遍历LeetCode145. 二叉树的后序遍历LeetCode572. 另一棵树的子树 LeetCode965. 单值二叉树 题目 Oj链接 思路 一棵树的所有值都是一个…

mysql面试题33:Blob和text有什么区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Blob和text有什么区别 Blob和text是数据库中存储大文本数据的两种数据类型&#…

都2023年了,你必须知道的几款主流性能测试工具!

市面上流行的压力/负载/性能测试工具多是来自国外,近年来国内的性能测试工具也如雨后春笋崛起。同时由于开发的目的和侧重点不同,其功能也有很大差异,下面就为您简单介绍10款目前最常见的测试产品。 1、kylinTOP测试与监控平台(商…

Transformer为什么如此有效 | 通用建模能力,并行

目录 1 更强更通用的建模能力 2 并行计算 3 大规模训练数据 4 多训练技巧的集成 Transformer是一种基于自注意力机制的网络,在最近一两年年可谓是大放异彩,我23年入坑CV的时候,我看到的CV工作似乎还没有一个不用到Transformer里的一些组…

毕业设计项目选题Java高考志愿咨询平台 高考志愿填报助手系统源码+调试+开题+lw

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

Netty 介绍

1 Netty 原理 Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制&…

jQuery 模版

一、安装 <script type"text/javascript" src"http://ajax.microsoft.com/ajax/jquery /jquery-1.4.min.js"></script> 二、元素隐藏/显示 &#xff0c;jQuery toggle() 通过 jQuery&#xff0c;可以使用 toggle() 方法来切换 hide() 和 sh…

关于系统/网络运维面试经验总结

一. 熟悉Linux命令 1. 最最最常问到的是 如何查看系统内存占用情况&#xff1f; ① free命令&#xff1a;free [-h][-m] 显示系统的内存使用情况&#xff0c;包括总内存、已使用内存、空闲内存等信息。其中&#xff0c;-m选项是以MB为单位来展示内存使用信息&#xff1b;-h选…

一些常见的测度

见 知乎 https://zhuanlan.zhihu.com/p/615270645