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

【博士每天一篇文献-算法】Fearnet Brain-inspired model for incremental learning

阅读时间:2023-12-16

1 介绍

年份:2017
作者:Ronald Kemker,美国太空部队;Christopher Kanan,罗切斯特大学
期刊: arXiv preprint
引用量:520
Kemker R, Kanan C. Fearnet: Brain-inspired model for incremental learning[J]. arXiv preprint arXiv:1711.10563, 2017.
image.png
image.png
提出一种名为 FearNet 的新型神经网络模型,这个模型受到大脑记忆机制的启发,用于解决增量学习中的灾难性遗忘问题。FearNet 模型不存储先前的例子,使其具有内存效率。它使用一个由大脑启发的双记忆系统,新记忆从受海马体复合体启发的网络巩固到受内侧前额叶皮层启发的长期存储网络。记忆巩固的灵感来自于睡眠期间发生的过程。FearNet 还使用一个受基底外侧杏仁核启发的模块来确定在回忆时使用哪个记忆系统。

2 创新点

  1. FearNet 的架构包括三个神经网络:一个受海马体复合体启发的用于快速回忆的近期记忆系统,一个受内侧前额叶皮层启发的用于长期存储的网络,以及一个受基底外侧杏仁核启发的用于确定使用哪个记忆系统进行回忆的网络。
  2. 受到睡眠期间记忆重放的启发,FearNet 使用生成式自编码器进行伪重放,这通过生成先前学习的例子并在巩固期间与新信息一起重放,减轻了灾难性遗忘,这个过程不涉及存储以前的训练数据。FearNet 使用了一个受基底外侧杏仁核启发的模块来决定在特定情况下应该使用哪个记忆系统进行回忆,这增加了模型的灵活性和准确性。
  3. FearNet 在大型图像(CIFAR-100、CUB-200)和音频数据集(AudioSet)上取得了最先进的结果,并且具有相对较小的内存占用,展示了双记忆模型如何被扩展。

