当前位置: 首页 > news >正文

神经网络与深度学习第六章--循环神经网络(理论)

#第六章-循环神经网络
前馈神经网络的缺点:
信息的传递是单向的。前馈神经网络可以看作一个复杂的函数,每次的输入都是独立的,即网络的输出只依赖于当前的输入。前馈神经网络是一种静态网络,没有记忆能力,就无法模拟有限状态自动机和图灵机等。
②前馈神经网络要求输入和输出的维数都是固定的,不能任意改变,因此无法处理变长的序列(时序)数据,比如视频、语音、文本等。
因此,就需要循环神经网络。

循环神经网络 RNN:是一类具有短期记忆能力的神经网络

  • 神经元不但可以接受其他神经元的信息,也可以接收自身的信息,形成具有环路的网络结构
    广泛应用于:语音识别、语言模型、自然语言生成等任务
  • 参数学习:随时间反向传播算法
    即,按照时间的逆序将错误信息一步步地往前传递
  • 长程依赖问题:当输入序列比较长时,会存在梯度爆炸和消失问题,也称 长程依赖问题
    改进:引入门控机制
  • 扩展(更广义的记忆网络模型):
    递归神经网络
    图网络

#6.1 给网络增加记忆能力
处理时序数据并利用其历史信息,需要使网络具有短期记忆能力

##6.1.1 延时神经网络 TDNN
思想:加入延时器(延时单元),使前馈神经网络也具有短期记忆能力

  • 延时单元:建立额外的延时单元来存储网络的历史信息,包括输入、输出、隐状态等

  • 延时神经网络 TDNN:在前馈神经网络的非输出层都添加一个延时器,记录神经元的最近几次活性值

    • 层神经元在时刻 t 的活性值

    • 即依赖于第层神经元在最近 K 个时刻的活性值
      ##6.1.2 有外部输入的非线性自回归模型(NARX)
      有外部输入的非线性自动回归模型 NARX:

  • 基于自回归模型,扩展加入延时器

  • 在每个时刻 t 都有一个外部输入 ,产生一个输出

  • NARX 通过一个延时器记录最近 次的外部输入和最近 次输出

  • 第 t 个时刻的输出 是非线性函数

##6.1.3循环神经网络 RNN
循环神经网络 RNN:

  • 通过使用带自反馈的神经元,能够处理任意长度的时序数据
  • 带反馈边的隐藏层的活性值(也称状态 or 隐状态) 是非线性函数(可以是一个前馈网络)

    上图是循环神经网络的示例
  • 循环神经网络具有短期记忆能力,相当于存储装置,理论上可以近似任意的非线性动力系统
    • 前馈神经网络可以模拟任何连续函数,而循环神经网络可以模拟任何程序

动力系统:指系统状态按照一定的规律随时间变化的系统, 可以看成一个动力系统
#6.2 简单循环网络
简单循环网络 SRN:是只有一个隐藏层的神经网络,但(区别于两层的前馈神经网络,)增加了从隐藏层到隐藏层的反馈连接。

  • 在时刻t,网络的输入:

  • 在时刻t,隐藏层的净输入:

  • 在时刻t,隐藏层的(隐)状态/活性值:

  • 其中,为“状态-状态权重矩阵”,为“状态-输入权重矩阵”,为偏置向量,为非线性激活函数(通常为 Logistic 函数或 Tanh 函数)。


##6.2.1 循环神经网络的计算能力
根据循环神经网络的通用近似定理,一个完全连接的循环网络是任何非线性动力系统的近似器

  • **图灵机:**一种抽象的信息处理装置,可以用来解决所有的可计算问题
  • 图灵完备:指一种数据操作规则,比如一种计算机编程语言,可以实现图灵机的所有功能,解决所有的可计算问题。目前的主流编程语言都是图灵完备的
  • 图灵完备定理:所有的图灵机都可以被一个由使用 Sigmoid 型激活函数的神经元构成的全连接循环网络来进行模拟
  • 因此,一个完全连接的循环神经网络可以近似解决所有的可计算问题

#6.3 应用到机器学习

##6.3.1 序列到类别模式

  • 输入为序列,输出为类别
  • 主要用于序列数据的分类问题
    • eg. 文本分类,输入数据为单词序列,输出为该文本的类别
  • 输入序列:是长度为 T 的序列,按不同时刻输入到循环神经网络,得到:
  • 不同时刻的隐状态:,两种方式处理隐藏状态 h,输入给分类器 ,得到:
  • 输出类别:
    • 正常模式:将最后时刻的状态 看作整个序列的最终表示(或 特征),即 间进
    • 按时间进行平均采样模式:将整个序列的所有状态的平均作为整个序列的表示,即

