学习笔记-250222
论文:
1.首先利用llm从普通的描述中获取结构化信息
利用llm来生成与类别相关的描述以及相应的结构化关系;
笑鼠,代码还没看,光看论文觉得太复杂了,引入Q矩阵(e2e和e2a)entity实体。attribute属性。
1.使用结构化知识指导学习得到的基于注意力的矩阵(attention-based matrices),并将这些矩阵集成到文本编码器的不同层中。
在实践中,通过同时计算一组查询(queries)上的注意力函数来实现这一点。这些查询被打包成一个矩阵Q。类似地,键(keys)和值(values)也被分别打包成矩阵K和V。
对于第l层,使用基于注意力的矩阵MlMl,自注意力的输出通过以下公式计算:

这里,Ml是为每一层特别设计的矩阵,用于显式表示该层内每个描述的丰富结构关系,从而增强与类别相关的关键信息。
2.层次化的知识建模方法,将来自多个层次的整体语义与结构化关系相结合,有助于发现大型语言模型(LLMs)未能识别的复杂关联。
-
整合结构化知识:通过在自注意力机制中引入额外的矩阵Ml,可以更好地捕捉输入数据中的结构化信息,这有助于提高模型对于特定任务的表现。
-
跨层级自注意力:这种方法允许模型自动学习不同抽象层次之间的关系,无需人为定义这些关系。它通过结合高层次和全局级别的提示,能够捕捉长程依赖性和复杂的语义联系。
-
增强表达能力:通过上述机制,模型不仅能够理解单个词或短语的意义,还能捕捉整个句子或段落内部以及跨句子、跨段落之间的复杂关系,从而提升对文本深层次含义的理解能力。
该技术通过在自注意力机制中融入结构化知识和跨层级提示,增强了模型理解和表达复杂文本关系的能力。
反正很复杂,看不懂......
250223
迁移:主要是学生不同
或者是知识点不同
如果二者都不一样,那没办法搞啊
阅读文章:
Prompt-to-prompt:让生成的图像保持一致 - 知乎
理了下PromptCD代码:
publisher-PromptCD/PromptCD: PromptCD:传输跨域认知诊断的提示
以irt模型为例:
1.初始化irt模型
初始化中
self.pp_dim = pp_dim # 提示向量维度
self.latent_dim = latent_dim # 潜在特征维度
self.s_irt_net = Source_MIRTNet( # 源域模型user_num, s_item_num, latent_dim, pp_dim, s_ranges, a_range
)
self.t_irt_net = Target_MIRTNet( # 目标域模型(版本1)user_num, t_item_num, latent_dim, pp_dim, s_ranges, a_range
)
self.t_irt_net2 = Target_MIRTNet2( # 目标域模型(初始化有优化)user_num, t_item_num, latent_dim, pp_dim, s_ranges, a_range
)
class Source_MIRTNet(nn.Module):def __init__(self, user_num, item_num, latent_dim, pp_dim, s_ranges, a_range, irf_kwargs=None):super(Source_MIRTNet, self).__init__()self.user_num = user_numself.item_num = item_numself.pp_dim = pp_dimself.s_ranges = s_rangesself.latent_dim = latent_dimself.irf_kwargs = irf_kwargs if irf_kwargs is not None else {}self.b = nn.Parameter(torch.rand((self.item_num, self.latent_dim)))nn.init.xavier_uniform_(self.b)self.s_exer_vectors = nn.ParameterList([nn.Parameter(torch.rand(self.pp_dim)) for _ in range(len(s_ranges))])self.theta = nn.ParameterList([nn.Parameter(torch.randn(self.user_num, self.latent_dim))for _ in range(len(s_ranges))])for theta in self.theta:nn.init.xavier_uniform_(theta)self.prompt_theta = nn.Parameter(torch.randn(self.user_num, self.pp_dim))nn.init.xavier_uniform_(self.prompt_theta)self.a = nn.Embedding(self.item_num, 1)self.c = nn.Embedding(self.item_num, 1)self.a_range = 1self.value_range = 8self.fc1 = nn.Linear(self.pp_dim + self.latent_dim, self.latent_dim)self.fc2 = nn.Linear(self.pp_dim + self.latent_dim, self.latent_dim)def forward(self, user, item):prompt_theta_repeated = self.prompt_theta.repeat(len(self.s_ranges), 1)theta_concatenated = torch.cat([theta for theta in self.theta], dim=0)new_theta = torch.cat([prompt_theta_repeated, theta_concatenated], dim=1)new_theta = torch.index_select(new_theta, dim=0, index=user)new_theta = self.fc1(new_theta)new_theta = torch.squeeze(new_theta, dim=-1)temp_vectors = torch.cat([vector.repeat(r[1] - r[0] + 1, 1) for vector, r in zip(self.s_exer_vectors, self.s_ranges)], dim=0)all_b = torch.cat([temp_vectors, self.b], dim=1)new_b = torch.index_select(all_b, dim=0, index=item)new_b = self.fc2(new_b)new_b = torch.squeeze(new_b, dim=-1)new_a = self.a(item)new_a = torch.squeeze(new_a, dim=-1)new_c = torch.squeeze(self.c(item), dim=-1)new_c = torch.sigmoid(new_c)if self.value_range is not None:new_theta = self.value_range * (torch.sigmoid(new_theta) - 0.5)new_b = self.value_range * (torch.sigmoid(new_b) - 0.5)if self.a_range is not None:new_a = self.a_range * torch.sigmoid(new_a)else:new_a = F.softplus(new_a)#------------------------------if torch.max(new_theta != new_theta) or torch.max(new_a != new_a) or torch.max(new_b != new_b): # pragma: no coverraise ValueError('ValueError:theta,a,b may contains nan! The a_range is too large.')return self.irf(new_theta, new_a, new_b, new_c, **self.irf_kwargs)
class Source_MIRTNet(nn.Module):def __init__(self, user_num, item_num, latent_dim, pp_dim, s_ranges, a_range, irf_kwargs=None):super(Source_MIRTNet, self).__init__()# 基础参数self.user_num = user_num # 用户总数self.item_num = item_num # 题目总数(源域)self.pp_dim = pp_dim # 提示向量维度(用于迁移学习)self.s_ranges = s_ranges # 源域题目范围划分(如知识点分类)self.latent_dim = latent_dim # 潜在特征维度(用户能力θ和题目难度b的维度)self.irf_kwargs = irf_kwargs # IRT模型参数(如三参数模型配置)self.a_range = a_range # 区分度a的范围约束(如[0,1])self.value_range = 8 # θ和b的范围约束(如[-4,4])
题目参数:(主要看题目范围参数,每个范围一个pp_dim维向量)
# 题目难度参数(b):每个题目对应一个latent_dim维向量
self.b = nn.Parameter(torch.rand((self.item_num, self.latent_dim)))
nn.init.xavier_uniform_(self.b) # Xavier初始化# 题目范围嵌入向量(s_exer_vectors):每个范围一个pp_dim维向量
self.s_exer_vectors = nn.ParameterList([nn.Parameter(torch.rand(self.pp_dim)) for _ in range(len(s_ranges)) # 根据s_ranges长度创建(如代数、几何各一个)
])
用户参数:
# 用户能力参数(theta):每个范围独立的能力矩阵(如代数能力、几何能力)
self.theta = nn.ParameterList([nn.Parameter(torch.randn(self.user_num, self.latent_dim))for _ in range(len(s_ranges))
])
for theta in self.theta: # Xavier初始化每个能力矩阵nn.init.xavier_uniform_(theta)# 用户提示向量(prompt_theta):跨范围共享的迁移适配参数
self.prompt_theta = nn.Parameter(torch.randn(self.user_num, self.pp_dim))
nn.init.xavier_uniform_(self.prompt_theta)
其中:torch.randn 函数用于生成一个形状为 (self.user_num, self.pp_dim) 的张量,其中的元素是从标准正态分布(均值为0,标准差为1)中随机抽取的。
self.user_num 表示用户的数量,而 self.pp_dim 则代表预处理维度或先验/后验维度的大小。这个二维张量可以看作是每个用户对应的一个向量集合,每个向量的长度为 pp_dim。
self.prompt_theta: 此变量被设计用来存储与每个用户相关的“提示”向量。这里的“提示”可能是指某种形式的上下文信息或额外特征,旨在增强模型对不同用户行为的理解能力。这些向量初始时是随机的,但随着模型的训练,它们将根据任务需求进行调整,以更好地捕捉每个用户的独特偏好或特性。
初始化:使用标准正态分布来初始化这些参数是一种常见的做法,因为它有助于打破对称性,使得神经网络中的各个神经元能够学习不同的特征,从而加速训练过程。
题目区分度与猜测函数:
self.a = nn.Embedding(self.item_num, 1) # 区分度参数a self.c = nn.Embedding(self.item_num, 1) # 猜测概率参数c
特征融合层
self.fc1 = nn.Linear(pp_dim + latent_dim, latent_dim) # 用户特征融合 self.fc2 = nn.Linear(pp_dim + latent_dim, latent_dim) # 题目特征融合
2. 前向传播逻辑解析
(1) 用户能力生成
def forward(self, user, item):# 步骤1:扩展提示向量以匹配范围数量prompt_theta_repeated = self.prompt_theta.repeat(len(self.s_ranges), 1)# 示例:若s_ranges有2个范围,则每个用户的提示向量复制2次# 步骤2:拼接所有范围的用户能力(theta_concatenated)theta_concatenated = torch.cat([theta for theta in self.theta], dim=0)# 结果形状:(num_ranges * user_num, latent_dim)# 步骤3:将提示向量与用户能力拼接new_theta = torch.cat([prompt_theta_repeated, theta_concatenated], dim=1)# 形状:(num_ranges * user_num, pp_dim + latent_dim)# 步骤4:根据输入的user索引选择对应的融合特征new_theta = torch.index_select(new_theta, dim=0, index=user)# 假设user是批量用户的索引,形状:(batch_size,)# 步骤5:通过全连接层生成最终用户能力new_theta = self.fc1(new_theta) # 输出形状:(batch_size, latent_dim)new_theta = torch.squeeze(new_theta, dim=-1)
设计意图:
-
分范围能力建模:每个范围(如知识点)的用户能力独立存储,增强模型对领域内细粒度差异的捕捉。
-
提示向量融合:通过
prompt_theta引入迁移学习能力,为后续目标域适配提供接口。
# 步骤1:生成题目范围特征(temp_vectors)
temp_vectors = torch.cat([vector.repeat(r[1] - r[0] + 1, 1) for vector, r in zip(self.s_exer_vectors, self.s_ranges)
], dim=0)
# 示例:若s_ranges为[(0,99), (100,199)],则每个范围向量重复100次# 步骤2:拼接范围特征与题目基础难度b
all_b = torch.cat([temp_vectors, self.b], dim=1) # 形状:(item_num, pp_dim + latent_dim)# 步骤3:根据输入的item索引选择题目特征
new_b = torch.index_select(all_b, dim=0, index=item) # 形状:(batch_size, pp_dim + latent_dim)# 步骤4:通过全连接层生成最终题目难度
new_b = self.fc2(new_b) # 形状:(batch_size, latent_dim)
new_b = torch.squeeze(new_b, dim=-1)
(3) 题目参数提取与约束
# 区分度参数a
new_a = self.a(item) # 形状:(batch_size, 1)
new_a = torch.squeeze(new_a, dim=-1) # 形状:(batch_size,)# 猜测概率参数c(通过sigmoid约束到[0,1])
new_c = torch.squeeze(self.c(item), dim=-1)
new_c = torch.sigmoid(new_c) # 形状:(batch_size,)# 参数范围约束
if self.value_range is not None:new_theta = self.value_range * (torch.sigmoid(new_theta) - 0.5) # [-value_range/2, value_range/2]new_b = self.value_range * (torch.sigmoid(new_b) - 0.5) # 同上
if self.a_range is not None:new_a = self.a_range * torch.sigmoid(new_a) # [0, a_range]
else:new_a = F.softplus(new_a) # 确保非负
前向传播流程图——
用户输入 → [分范围theta] → 拼接 → 融合提示向量 → fc1 → 标准化 → IRF
↗ (prompt_theta)
题目输入 → [范围嵌入 + 基础b] → fc2 → 标准化 → IRF
↘ [a, c] → 标准化 → IRF
就是在target训练的时候,只改变prompt向量部分,达到利用源目标数据的作用。
相关文章:
学习笔记-250222
论文: Learning Hierarchical Prompt with Structured Linguistic Knowledge for Vision-Language Models 主要研究llm在图像分类中的能力,当提示输入目标类别时,llm能够生成相关的描述以及相应的结构化关系。 1.首先利用llm从普通的描述中获…...
Unity游戏制作中的C#基础(1)界面操作基础
1.脚本有关注意事项 (1).进入项目之后,一般创建一个文件夹Scripts用来存放c#脚本; (2).在Scripts中创建脚本,双击脚本,进入VS编辑器,有如下结构: start&#…...
为什么要将PDF转换为CSV?CSV是Excel吗?
在企业和数据管理的日常工作中,PDF文件和CSV文件承担着各自的任务。PDF通常用于传输和展示静态的文档,而CSV因其简洁、易操作的特性,广泛应用于数据存储和交换。如果需要从PDF中提取、分析或处理数据,转换为CSV格式可能是一个高效…...
Android KMP初探
Android KMP初探 前言: 最近线上听了Kotlin官网举行的KMP会议,感觉听神奇的,于是就把官方demo下载下来尝试了一下,下载插件和所需要的依赖都用了很久,但是发现里面的代码很少,于是尝试自己手写了一下&…...
网络安全之Web后端PHP
目录 一、PHP基础语法 1.PHP基础 (1)php的优点 (2)PhpStorm的优点 2.PHP基本语法 3.PHP变量 4.PHP运算符 二、PHP流控与数组 1.php流程控制语句以及循环 (1)if 语句 (2)if…...
Redis——用户签到BitMap,UV统计
目录 BitMap 使用场景 1. 用户签到系统 2. 用户行为标记 3. 布隆过滤器(Bloom Filter) BitMap介绍 Redis中的使用 Redis功能示例 添加: 获取: 批量获取: java中实现 统计本月连续签到次数 UV统计 UV 统计…...
pycharm技巧--鼠标滚轮放大或缩小 Pycharm 字体大小
1、鼠标滚轮调整字体 设置 Ctrl 鼠标滚轮调整字体大小 备注: 第一个是活动窗口,即缩放当前窗口 第二个是所有编辑器窗口,即缩放所有窗口的字体 2、插件 汉化包: Chinese Simplified 包...
数字信任的底层逻辑:密码学核心技术与现实应用
安全和密码学 --The Missing Semester of Your CS Education 目录 熵与密码强度密码散列函数密钥体系 3.1 对称加密 3.2 非对称加密信任模型对比典型应用案例安全实践建议扩展练习杂项 密码学是构建数字信任的基石。 本文浅析密码学在现实工具中的应用,涵盖 1&…...
全面理解-深拷贝与浅拷贝
在 C 中,深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 是两种完全不同的对象拷贝策略,主要区别在于对指针和动态分配资源的处理方式。正确理解二者的区别是避免内存泄漏、悬空指针和程序崩溃的关键。 一、核…...
Redis分布式锁故障处理:当Redis不可用时的应对策略
Redis分布式锁故障处理:当Redis不可用时的应对策略 在分布式系统中,Redis因其高性能和丰富的特性常被用于实现分布式锁。但当加锁过程中Redis服务不可用时,系统将面临严重挑战。本文将深入探讨这一问题,并提供多维度解决方案。 目…...
WordPress平台如何接入Deepseek,有效提升网站流量
深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…...
ROS ur10机械臂添加140夹爪全流程记录
ROS ur10机械臂添加140夹爪 系统版本:Ubuntu20.04 Ros版本:noetic Moveit版本:moveit-noetic 参考博客: ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例…...
16、Python面试题解析:python中的浅拷贝和深拷贝
在 Python 中,浅拷贝(Shallow Copy) 和 深拷贝(Deep Copy) 是处理对象复制的两种重要机制,它们的区别主要体现在对嵌套对象的处理方式上。以下是详细解析: 1. 浅拷贝(Shallow Copy&a…...
第十九天 HarmonyOS的文件操作和本地存储
一、前言:为什么需要掌握文件操作与本地存储? 在移动应用开发中,文件操作和本地存储是每个开发者都必须掌握的核心技能。无论是保存用户配置、缓存网络数据,还是处理图片/视频等多媒体文件,都需要通过文件系统进行操作…...
VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合
VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合 flyfish VLM的传统训练依赖于监督学习(直接拟合问答对),而规则奖励函数通常用于强化学习(通过试错和奖励反馈优化策略…...
FFMPEG编码容错处理解决办法之途径----升级库文件
在qt开发环境下接收网络数据,调用ffmpeg解码播放视频,出现闪屏现象,具体现象可以使用操作系统自带的ffplay播放器播放原始视频流可复现;而使用操作系统自带的mpv播放器播放视频则不会出现闪屏;闪屏时会报Could not fin…...
uniapp h5端和app端 使用 turn.js
前提:添加页后,添加页与当前页会重叠在一起,不知道为什么,没有找到解决办法 1.h5端 <template><view class"container"><view id"flipbook"><view class"page page1">Page 1</view><view class"page pag…...
【idea问题排查技巧】
以下是针对 IDEA 中 日志打标(动态标记) 和 全链路追踪 功能的分步详解,结合具体场景和操作截图说明,帮助快速掌握实战技巧。 一、动态日志打标:不修改代码输出关键信息 1. 断点日志打印(非侵入式打标) 场景:在调试时,需要临时查看某个变量的值,但不想修改代码添加…...
【入门音视频】音视频基础知识
🌈前言🌈 这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...
JMeter性能问题
性能测试中TPS上不去的几种原因 性能测试中TPS上不去的几种原因_tps一直上不去-CSDN博客 网络带宽 连接池 垃圾回收机制 压测脚本 通信连接机制 数据库配置 硬件资源 压测机 业务逻辑 系统架构 CPU过高什么原因 性能问题分析-CPU偏高 - 西瓜汁拌面 - 博客园 US C…...
软考高级信息系统项目管理师笔记-第2章信息技术发展
第2章 信息技术发展 2.1 信息技术及其发展 1、按表现形态的不同,信息技术可分为硬技术(物化技术)与软技术(非物化技术)。前者指各种信息设备及其功 能,如传感器、服务器、智能手机、通信卫星、笔记本电脑。后者指有关信息获取与处理的各种知识、方法 与技能,如语言文字…...
大语言模型(LLM)提示词(Prompt)高阶撰写指南
——结构化思维与工程化实践 一、LLM提示词设计的核心逻辑 1. 本质认知 LLM是「超强模式识别器概率生成器」,提示词的本质是构建数据分布约束,通过语义信号引导模型激活特定知识路径。优秀提示词需实现: 精准性:消除歧义&#…...
捷 C++ 课程学习笔记:STL 应用与复杂度分析
一、STL 六大组件 STL(Standard Template Library)是 C 标准库的重要组成部分,提供了通用的模板类和函数,用于实现常用的数据结构和算法。STL 主要包括以下六大组件: 容器(Containers)…...
【python】提取word\pdf格式内容到txt文件
一、使用pdfminer提取 import os import re from pdfminer.high_level import extract_text import docx2txt import jiebadef read_pdf(file_path):"""读取 PDF 文件内容:param file_path: PDF 文件路径:return: 文件内容文本"""try:text ext…...
数据结构☞泛型
一.基础定义与应用方向 1.定义: 一般的类和方法,只能使用具体的类型 : 要么是基本类型,要么是自定义的类。如果要编写可以 应用于多种类型 的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《 Java 编程思想》对泛型的介…...
MFC学习笔记-1
一、编辑框和按钮 //.h文件private:CString str;//给窗口类加了一个变量(定义一个成员变量),关联到IDC_EDIT1中(要在实现中关联,源文件文件夹中)CString str2;//接收button2,和IDC_EDIT2绑定 p…...
html中rel、href、src、url的区别
1.url url(统一资源定位符):是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。 2.href href:Hypertext Reference的缩写。 意思是超文本引用。 3.rel rel:relatio…...
hot100-二叉树
二叉树 二叉树递归 相当于这个的顺序来回调换 class Solution {private List<Integer> res new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {if(root null)return res;inorderTraversal(root.left);res.add(root.val);inorde…...
嵌入式项目:STM32刷卡指纹智能门禁系统
本文详细介绍基于STM32的刷卡指纹智能门禁系统。 获取资料/指导答疑/技术交流/选题/帮助,请点链接: https://gitee.com/zengzhaorong/share_contact/blob/master/stm32.txt 1 系统功能 1.1 功能概述 本系统由STM32硬件端(下位机)…...
短剧小程序系统源码
短剧小程序系统源码 今天我要向大家介绍的是最新作品——短剧小程序系统源码。这不仅仅是一款简单的播放工具,它背后蕴含的强大功能能够帮助你的短剧业务实现质的飞跃! 为什么说这款源码很厉害? 首先,在当今竞争激烈的市场环境…...