3 相关研究

  1. 重放(Rehearsal)方法:通过在新学习会话中混合旧样本来模拟独立同分布条件,以减少灾难性遗忘。这种方法需要存储所有训练数据。 参考论文:Hetherington P A, Seidenberg M S. Is there “catastrophic interference” in connectionist networks?[C]//11th Annual Conference Cognitive Science Society Pod. Psychology Press, 2014: 26-33.
  2. 伪重放(Pseudorehearsal):由 Robins (1995) 提出,不重放过去的训练数据,而是生成新的例子。这种方法启发了 FearNet 的记忆巩固方法。 参考文献:Robins A. Catastrophic forgetting, rehearsal and pseudorehearsal[J]. Connection Science, 1995, 7(2): 123-146.
  3. PathNet:使用进化算法找到 DNN 的最优路径,然后冻结该路径上的权重。它假设每个学习会话都看到所有类别,不适合增量类别学习。 参考文献:Fernando C, Banarse D, Blundell C, et al. Pathnet: Evolution channels gradient descent in super neural networks[J]. arXiv preprint arXiv:1701.08734, 2017.
  4. Elastic Weight Consolidation (EWC):一种正则化方案,将可塑性重定向到对之前学习会话不太重要的权重上。 参考论文:Kirkpatrick J, Pascanu R, Rabinowitz N, et al. Overcoming catastrophic forgetting in neural networks[J]. Proceedings of the national academy of sciences, 2017, 114(13): 3521-3526.
  5. Fixed Expansion Layer (FEL) 模型:通过使用稀疏更新来减轻灾难性遗忘,具有连接性约束的第二隐藏层(FEL层)在训练期间不更新。 参考论文:Coop R, Mishtal A, Arel I. Ensemble learning in fixed expansion layer networks for mitigating catastrophic forgetting[J]. IEEE transactions on neural networks and learning systems, 2013, 24(10): 1623-1634.
  6. GeppNet:使用自组织映射(SOM)作为长期记忆,输入通过二维格子重新组织,并通过简单的线性层进行分类。 参考论文:Gepperth A, Karaoguz C. A bio-inspired incremental learning architecture for applied perceptual problems[J]. Cognitive Computation, 2016, 8(5): 924-934.
  7. iCaRL 框架:一种增量类别学习框架,使用 DNN 进行监督表示学习,通过存储的示例和学习会话数据更新 DNN。 参考论文:Rebuffi S A, Kolesnikov A, Sperl G, et al. icarl: Incremental classifier and representation learning[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2017: 2001-2010.

4 算法

4.1 模型结构

image.png
图1展示了FearNet模型的结构,它由三个受大脑启发的模块组成,这些模块分别对应于人类大脑中的不同部位,具体如下:

  1. mPFC (Medial Prefrontal Cortex, 内侧前额叶皮层):这部分负责长期存储(long-term storage)。在FearNet中,mPFC作为一个神经网络,被训练来重建其输入(使用对称的编码器-解码器,即自编码器),并计算分类概率。mPFC的设计允许它通过自编码器生成伪示例,这有助于在不需要存储先前训练样本的情况下进行记忆巩固。
  2. HC (Hippocampal Complex, 海马体复合体):这部分负责近期存储(recent storage)。在FearNet中,HC被建模为一个概率神经网络,它使用存储的训练样本来计算输入特征向量属于某个类别的条件概率。一旦HC中的例子被巩固到mPFC,它们就会被从HC中移除。
  3. BLA (Basolateral Amygdala, 基底外侧杏仁核):这部分用于决定在回忆时使用mPFC还是HC。BLA在预测时使用,以确定应该使用短期记忆系统还是长期记忆系统来进行输入的分类。BLA的输出是一个介于0和1之间的值,值为1表示应该使用mPFC进行分类。

FearNet通过这三个模块的交互来实现增量学习,其中mPFC和HC分别处理长期和近期的记忆存储,而BLA则在预测阶段决定使用哪个记忆系统。这种设计模仿了大脑如何处理和巩固记忆,使得FearNet能够在学习新类别的同时,减少对旧类别知识的遗忘。
image.png
FearNet模型中两个子系统,分别是内侧前额叶皮层(mPFC)和基底外侧杏仁核(BLA)。

  1. mPFC (Medial Prefrontal Cortex, 内侧前额叶皮层) 子系统:
    • 负责长期存储远程记忆(long-term storage of remote memories)。
    • 在FearNet中,mPFC是一个深度神经网络(DNN),它不仅被训练来使用对称的编码器-解码器结构重建其输入(即自编码器),而且还用于计算分类概率。
    • 自编码器的重建能力允许mPFC生成伪样本,这些样本用于在不需要存储实际训练数据的情况下进行记忆巩固。
  2. BLA (Basolateral Amygdala, 基底外侧杏仁核) 子系统:
    • 在预测时使用,以确定记忆应该从短期记忆还是长期记忆中召回。
    • BLA作为决策模块,帮助FearNet在进行预测时选择最合适的记忆系统。它的输出将影响是使用HC(海马体复合体,处理近期记忆)还是mPFC(处理长期记忆)来进行特定输入的分类。

在FearNet模型中,BLA的作用是动态选择最合适的记忆系统来处理当前的输入数据。这种设计模仿了大脑如何处理记忆的检索过程,即在需要时选择从短期记忆或长期记忆中提取信息。通过这种方式,FearNet能够灵活地处理新信息和旧信息,减少灾难性遗忘,同时提高增量学习的性能。

4.2 算法步骤

(1)训练阶段

  1. 初始化mPFC:使用基础知识集初始化mPFC网络。
  2. 存储类统计信息:为基础知识中的每个类别存储均值(µt)和协方差矩阵(Σt)。
  3. 循环学习会话:对于T/2到T的每个类别c:
    • 将类别c的数据(X, y)存储在HC(海马体复合体)中。
    • 如果c满足睡眠条件(例如,每K个学习会话后):
      • 使用HC中的数据和mPFC解码器生成的伪示例对mPFC进行微调。
      • 更新所有见过的类别的均值和协方差矩阵。
      • 清除HC中的数据。
    • 否则:
      • 更新BLA(基底外侧杏仁核)网络。

(2)预测阶段

  1. 输入数据:接收输入数据X。
  2. BLA预测:BLA网络预测使用HC还是mPFC进行回忆的概率A(X)。
  3. 计算ψ值:计算ψ值,它是HC预测的最高概率与BLA输出的组合。
  4. 决策回忆
    • 如果ψ值大于mPFC预测的最高概率,则使用HC进行回忆。
    • 否则,使用mPFC进行回忆。
  5. 输出预测:返回回忆网络的预测结果作为最终输出。

5 实验分析

(1)基于蒸馏回放 的ICaRL算法
image.png
说明在增量学习中,保留足够数量的示例对于维持对先前学习类别的记忆至关重要。
(2)不同的增量学习模型性能
image.png
image.png

  1. X轴:表示模型训练过程中所见到的类别数量。随着模型学习越来越多的类别,X轴的值增加。
  2. Y轴:表示平均测试准确率,即模型对所有至今见过的类别的测试样本正确分类的比例。
  3. 曲线:每条曲线代表一个不同的模型或基线方法,包括:
  • Offline MLP:这是一个非增量学习基线,它一次性接收所有训练数据。
  • 1-Nearest Neighbor (1-NN):最近邻算法,它通过存储所有训练数据来避免遗忘。
  • GeppNet+STM:GeppNet的变体,使用固定大小的短期记忆缓冲区。
  • GeppNet:基于自组织映射的增量学习模型。
  • FEL(Fixed Expansion Layer):使用稀疏更新来减少灾难性遗忘。
  • iCaRL(Incremental Classifier and Representation Learning):一种特别为增量类别学习设计的框架。
  • FearNet:本文提出的模型,使用双记忆系统和伪重演机制。
  1. 评价指标:
  • Ω b a s e \Omega_{base} Ωbase:衡量模型对基础知识(即早期学习过的类别)的保持能力。
  • Ω n e w \Omega_{new} Ωnew衡量模型对最新学习类别的测试准确率。
  • Ω a l l \Omega_{all} Ωall衡量模型对所有至今见过的类别的综合测试准确率。
  1. 实验结论
  • FearNet的优越性能:FearNet在CIFAR-100、CUB-200和AudioSet数据集上的所有类别至今所见的平均测试准确率(Mean-class test accuracy)表现出色,这表明它在增量学习过程中有效地减少了灾难性遗忘。
  • 减少灾难性遗忘:FearNet的设计显著降低了学习新类别时对旧类别知识遗忘的风险。这一点从图4中FearNet曲线相对于其他方法保持较高准确率可以看出。
  • 与现有方法的比较:表2中列出的FearNet与其他方法相比,通常具有更高的 Ω b a s e \Omega_{base} Ωbase Ω a l l \Omega{all} Ωall值,这表明FearNet在保持基础知识和整合新知识方面更有效。
  • FearNet的内存效率:FearNet不存储先前训练的示例,而是使用生成模型来模拟旧的记忆,这使得它在内存使用上更加高效。

(3)验证BLA的有效性
image.png
展示了FearNet在使用BLA进行网络选择与已知记忆位置的理想情况(预言者)之间的性能差异。BLA能够较好地预测应该使用mPFC(长期记忆)还是HC(近期记忆)进行回忆,这表明BLA在实际应用中是有效的。
(4)记忆巩固对于维持长期记忆的稳定性分析
image.png

  • X轴:表示在FearNet模型中进行记忆巩固(或称为“睡眠”)的频率。这个频率指的是模型在连续学习新类别之前,将新学到的信息从短期记忆(HC)转移到长期记忆(mPFC)的次数。
  • Y轴:表示性能指标,是平均测试准确率或其他衡量模型性能的指标。
  • 曲线:展示了随着睡眠频率减少(即学习更多类别后进行记忆巩固的间隔变长),FearNet在不同性能指标上的变化趋势。

图中显示了随着睡眠频率的减少(即记忆巩固间隔的增加),FearNet的性能在某些方面有所下降。这表明定期进行记忆巩固对于维持长期记忆的稳定性是重要的。
(5)多模态学习能力
截屏2024-06-23 下午4.41.42.png
表4显示了FearNet在处理来自不同模态(如图像和音频)的数据时的学习能力。这表明FearNet能够适应并学习多种类型的输入数据。Ωbase指标反映了模型对基础知识的保留能力。实验发现,当基础知识集较大或更具代表性时,模型在增量学习过程中对基础知识的保留更好。Ωnew指标衡量了模型对新类别的学习能力。实验结果表明,即使在增量学习新模态的数据时,FearNet也能够有效地学习新知识。Ωall指标提供了模型在整个测试集上的整体性能的视图。这揭示了FearNet在整合新旧知识方面的能力。
(6)内存需求
截屏2024-06-23 下午4.43.40.png
FearNet显示出比其他模型更低的内存需求,这表明它在内存使用上更为高效。
(7)对角线协方差矩阵(Diagonal Covariance Matrix)代替完整的协方差矩阵(Full Covariance Matrix)对FearNet模型性能的影响。
截屏2024-06-23 下午4.44.27.png
如果性能指标下降不多,这表明模型对协方差矩阵类型的敏感度较低。使用对角线协方差矩阵通常会减少模型的内存占用,因为它只存储方差而不是完整的协方差矩阵。如果性能下降可接受,这可能是一个内存优化的有效策略。这个实验说明了在FearNet模型中使用对角线协方差矩阵作为协方差矩阵简化的一种可能方法,以及这种方法对模型性能和内存效率的潜在影响。

6 思考

(1)结构比较复杂,分为三个模块,模块之间有生物启发的复杂关系。
(2)论文的“睡眠”是一个比喻,指的是FearNet在一定数量的学习会话后进行记忆巩固的过程。

相关文章:

【博士每天一篇文献-算法】Fearnet Brain-inspired model for incremental learning

阅读时间:2023-12-16 1 介绍 年份:2017 作者:Ronald Kemker,美国太空部队;Christopher Kanan,罗切斯特大学 期刊: arXiv preprint 引用量:520 Kemker R, Kanan C. Fearnet: Brain-…...

Appium+python自动化(二十六)- 烟花一瞬,昙花一现 -Toast提示(超详解)

简介  今天宏哥在这里首先给小伙伴们和童鞋们分享一个有关昙花的小典故:话说昙花原是一位花神,她每天都开花,四季都灿烂。她还爱上了每天给她浇水除草的年轻人。后来,此事给玉帝得知。于是,玉帝大发雷霆,要…...

大数据之路 读书笔记 Day1

大数据之路 读书笔记 Day1 阿里巴巴大数据系统体系架构图 1. 数据采集层 #mermaid-svg-YqqD2w3qV6jc2aGP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YqqD2w3qV6jc2aGP .error-icon{fill:#552222;}#mermaid-sv…...

吴恩达揭秘:编程Agent如何革新软件开发行业

作为 AI 领域的杰出人物,吴恩达教授对编程 Agent 的兴起表示了极大的兴趣。他认为,编程 Agent 有潜力通过自动执行繁琐的任务、提高代码质量和加速开发周期来彻底改变软件开发行业。 本文将深入探讨吴恩达对编程 Agent 的见解, 多代理系统质…...

Study--Oracle-04-SQL练习

一、SQL语句思维导图 二、SQL练习 -- 以employee_id 为排序,列出前5个人 -- FETCH select employee_id,first_name from employees order by employee_id FETCH FIRST 5 rows only; -- 以employee_id 为排序,从第6个人开始 到第10个人 -- offset …...

目前音质最好的麦克风是哪款,一文读懂无线麦克风推荐哪些品牌好

​在自媒体时代,无线领夹麦克风成为自媒体人不可或缺的助手。它帮助我们在各种环境中保持清晰声音,提升创作效率与作品质量。然而,面对众多无线麦克风产品,挑选一款性价比高、性能卓越的款式却成为难题。今天,我将分享…...

Python笔记 异常、模块与包

一、了解异常 异常的概念 什么是异常 当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUG。 二、异常的捕获 1.知道为什么要捕获异常 世界上没有完美的程…...

spark查看日志

Logger 当 Spark 任务已经提交到集群运行后&#xff0c;可以通过以下几种方式查看LoggerFactory输出的日志&#xff1a; Web 界面&#xff1a;在 Spark 任务运行时&#xff0c;可以通过访问 Spark 的 Web UI 来查看日志。通常&#xff0c;可以在浏览器中输入http://<drive…...

【LeetCode】每日一题:LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -1 …...

记录一个Xshell使用中Xmanager...X11转发的提示问题

希望文章能给到你启发和灵感&#xff5e; 如果觉得有帮助的话&#xff0c;点赞关注收藏支持一下博主哦&#xff5e; 阅读指南 一、环境说明1.1 硬件环境1.2 软件环境 二、问题和错误三、解决四、理解和延伸一下 一、环境说明 考虑环境因素&#xff0c;大家适当的对比自己的软硬…...

Mamba 模型

建议观看讲解视频&#xff1a;AI大讲堂&#xff1a;革了Transformer的小命&#xff1f;专业拆解【Mamba模型】_哔哩哔哩_bilibili 1. 论文基本信息 2. 创新点 选择性 SSM&#xff0c;和扩展 Mamba 架构&#xff0c;是具有关键属性的完全循环模型&#xff0c;这使得它们适合作…...

30-33、SpringBoot项目部署\属性配置方式\多环境开发(一个文件)\多环境分组(多个文件)

1、打包插件:和springboot的版本保持一致 根pom <build><plugins><!--打包插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>3.1.3</versi…...

【PyQt5】一文向您详细介绍 setContentsMargins() 的作用

【PyQt5】一文向您详细介绍 setContentsMargins() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通…...

分页查询前端对接

文章目录 添加角色修改角色当点击修改按钮后,那么就会弹出对话框,所以要设置显示为true点击修改的时候就是 要显示对话框 制作用户管理页面开发后端接口用户查询前端整合新增接口功能实现修改 添加角色 首先添加 添加表单的组件 那么总结一下 就是使用 组件 然后再使用变量接…...

从一万英尺外看libevent(源码刨析)

从一万英尺外看libevent 温馨提示&#xff1a;阅读时间大概二十分钟 前言 Libevent是用于编写高速可移植非阻塞IO应用的库&#xff0c;其设计目标是&#xff1a; 可移植性&#xff1a;使用libevent编写的程序应该可以在libevent支持的所有平台上工作。即使没有好的方式进行非…...

Linux部署SVN

一.下载与安装 &#xff08;1&#xff09;yum安装 yum install subversion &#xff08;2&#xff09;源文件编译安装 ①下载svn源文件 subversion-xxx.tar.gz&#xff08;subversion 源文件&#xff09; subversion-deps-xxx.tar.gz&#xff08;subversion依赖文件&…...

Linux高并发服务器开发(二)系统调用函数

文章目录 1 系统调用2 errno3 虚拟内存空间4 文件描述符5 常用文件IO函数6 阻塞和非阻塞7 lseek 偏移函数8 文件操作函数之stat函数9 文件描述符复制 dup10 fcnlt函数 修改文件属性11 目录相关操作12 时间相关函数 1 系统调用 根据系统调用&#xff0c;获取驱动信息、CPU的信息…...

rk3568 Android 11在系统怎样执行命令获取SN号

目录 1. 使用ADB&#xff08;Android Debug Bridge&#xff09;2. 使用Shell脚本或应用程序3. 使用系统API4. 直接在设备上使用Shell5. getprop使用方法常见属性示例注意事项 在瑞芯微RK3568 Android 11系统中执行命令或获取SN号&#xff08;序列号&#xff09;通常可以通过几种…...

PostgreSQL 性能优化与调优(六)

1. 索引优化 1.1 创建索引 索引可以显著提高查询性能。创建索引的基本语法如下&#xff1a; CREATE INDEX index_name ON table_name (column_name);例如&#xff0c;为 users 表的 username 列创建索引&#xff1a; CREATE INDEX idx_username ON users (username); 1.2 …...

win10 安装openssl并使用openssl创建自签名证书

win10创建自签名证书 下载安装配置openssl 下载地址&#xff1a; https://slproweb.com/download/Win64OpenSSL-3_3_1.exe https://slproweb.com/products/Win32OpenSSL.html 完成后安装&#xff0c;一路next&#xff0c;到达选位置的之后选择安装的位置&#xff0c;我这里选…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...