##6.3.2 同步的序列到序列模式

  • 每一时刻都有输入和输出,输入和输出都是序列,且序列长度相同

  • 主要用于序列标注

    • eg. 词性标注,对每个输入的单词都标注对应的词性标签
    • 信息抽取
    • 语音识别
  • 输入序列:,长度为 T,样本 x 按不同时刻输入到 RNN,并得到:

  • 不同时刻的隐状态:,每个时刻的隐状态 代表了当前时刻和历史的信息,并输入给分类器 ,得到输出(当前时刻的标签

  • 输出序列:,长度为 T



    • ##6.3.3 异步的序列到序列模式
      也称编码器-解码器模型,通过先编码后解码的方式实现
  • 输入和输出都是序列,但输入输出序列不需要有严格的对应关系,也不需要保持相同的长度

  • 应用:机器翻译,输入为源语言的单词序列,输出为目标语言的单词序列

  • 输入序列:,长度为 T。先将样本 x 按不同时刻输入到一个 RNN(编码器)中,并得到其编码 ;再使用另一个 RNN(解码器),得到输出序列:

  • 输出序列:,长度为 M

  • 公式( 是用作编码器的 RNN, 是用作解码器的 RNN(通常采用非线性的自回归模型), 为分类器):


    虚线表示将上一个时刻的输出作为下一个时刻的输入。

    #6.4 参数学习
    循环神经网络的参数可以通过梯度下降法进行学习

以同步的序列到序列模式为例:

  • 时刻 t 的输出

  • 时刻 t 的损失函数

  • 整个序列的损失函数

  • 整个序列的损失函数关于参数 U 的梯度 ,关于参数 W,b 的梯度同理

循环神经网络计算梯度的两种方式:

##6.4.1 随时间反向传播算法 BPTT

  • 算法思想:通过类似前馈神经网络的错误反向传播算法计算梯度

    • 见上图6.2,将循环神经网络看作一个展开的多层前馈网络,每一层对应循环神经网络的每个时刻
    • 展开的网络中,所有层共享参数,因此参数的真实梯度是所有展开层的参数梯度之和
  • 误差项,为 t 时刻的损失 对 k 时刻的隐藏神经层的净输入 的导数

  • 参数梯度:

##6.4.2 实时循环学习算法 RTRL

  • 算法思想:通过前向传播的思想来计算梯度(参考自动微分中的前向模式)

    **前向模式:**按计算图中计算方向的相同方向来递归地计算梯度

BPTT 和 RTRL 算法的比较:

  • 两种算法都是基于梯度下降的算法,分别通过反向模式和前向模式应用链式法则计算梯度
  • 在循环神经网络中,一般网络输出维度远远低于输入维度,因此 BPTT 算法的计算量会更小
  • 但 BPTT 算法需要保存所有时刻的中间梯度,空间复杂度较高
  • RTRL 算法不需要梯度回传,因此非常适用于需要在线学习或无限序列的任务中

#6.5 长程依赖问题
循环神经网络在学习过程中的主要问题是:由于梯度消失或梯度爆炸问题,简单循环神经网络实际上只能学习到短期的依赖关系,很难建模长时间间隔的状态之间的依赖关系,称为长程依赖问题
##6.5.1 改进方案

  • 方案一(最直接的方式):选取合适的参数,同时使用非饱和的激活函数,但需要足够的人工调参经验,限制了模型的广泛应用
  • 方案二(比较有效的方式):通过改进模型或优化方法来缓解网络的梯度消失和梯度爆炸问题
    梯度爆炸问题:比较容易解决,通过权重衰减或梯度截断来避免

权重衰减:给参数增加 范数的正则化项来限制参数的取值范围
梯度截断:一种启发式方法,当梯度的模大于一定的阈值时,就将它截断成为一个较小的数

**梯度消失问题:**是循环网络的主要问题,避免方法:

  • 使用一些优化技巧
  • 更有效的方式是改变模型
    • 原本的RNN的隐状态,现在让 ,同时令 为单位矩阵,即
    • 是非线性函数, 为参数
    • 优点:这样, 之间就变为线性依赖关系,且权重系数为 1,就不存在梯度消失或梯度爆炸问题
    • 缺点:丢失了神经元在反馈边上的非线性激活的性质,因此降低了模型的表示能力
  • 避免以上的缺点,更有效的改进策略:

  • 优点:这样, 之间既有线性关系,也有非线性关系,。可以缓解梯度消失问题
  • 缺点:
    • 梯度爆炸问题
    • 记忆容量问题:隐状态 能存储的信息是有限的,会发生饱和现象,随着记忆单元存储的内容越来越多,丢失的信息也越来越多
  • 为了解决以上两个问题缺点,需要引入下一节介绍的门控机制
    #6.6 基于门控的循环神经网络
    ##6.6.1 长短期记忆网络 LSTM
    长短期记忆网络 LSTM 是循环神经网络的一个变体,能有效解决简单循环神经网络的梯度爆炸或消失问题
    LSTM 在公式 的基础上改进了两方面:
  • 新的内部状态
    • 内部状态 专门进行线性的循环信息传递,同时(非线性地)输出信息给隐藏层的外部状态

    • 在每个时刻 t,LSTM 的内部状态 记录了当前时刻为止的历史信息

    • 内部状态:

    • 外部状态:

    • 其中, 为向量元素乘积,里面的f,i,o分别是遗忘门、输入门、输出门(详见下面的门控机制),用来控制信息传递的路径

    • 候选状态:

  • 门控机制:用来控制信息传递的路径。用三个门动态地控制内部状态应该遗忘多少历史信息,输入多少新信息,以及输出多少信息
作用 & 计算方式(门是“软门”,取值在(0,1)之间,表示以一定的比例允许信息通过)
遗忘门控制上一时刻的内部状态 需要遗忘多少信息
输入门控制当前时刻的候选状态 有多少信息需要保存
输出门控制当前时刻的内部状态 有多少信息需要输出给外部状态
  • 由上面的公式,
    • 时,记忆单元将历史信息清空,并将候选状态 写入(不过由 的公式,此时记忆单元 依然和上一时刻的历史信息相关)
    • 时,记忆单元将复制上一时刻的内容,不写入新的信息。

LSTM 网络的循环单元结构:

以上提到的公式可以归纳为:

**记忆:**循环神经网络的隐状态 h 存储了历史信息,可以看作一种记忆

短期记忆:简单循环网络中,隐状态 h 每个时刻都会被重写,可以看作一种短期记忆
长期记忆:长期记忆可以看作网络参数,隐含了从训练数据中学到的经验,其更新周期要远慢于短期记忆
长短期记忆:LSTM网络中,记忆单元 c 可以在某个时刻捕捉到某个关键信息,并保存一定的时间间隔,这个生命周期长于短期记忆 h,又远远短于长期记忆,因此称为长短期记忆

##6.6.2 LSTM 网络的各种变种
对门控机制的三个门进行改进,可获得 LSTM 网络的不同变体

  • 无遗忘门的 LSTM 网络:

  • peephole 连接:三个们不但依赖于输入 第 6 章 循环神经网络 RNN - 图103 和上一时刻的隐状态 第 6 章 循环神经网络 RNN - 图104,也依赖于上一时刻的记忆单元 第 6 章 循环神经网络 RNN - 图105

  • 耦合输入门和遗忘门:LSTM 网络中和输入门和遗忘门有互补关系,比较冗余,可以合并为一个

##6.6.3 门控循环单元网络 GRU
门控循环单元网络 GRU 是一种比 LSTM 更简单的循环神经网络

  • 原理:不引入额外的记忆单元,而是在公式 的基础上引入一个更新门
  • 更新门:控制当前状态需要从历史状态中保留多少信息(不经过非线性变换),以及需要从候选状态中接受多少新信息。相当于去掉了 LSTM 中使用输入门和遗忘门的冗余性,直接使用一个更新门控制输入和以往之间的平衡
    • 更新门
    • 重置门 用来控制候选状态 的计算是否依赖上一时刻的状态
    • 当前时刻的候选状态
    • 当前状态
      • 时,当前状态 和前一时刻的状态 之间为非线性函数关系
      • 当 第 6 章 循环神经网络 RNN - 图121 时,当前状态 和前一时刻的状态 之间为线性函数关系(实际上是 ),和当前输入 无关
      • 时,GRU 网络退化成简单循环网络
      • 时,当前状态 只和输入 相关,和历史状态 无关

#6.7 深层循环神经网络
循环神经网络可以看作既深又浅的网络:

  • 深:如果将 RNN 按时间展开,长时间间隔的状态之间的路径很长,因而可以看作一个很深的网络。
  • 浅:同一时刻,RNN 网络的输入到输出之间的路径 是很短的,所以是一个很浅的网络。

增加网络的深度(以增加网络的能力):

  • 主要是增加同一时刻网络输入到输出之间的路径 的长度

##6.7.1 堆叠循环神经网络 SRNN

  • **堆叠循环神经网络 SRNN:**即将多个循环神经网络堆叠起来,以增加循环神经网络的深度

  • 循环多层感知机 RMLP:简单循环网络 SRN 的堆叠

  • 堆叠循环神经网络中,时刻 t 第 层的输入 等于第 层的输出

  • 所以,时刻 t 第 层的隐状态:


##6.7.2 双向循环神经网络 Bi-RNN

6.7.2 双向循环神经网络 Bi-RNN

  • 使用场景:有些任务,一个时刻的输出不但和过去时刻的信息有关,也和后续时刻的信息有关

    • eg. 一个句中,一个单词的词性由上下文决定
    • 因此,需要增加一个按照时间逆序传递信息的网络层,来增强网络能力
  • 双向循环神经网络 Bi-RNN:由两层循环神经网络组成,输入相同,只是信息的传递方向不同

  • 例:第一层按时间顺序,第二层按时间逆序,在时刻 t 的隐状态:

    • 第一层的隐状态:
    • 第二层的隐状态:
    • 最后输出状态: 是向量拼接操作.

再解释一下双向循环神经网络:

双向循环神经网络(BRNN)的基本思想是提出每一个训练序列向前和向后分别是两个循环神经网络(RNN),而且这两个都连接着一个输出层。这个结构提供给输出层输入序列中每一个点的完整的过去和未来的上下文信息。

下图展示的是一个沿着时间展开的双向循环神经网络。六个独特的权值在每一个时步被重复的利用,六个权值分别对应:输入到向前和向后隐含层(w1, w3),隐含层到隐含层自己(w2, w5),向前和向后隐含层到输出层(w4, w6)。值得注意的是:向前和向后隐含层之间没有信息流,这保证了展开图是非循环的。每一个输出都是综合考虑两个方向获得的结果再输出

上面的图都可以辅助理解。

#6.8 扩展到图结构

  • 如上图所示,将循环神经网络按时间展开,每个时刻的隐状态 可以看作一个节点,这些节点构成一个链式结构来传递消息( 传给 )
  • 这种消息传递可以扩展到任意其它图结构,而不单单是链式结构

##6.8.1 递归神经网络 RecNN
递归神经网络 RecNN:是循环神经网络在有向无循环图上的扩展,一般结构为树状的层次结构

  • 即消息的传递方向不再限定为 传给 ,针对一个节点 ,可以让它接受来自父节点 的消息
  • 是非线性函数。

##6.8.2 图神经网络 GNN

  • 图神经网络 GNN:是将消息传递的思想扩展到图结构数据上的神经网络
    • 图结构数据:知识图谱、社交网络、分子网络等

#6.9 总结和深入阅读

  • 循环神经网络可以建模时间序列数据之间的相关性
  • 相较于 延时神经网络 和 有外部输入的非线性自回归模型,循环神经网络可以更方便地建模长时间间隔的相关性
  • 常用的循环神经网络的参数学习算法是:BPTT 算法 ,但其计算时间和空间会随时间线性增长
  • 一个完全连接的循环神经网络,可以近似任何非线性动力系统以及图灵机(6.2.1 循环神经网络的计算能力),解决所有可计算问题
  • 由于梯度爆炸和梯度消失问题,简单循环网络存在长程依赖问题
  • 为了解决长程依赖问题,最有效的解决方式是:引入门控机制,eg.
    • LSTM 网络:是目前为止最成功的循环神经网络模型
      • 应用:语音识别、机器翻译、语音模型、文本生成等
      • 通过引入线性连接来缓解长距离依赖问题
      • LSTM 网络的线性连接以及门控机制是一种十分有效的避免梯度消失问题的方法
    • GRU 网络
  • 循环神经网络可以很容易地扩展到更广义的图结构数据上,称为图网络。递归神经网络是一种在有向无环图上的简单的图网络

相关文章:

神经网络与深度学习第六章--循环神经网络(理论)

#第六章-循环神经网络 前馈神经网络的缺点: ①信息的传递是单向的。前馈神经网络可以看作一个复杂的函数,每次的输入都是独立的,即网络的输出只依赖于当前的输入。前馈神经网络是一种静态网络,没有记忆能力,就无法模拟…...

第三十五节:特征检测与描述-ORB 特征

1. 引言:为什么需要ORB? 在计算机视觉领域,特征检测与描述是许多任务(如图像匹配、目标跟踪、三维重建等)的核心基础。传统的算法如SIFT(尺度不变特征变换)和SURF(加速稳健特征)因其优异的性能被广泛应用,但它们存在两个显著问题: 专利限制:SIFT和SURF受专利保护,…...

重庆 ICPC 比赛游记

2025.5.9 比赛前一天晚上,激动地睡不着觉,起来收拾了好多东西。(其实就四本书,剩下的全是零食……关键在于这四本书基本没用。) 2025.5.10 学校丧心病狂的让我们 6:20 到校门口集合坐车(据说是怕赶不上比…...

二进制与十进制互转的方法

附言: 在计算机科学和数字系统中,二进制和十进制是最常见的两种数制。二进制是计算机内部数据存储和处理的基础,而十进制则是我们日常生活中最常用的数制。因此,掌握二进制与十进制之间的转换方法对于计算机学习者和相关领域的从业者来说至关…...

咖啡叶子病害检测数据集VOC+YOLO格式1468张4类别均为单叶子

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1468 标注数量(xml文件个数):1468 标注数量(txt文件个数):1468 …...

JDBC实现模糊、动态与分页查询的详解

文章目录 一. 模糊查询1. Mysql的写法2. JDBC的实现 二. 动态条件查询1. 创建生成动态条件查询sql的方法2. 完整的动态条件查询类以及测试类 三. 分页查询1. 什么是分页查询?2. 分页查询的分类3. MySQL的实现4. JDBC实现4.1. 创建page页4.2. 分页的实现 本章来讲一下…...

golang读、写、复制、创建目录、删除、重命名,文件方法总结

文章目录 一、只读文件二、写入文件三、复制文件四、创建目录五、删除目录/文件五、重命名文件 一、只读文件 file, err : os.Open("./main.go")defer file.Close() //打开文件一定要关闭关闭文件if err ! nil {fmt.Println("文件打开失败", err)}/*方案一…...

信贷域——互联网金融业务

摘要 本文深入探讨了信贷域全托与半托业务的定义、特点、适用场景及注意事项,并分析了互联网金融核心信息流的多个方面,包括资金流、信息流、风险流、合规流、物流、技术流和商流,还阐述了金融系统“断直连”业务的相关内容,以及…...

计算机操作系统概要

不谋万世者,不⾜谋⼀时。不谋全局者 ,足谋⼀域 。 ——陈澹然《寤⾔》《迁都建藩议》 操作系统 一.对文件简单操作的常用基础指令 ls ls 选项 目录或⽂件名:罗列当前⽬录下的⽂件 -l:以长格式显示⽂件和⽬录的详细信息 -a 或 --all&…...

gRPC开发指南:Visual Studio 2022 + Vcpkg + Windows全流程配置

前言 gRPC作为Google开源的高性能RPC框架,在微服务架构中扮演着重要角色。本文将详细介绍在Windows平台下,使用Visual Studio 2022和Vcpkg进行gRPC开发的完整流程,包括环境配置、项目搭建、常见问题解决等实用内容。 环境准备 1. 安装必要组…...

MATLAB安装常见问题及解决办法

MATLAB安装失败 安装MATLAB时可能会遇到失败的情况,通常是由于系统环境不兼容或安装文件损坏。确保系统满足MATLAB的最低要求,并重新下载安装文件。如果问题仍然存在,可以尝试以管理员身份运行安装程序。 许可证激活问题 在激活MATLAB许可证时,可能会遇到激活失败或无法…...

英语学习5.17

attract 👉 前缀:at-(朝向) 👉 含义:吸引(朝某处拉) 例句:The flowers attract bees. (花吸引蜜蜂。) distract 👉 前缀&#xff…...

深入解析 React 的 useEffect:从入门到实战

文章目录 前言一、为什么需要 useEffect?核心作用: 二、useEffect 的基础用法1. 基本语法2. 依赖项数组的作用 三、依赖项数组演示1. 空数组 []:2.无依赖项(空)3.有依赖项 四、清理副作用函数实战案例演示1. 清除定时器…...

Scrapy进阶实践指南:从脚本运行到分布式爬取

Scrapy作为Python生态中最强大的爬虫框架之一,其官方文档的"Common Practices"章节总结了多个高频使用场景的解决方案。本文将深入解析如何通过脚本控制爬虫、多爬虫协同工作、分布式部署策略以及反反爬技巧,帮助开发者突破基础使用限制。 一…...

(面试)TCP、UDP协议

TCP(传输控制协议)和UDP(用户数据报协议)是互联网核心的传输层协议,负责应用程序之间的数据传输。它们在设计目标、特性和适用场景上有显著差异: TCP:面向连接,可靠的,速…...

数据库blog1_信息(数据)的处理与效率提升

🌿信息的处理 🍂实际中离不开信息处理 ● 解决问题的建模 任何对问题的处理都可以看作数据的输入、处理、输出。 eg.一个项目中,用户点击信息由前端接收传递到后端处理后返回结果eg.面对一个问题,我们在搜集信息后做出处理与分析…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(23):受身形

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(23):受身形 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)うけみけい 受身形1、グループ2、グループ3、グループ(2) か ~かどうか1、か2、かどうか3、单词(1)日语(2)日语片假名单词4、相近词练习5、单词…...

kubernetes的Service与服务发现

kubernetes的Service与服务发现 1 Service1.1 Service概念1.2 Service类型1.2.1 ClusterIP1.2.2 NodePort1.2.3 LoadBalancer1.2.4 ExternalName1.2.5 Headless 2 CoreDNS2.1 CoreDNS概念2.2 CoreDNS插件架构2.3 CoreDNS在kubernetes下的工作原理2.4 Pod上的DNS解析策略 3 Ingr…...

python打卡day28

类的简单复习 知识点回顾: 类的定义pass占位语句类的初始化方法类的普通方法类的继承:属性的继承、方法的继承 类就是对属性和方法的封装,一个常见的类的定义包括了: 关键字class类名语法固定符号冒号(:)一个初始化函数__init__(…...

【学习心得】英伟达的诸多显卡性能对比

型号 CUDA核心 显存容量 算力(FP32/TFLOPS) A100 6912 HBM2e/80G 19.49 A800 6912 HBM2e/80G 19.49 H100 14592 HBM3/80G 51.22 H800 14592 HBM3/80G 51.22 T4 4352 GDDR6/16G 8.14 P40 3840 GDDR5/24G 11.76 L40 18176 G…...

使用Pinia持久化插件-persist解决刷新浏览器后数据丢失的问题

文章目录 一、现象二、原因三、解决:使用Pinia持久化插件-persist安装persistpinia中使用persist插件在创建定义状态时配置持久化 四、参考资料 一、现象 登录成功后,能正常看到文章分类的数据,但只要刷新浏览器就提示服务异常 二、原因 P…...

mysql中4种扫描方式和聚簇索引非聚簇索引【爽文一篇】

目录 一 mysql的聚簇索引&非聚簇索引 1.1 数据表 1.2 聚簇索引 1.3 非聚簇索引 1.4 覆盖索引 二 mysql的4种扫描查询 2.1 全表扫描 2.2 索引扫描 2.3 覆盖索引扫描 2.4 回表扫描 2.5 总结 三 mysql的回表查询详解 3.1 回表查询 一 mysql的聚簇索引&非聚簇…...

交流学习 | 江西同为科技有限公司赴海尔总部考察交流

2025年4月8日至9日,江西同为科技有限公司在江西省科技装备商会的带领下,以蔡文君经理为代表,一行人赴山东青岛海尔总部开展两天的考察交流活动。本次考察不仅深入剖析了海尔企业的前沿技术与管理理念,更促进了行业内科技创新、商业…...

AGI大模型(20):混合检索之rank_bm25库来实现词法搜索

1 混合检索简介 混合搜索结合了两种检索信息的方法 词法搜索 (BM25) :这种传统方法根据精确的关键字匹配来检索文档。例如,如果您搜索“cat on the mat”,它将找到包含这些确切单词的文档。 基于嵌入的搜索(密集检索) :这种较新的方法通过比较文档的语义来检索文档。查…...

QT调用Halcon查询所有摄像头名称

QT软件中的测试代码 //获取当前连接的所有设备信息实例HTuple hv_general, hv_ValueList;InfoFramegrabber("DirectShow", "device", &hv_general, &hv_ValueList);qDebug()<<QString::fromUtf8(hv_general.S().Text());//Value list for de…...

16 C 语言布尔类型与 sizeof 运算符详解:布尔类型的三种声明方式、执行时间、赋值规则

1 布尔类型 1.1 布尔类型概述 布尔类型用于表示逻辑上的真&#xff08;true&#xff09;和假&#xff08;false&#xff09;两种状态&#xff0c;是编程中条件判断和逻辑运算的基础。在 C 语言中&#xff0c;布尔值的表示方式随着标准的发展而不断完善。 1.2 布尔类型的三种声…...

配置ssh服务-ubuntu到Windows拷贝文件方法

背景&#xff1a; 在工作中&#xff0c;需要频繁从ubuntu到Windows拷贝文件&#xff0c;但有时间总是无法拷出&#xff0c;每次重启虚拟机又比较麻烦并且效率较低。可以使用scp服务进行拷贝&#xff0c;不仅稳定而且高效&#xff0c;现将配置过程进行梳理&#xff0c;以供大家参…...

使用ts-node搭建typescript运行环境

目录 首先安装好node.js 安装typescript 安装ts-node 创建一个typescript文件 使用ts-node运行typescript文件 首先安装好node.js 安装typescript npm install typescript4.7.4 -g 安装ts-node npm install ts-nodev10.8.1 -g 创建一个typescript文件 文件名为app.ts&a…...

如何深入学习MATLAB的高级应用?

文章目录 要深入学习 MATLAB 的高级应用&#xff0c;需要在掌握基础语法后&#xff0c;系统性地学习特定领域的工具箱和算法&#xff0c;并通过实战项目提升能力。以下是分阶段的学习路径和资源推荐&#xff1a; 一、深化核心技能 高级矩阵运算与线性代数 matlab % 稀疏矩阵处…...

英汉 “语言” 初印象:符号背后的文化底色​

英汉 “语言” 初印象&#xff1a;符号背后的文化底色​ ​ 原始尺寸更换图片 ​​ 在生活里&#xff0c;我们每天都会进行各式各样的交流&#xff0c;或许不曾留意&#xff0c;汉语和英语这两种极具代表性的语言&#xff0c;从最简单的问候语中就能展现出它们独特的文化内…...

C语言_编译全攻略_从原理到实战的深度解析

在 C 语言开发中,编译是连接源代码与可执行程序的关键桥梁。理解编译过程不仅能提升开发效率,更能帮助我们定位内存泄漏、性能瓶颈等深层次问题。本文将从编译原理出发,结合 GCC 工具链,带你掌握 C 语言编译的核心技术。 一、编译流程底层原理 1. 编译四阶段详解 预处理…...

AGI大模型(21):混合检索之混合搜索

为了执行混合搜索,我们结合了 BM25 和密集检索的结果。每种方法的分数均经过标准化和加权以获得最佳总体结果 1 代码 先编写 BM25搜索的代码,再编写密集检索的代码,最后进行混合。 from rank_bm25 import BM25Okapi from nltk.tokenize import word_tokenize import jieb…...

Vue3学习(组合式API——ref模版引用与defineExpose编译宏函数)

目录 一、ref模版引用。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;核心基本步骤。(以获取DOM、组件为例) &#xff08;3&#xff09;案例&#xff1a;获取dom对象演示。 <1>需求&#xff1a;点击按钮&#xff0c;让输入框聚焦。 &#xff08;4&…...

Zephyr OS 中的 FIFO 接口应用介绍

目录 概述 1 FIFO的接口函数 1.1 K_FIFO_DEFINE函数 1.2 k_fifo_init函数 1.3 k_fifo_put函数 1.4 k_fifo_get 函数 1.5 k_fifo_is_empty 函数 2 应用验证 2.1 UART中使用FIFO范例 2.2 生产-消费类型范例 3 注意事项 3.1 内存管理 3.2 线程安全边界 概述 Zephy…...

前端基础之CSS

基本语法规范 引入方式 1.内部引入 <style>p{color:blue ;font-size:30px;}</style> 2.行级引入 <p style "color : green ;font-size : 40px;">hello ,wyx</p><p>hello , wyx1</p><h1>hello , wyx2</h1> 3.外…...

【Linux网络】DNS与ICMP

DNS(Domain Name System) DNS是一整套从域名映射到IP的系统。 DNS背景 TCP/IP使用IP地址和端口号来确定网络上的一台主机的一个程序。但是IP地址不方便记忆。 于是人们发明了一种叫主机名的东西&#xff0c;是一个字符串&#xff0c;并且使用hosts文件来描述主机名和IP地址的…...

第二十七天打卡

一些函数 for i in range(2, 10000):if is_prime(i):print(i) if ...: 这是 Python 里的条件判断语句&#xff0c;当 is_prime(i) 的返回值为 True 时&#xff0c;就会执行 if 语句块里的代码。 func.__name__ 的作用 func.__name__ 是 Python 中函数对象的一个特殊属性&am…...

38-日语学习小程序

系统功能特点&#xff1a; 技术栈: springBootVueMysqlUni-app 功能点: 用户端 管理员端 用户端: 1.首页: 轮播图展示、N2词汇列表、网站公告列表 2.学习模块: 有五十音图 词汇 语法 3.社区模块: 可进行发帖 也可查看帖子进行回复 可查看小组 4.我的: N2词汇(点击查看详情…...

信贷风控笔记6——风控常用指标(面试准备14)

一、PSI&#xff1a; 1.计算过程&#xff1a;变量分箱10-20箱&#xff1b;统计各分箱内样本占比&#xff1b; 算各个分箱的index&#xff08;实际占比-预期占比&#xff09;*ln&#xff08;实际占比/预期占比&#xff09;&#xff1b; 将各分箱index求和得PSI 2.情况分类&…...

UDP三种通信方式

单播&#xff08;Unicast&#xff09; 单播是最常见的通信方式&#xff0c;数据从一个发送方传输到一个特定的接收方。发送方将数据包发送到接收方的IP地址和端口号&#xff0c;接收方通过监听指定的端口接收数据。单播适用于一对一的通信场景。 import java.net.DatagramPac…...

Windows运维工具批处理版

测试环境&#xff1a;windows10 必看&#xff1a; 1.新建记事本&#xff0c;另存为&#xff1a;文件类型所有文件&#xff0c;文件名运维.bat&#xff0c;编码ansi&#xff0c;复制代码&#xff0c;保存&#xff0c;双击运行 2.有的功能需要输入管理员密码&#xff0c;如果没…...

无需配置光猫,使用网管交换机配合路由器的IPTV功能实现单线复用

一、背景 弱电箱和电视柜只预留了一根网线&#xff0c;路由器放在电视柜&#xff0c;想实现既可以上网又可以正常观看iptv&#xff0c;本文提供了一种方法。 二、准备工作 1、带iptv功能的路由器&#xff1b;2、水星sg105pro网管交换机&#xff1b;3、网线若干&#xff1b; …...

Elasticsearch 官网阅读之 Term-level Queries

Term-level Queries 参考&#xff1a;https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-exists-query 一、Term Query Term Query 是 term 精准查询。需要注意的是&#xff0c;在进行 Term Query 的时候&#xff0c;要避免 text 类型的字段&#x…...

医疗大模型技术演进与行业应用全景

摘要 本文系统梳理医疗大模型技术架构的三大演进阶段,深度解析Transformer架构优化、多模态融合、模型压缩等核心技术突破。结合Google Med-PaLM、启真医疗大模型等16个典型行业案例,揭示医疗大模型在诊断辅助、药物研发、医院管理等九大场景的应用成效。基于权威评测数据,…...

【软考 McCabe度量法】

McCabe度量法&#xff08;McCabe’s Cyclomatic Complexity&#xff09;是由Thomas McCabe提出的一种用于衡量程序模块环路复杂性的软件度量方法。它通过分析代码的控制流结构来评估程序的复杂度&#xff0c;帮助开发者识别难以维护或测试风险较高的代码区域。 一、McCabe度量法…...

LabVIEW光谱信号仿真与数据处理

在光谱分析领域&#xff0c;LabVIEW 凭借其图形化编程、丰富函数库及强大数据处理能力&#xff0c;成为高效工具。本案例将介绍如何利用 LabVIEW 仿真光谱信号&#xff0c;并对实际采集的光谱数据进行处理&#xff0c;涵盖信号生成、数据采集、滤波、分析及显示等环节。 ​ 一…...

从零开始认识 Node.js:异步非阻塞的魅力

Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境&#xff0c;用于在服务器端运行 JavaScript 代码。它的设计目标是让开发者能够用 JavaScript 构建高性能、可扩展的网络应用。以下是关于 Node.js 的详细介绍&#xff1a; 1. 核心特点 事件驱动与非阻塞 I/O&…...

ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化

1.版本背景与发布 发布时间&#xff1a;2018年6月&#xff0c;由ECMA International正式发布&#xff0c;标准编号为ECMA-262 9th Edition。历史意义&#xff1a;作为ES6之后的第三次年度更新&#xff0c;ES2018聚焦于异步编程、正则表达式和对象操作的标准化&#xff0c;推动…...

【gitee 初学者矿建仓库】

简易的命令行入门教程: Git 全局设置: git config --global user.name "你的名字"触摸 git config --global user.email "你的邮箱"创建 git 仓库: mkdir codestore cd codestore git init -b "main" touch README.md # 选择运行 git add REA…...

Java 类和对象

文章目录 类和对象实例化对象this构造和初始化封装访问修饰限定符包自定义包 static代码块 类和对象 Java当中一切皆对象对象是什么呢&#xff1f; 比如是一个人&#xff0c;手机等怎么描述对象呢&#xff1f; 可以用类描述对象&#xff0c;可以理解类为一个模版&#xff0c;用…...