论文阅读(5)——LLM-EPSP
Sparking words:
In-context learning(情景学习ICL)
通过ICL技术,大模型可以直接利用提示中包含的少量标注实例进行学习。与需要昂贵参数更新且可能导致已知任务性能下降的微调方法不同,ICL在推理阶段直接利用提示中的标注实例生成文本,完全绕过了传统训练流程。这种方法允许相同的语言模型跨领域、任务和数据集应用,只需修改提示词,而不需要调整模型的参数。
但是貌似后面被CoT替代了?
LLM-EPSP:大型语言模型赋能的学生表现早期预测
主要内容及框架
文章指出,尽管现有的数据挖掘和机器学习方法在EPSP方面取得了成功,但仍存在以下三大挑战:
冷启动问题(Cold-start problem):当处理新学生或数据有限的课程时,模型难以做出准确预测。
特征关系探索有限(Limited exploration of feature relationships):现有模型主要关注单个特征的影响,而忽略了特征之间的内在相互作用和依赖性。
泛化能力差(Poor generalization):为特定课程或环境设计的模型难以直接应用于其他教育环境。
为了解决这些问题,作者提出了一种名为LLM-EPSP(Large Language Model Empowered Early Prediction of Student Performance)的新模型。该模型利用大型语言模型(LLM)作为信息集成器,通过其强大的语言理解和推理能力,来更好地利用学生数据进行预测。
LLM-EPSP框架是一个三步走pipeline,其核心思想是利用LLM的自然语言处理能力来建模结构化数据。具体步骤如下:
特征选择:首先,从原始学生数据中提取出关键的预测特征。(文章采用随机森林算法)
特征语义化:这一步是关键。它使用预定义的提示模板,将结构化的学生数据(如年龄、学习时间等)转换为LLM可以理解的自然语言文本。
特征交互建模:这是该方法的核心创新点。它通过以下方式捕捉特征之间的复杂关系:
语义分组:将语义化后的特征分组为三个教育上可解释的因素:个人、家庭和外部。
思维链(CoT)提示:使用CoT提示鼓励LLM进行分步推理。LLM首先分析每个因素内部的关系,然后评估因素间的依赖关系,最后进行综合推理以得出预测结果。

使用的数据集
OULAD包含 2014 年至 2015 年 9 个月内收集的 32,593 名学生的日志数据。它包括全面的学生信息,例如人口统计数据、捕获学生与 Moodle 平台互动的点击流数据以及与评估相关的详细信息,例如作业提交和分数。该数据集由七门课程(称为模块)组成,每门课程都由唯一的代码标识,并在全年的不同时间间隔通过 Moodle 平台提供。这些课程的持续时间各不相同,最长从 259 天到 264 天不等。课程名称及其在一年中不同时间提供的课程组合产生了 20 个独特的课程设置。此外,该数据集将学生分为四个表现组:优异、及格、不及格和退学。表1总结了人口特征的描述,如下

(实际上,这个人口特征的描述来源于studentInfo学生信息表)
该数据集中所包含的可以被构建为序列数据的字段包含:
1.虚拟学习环境(VLE)的点击流数据 StudentVle.csv
date:这是时间序列的核心,代表了从课程开始以来经过的天数。sum_click:在特定日期,学生在VLE中的总点击次数。activity_type:学生互动的具体活动类型,如“homepage”(主页)、“resource”(资源)、“forumng”(论坛)、“quiz”(测验)等。这些活动在不同时间点的发生,构成了行为序列。
2.评估数据 Assessment.csv
虽然评估事件的发生是离散的,但它们按时间顺序排列,可以被视为一个序列。
date_submitted:学生提交作业、测验或考试的日期。score:学生在每次评估中获得的分数。
3.课程注册和尝试历史StudentInfo.csv
某些字段虽然不是连续的时间序列,但记录了学生的历史行为,可以被视为序列数据的一部分。
num_of_prev_attempts:学生之前尝试该模块的次数。这本质上是一个过去的行为记录,构成了学生在该课程中的“历史序列”。
UCI的数据调查了两所葡萄牙学校中学教育的学生成绩。 它包括通过学校报告和问卷收集的与学生成绩、人口统计、社会因素和学校相关的特征。 提供了两个数据集,重点关注两个不同学科的表现:数学(mat)和葡萄牙语(or)。 数据集用于二元和五层分类以及回归任务。 表2提供了人口特征的描述,如下

文章的任务
分类任务,利用早期学生信息,来预测学生是否能通过期末考试,结果是一个二进制变量。
【思考】
这篇文章将LLM引入到一个预测任务。传统的机器学习模型需要通过特征工程或特定的算法(如决策树、梯度提升)来自动或半自动地发现特征之间的相互作用。但是这篇文章中,LLM实现了特征融合的方式是语义化的,基于自然语言的推理,这与传统的数值融合方法截然不同。
具体实现过程如下:
1.特征的语义化(Feature Semantization)
首先,模型没有将学生数据(如年龄、学习时间)作为独立的数值或分类变量输入LLM,而是将它们转换成了自然语言句子。这个过程被称为“特征语义化”。
输入:
age_band=18-21,studytime=2 to 5 hours语义化后:
这名学生的年龄段在18-21岁之间,每周学习时间为2到5小时。
这一步将原本割裂的、结构化的数据,转化为LLM擅长处理的、具有上下文和语义的文本。
2. 特征的语义分组(Semantic Grouping)
在语义化之后,文章并没有将所有句子一股脑地丢给LLM,而是进行了分组。它将特征分成了三个教育上可解释的类别:
个人因素:学生的年龄、学习时间、失败次数等。
家庭因素:父母的教育水平、家庭支持等。
外部因素:与朋友外出的频率、学校课程等。
这种分组为LLM的后续推理提供了一个结构化的“思维框架”,让它知道如何从宏观上组织信息。
3. 基于思维链(CoT)的特征交互建模(Feature Interaction Modeling)
这是LLM实现融合的核心步骤。模型利用一个精心设计的、基于思维链(Chain-of-Thought, CoT)的多步提示,指导LLM进行逻辑推理。这个过程不是简单地告诉LLM“这是特征,请预测”,而是要求LLM像一个教育专家一样进行分析。
具体来说,LLM被要求分步完成以下推理:
因素内分析:首先,LLM被提示去分析每个分组内部的特征关系。例如,在“个人因素”中,LLM可能会推断:“该学生每周学习时间不长,且有多次不及格记录,这可能表明他的学习习惯存在问题,或者对学习的投入不足。”
因素间依赖:接着,LLM被提示去分析不同分组之间的相互影响。例如,它可能会将“家庭因素”与“个人因素”联系起来,推理出:“尽管父母教育水平较高(家庭因素),但学生的学习时间依然较少(个人因素),这可能意味着家庭支持并未有效地转化为学习投入,或者存在其他分散注意力的外部因素。”
综合推理:最后,LLM将所有因素内和因素间的分析结果进行综合,形成一个连贯的推理图(Reasoning Graph),然后基于这个完整的分析链条,做出最终的预测:“通过”或“失败”。
现在存在一个问题,这篇文章所使用的数据是非序列数据,利用LLM处理EPSP的时间序列数据仍然是一个挑战。如果要结合大模型与序列建模,可以考虑:
利用LLM理解静态信息:对学生的背景、家庭情况等非序列特征进行语义化和融合,形成一个丰富的初始状态。
利用序列模型捕捉动态行为:将LLM处理后的初始状态,与学生随时间变化的在线学习行为、作业提交序列等动态数据结合起来,用LSTM或Transformer等模型进行建模。
又一次思考
既然原文可以通过特征语义化将非序列数据构建为LLM可以理解的自然语言文本并作为prompt输入给LLM,那么如果拓展到序列数据,直接使用原文的特征语义化方法会存在哪些问题?
后来结合ai我找到了这个问题的答案。
对于序列数据而言,其核心在于事件的顺序、时间间隔以及随时间变化的模式,如果直接套用原文的方法,会存在一些问题:
1.丧失时间顺序和上下文关联性:
如果简单地将每个序列中的事件(例如,每天的点击量、每次作业的提交)独立地语义化成一个个句子,LLM可能会难以理解这些事件之间的时间先后关系和因果联系。例如,“第一周点击量高”和“第二周点击量低”这两个信息,如果只是作为独立的句子输入,LLM很难自动理解它们之间是连续的、并且可能存在某种趋势或变化。
2.Prompt长度爆炸和上下文窗口限制:
序列数据通常包含大量的时间步。例如,一个学生在一个学期内每天的VLE点击日志,如果每一天的点击量都语义化成一个句子,那么一个学期(假设100天)就会产生100个句子。如果序列更长或事件更频繁,Prompt的长度会迅速增长。
3.信息冗余和噪声:
序列数据中并非每个离散的事件都具有同等的重要性。简单地将所有事件都语义化,可能会引入大量的冗余信息和噪声,稀释了关键信息。
4.难以捕捉高层次的动态模式:
序列数据往往蕴含着高层次的动态模式,例如“参与度逐渐下降的趋势”、“在某个知识点上反复出错的模式”、“考试前突击学习的行为”。直接的特征语义化只能描述单个事件,而难以概括和提取这些复杂的、跨时间步的模式。
5.缺乏显式的时序关系编码:
现有的Prompt设计(如角色、任务、特征定义、学生信息)没有包含显式的时序关系编码机制。它没有告诉LLM“这是T时刻的事件,这是T-1时刻的事件,它们之间间隔了X天”。
所以将LLM应用于序列数据需要更复杂的策略:
序列特征工程: 在将数据输入LLM之前,先通过传统的序列模型(如RNN、LSTM、Transformer)或专门的特征工程方法,从原始序列中提取出摘要性、高层次的序列特征(例如,过去7天的平均点击量、最近一次作业提交与截止日期的距离、学习中断时长等)。
混合模型架构: 将LLM与专门处理序列数据的模型(如LSTM、GRU、Transformer编码器)结合。序列模型负责捕捉时序依赖性并生成序列的嵌入表示,然后将这些嵌入作为LLM的输入,让LLM进行更高层次的推理和融合。
结构化Prompt设计: 设计能够显式编码时间信息和事件顺序的Prompt模板,例如使用时间戳、事件序列描述等。
滑动窗口/分段处理: 对于超长序列,可以采用滑动窗口或分段处理的方式,每次只将序列的一部分输入LLM,并结合历史状态进行推理。
补充——传统特征工程方法
统计特征
名称:均值、中位数、标准差、最大值、最小值、求和、计数、变化率、趋势等。
方法:在一个时间窗口(例如,过去7天、过去30天)内计算学生行为的统计量。
频率特征:
名称:周期性、事件发生频率等
方法:分析事件发生的频率或周期性模式。
时间差特征:
名称:间隔时间、持续时间等。
方法:计算事件之间的时间间隔。
窗口特征:
名称:滑动窗口统计量、累积统计量。
方法:在一个固定大小的滑动窗口内计算上述统计特征,或者计算从序列开始到当前时间点的累积统计量。
序列模式特征:
名称: 频繁序列模式、行为路径。
主要方法: 使用序列挖掘算法(如AprioriAll, GSP)发现数据中重复出现的行为序列模式。
示例: 学生在放弃课程前经常出现的特定行为路径(例如:先停止提交作业,然后停止登录VLE)。
领域特定特征(Domain-Specific Features)
名称: 与特定应用领域相关的定制特征。
主要方法: 根据对教育领域的理解,设计能够反映学生学习状态和风险的特征。
示例: 学生在某个难点知识点上的错误率变化、求助频率、与同伴协作的程度。
再一次思考
当我兴致勃勃地准备去看深度学习中Transformer架构时,我突然想起来一个关键的问题——Transformer已经成为当下LLM的主流架构,那我结合Transformer和LLM岂不是多此一举?
但是再仔细想想,又觉得不对,因为结合序列数据最核心的问题在于——将原始、细粒度的时间序列数据有效且高效地转换成LLM能够充分利用的Prompt,并让LLM理解其中的复杂时间模式。
因此不论是序列模型还是传统特征工程,都应该朝着解决最核心的问题努力。
尝试将Transformer与LLM结合
Transformer编码器输出的“每个输入元素的上下文感知嵌入向量序列”包含了序列中每个词元(token)在考虑了其上下文后的数值表示。那么,如何利用这个序列并将其与LLM-EPSP中强调的“语义化”方法结合呢?主要有两种策略:
策略一:直接作为LLM的输入(嵌入层面融合)
这种方法不涉及将嵌入向量转换为自然语言文本,而是直接在数值层面将序列模型的输出与LLM进行集成。
序列池化(Pooling):
方法: 将Transformer编码器输出的整个嵌入向量序列(例如,每个时间步的d维向量)通过某种池化操作(如平均池化、最大池化、或使用一个特殊的
[CLS]token的嵌入)聚合成一个固定长度的向量。如何利用: 这个固定长度的向量可以被视为整个序列的摘要表示。它可以:
直接拼接到LLM的输入嵌入中(如果LLM支持多模态或多源嵌入)。
作为LLM的“额外上下文”:通过一个线性层或其他适配器将其维度调整后,作为LLM处理Prompt时的一个额外输入。
优点: 保留了嵌入的丰富语义信息,避免了信息在文本化过程中的潜在损失。
缺点: LLM需要具备处理非文本嵌入的能力,这可能需要LLM进行微调或其架构本身支持多模态输入。
交叉注意力(Cross-Attention):
方法: 如果LLM的架构允许(例如,某些多模态LLM或带有编码器-解码器结构的LLM),LLM的解码器部分可以通过交叉注意力机制直接“关注”Transformer编码器输出的整个嵌入序列。
如何利用: LLM在生成响应时,可以根据需要从序列嵌入中提取相关信息。
优点: 理论上能最灵活地利用序列信息,因为LLM可以动态地决定关注序列的哪些部分。
缺点: 对LLM的架构要求较高,通常需要专门设计。
策略二:语义化后作为LLM的Prompt输入(文本层面融合)
这种方法更符合LLM-EPSP的原始设计理念,即将所有信息都转化为自然语言文本输入给LLM。但对于序列数据,不能简单地语义化每个单独的嵌入,而是需要语义化从序列中提取出的高层次信息、模式或摘要。
核心思想: 先从Transformer输出的嵌入序列中提取有意义的模式或统计量,然后再将这些模式用自然语言进行描述,作为Prompt的一部分。
如何进行语义化(针对序列数据):
序列模式提取与总结:
方法:
统计聚合: 对Transformer输出的嵌入序列进行统计分析。例如,可以计算整个序列嵌入的均值、最大值、最小值、标准差,或者在不同时间窗口内(如“前三周”、“中期”、“最后阶段”)进行聚合。
趋势分析: 使用线性回归或其他趋势检测算法,分析嵌入序列的变化趋势(例如,学习兴趣是否逐渐下降)。
异常检测: 识别序列中与常规模式显著偏离的事件(例如,突然停止所有学习活动)。
聚类/分类: 对序列嵌入进行聚类,识别出常见的行为模式类型(例如,“活跃型学习者”、“考试突击型学习者”),或者使用一个小型分类器来识别关键行为(如“完成重要里程碑”)。
关键事件提取: 识别序列中的重要转折点或关键事件,例如第一次提交作业、长时间未登录、某项评估分数显著下降等。
输出: 这些分析结果不再是原始的嵌入序列,而是关于序列的高层次、摘要性信息,例如:“过去四周的平均学习投入度下降了20%”,“在第三次测验后,该学生开始频繁访问辅导资源”,“该学生在期中考试后表现出明显的倦怠迹象”。
模式描述与Prompt构建:
如何语义化: 将上述提取出的高层次模式、趋势、统计量或关键事件,用清晰简洁的自然语言进行描述。
示例:
原始序列信息(通过Transformer处理后):学生在VLE上的点击量从第5周开始持续下降,且最近两周没有提交任何作业。
语义化文本:
该学生在第五周后在虚拟学习环境中的活跃度显著下降,并且在最近两周内没有提交任何作业。这可能表明其学习积极性降低或遇到了困难。原始序列信息:学生在数学模块的测验分数呈现U型曲线,前期高,中期低,后期又回升。
语义化文本:
该学生在数学模块的测验表现呈现先下降后回升的趋势,可能在学习中期遇到了挑战并随后克服。
Prompt集成: 将这些语义化后的序列信息文本,与非序列特征的语义化文本(如年龄、性别、家庭背景等)一起,构建成一个完整的Prompt,输入给LLM。
总结
这篇文章基于非序列数据,结合LLM提出了一种预测Early Prediction of Student Performance的框架。
如果要将该框架拓展到应用序列数据,要解决的最核心的问题在于将原始、细粒度的时间序列数据有效且高效地转换成LLM能够充分利用的Prompt,并让LLM理解其中的复杂时间模式。
Transformer框架是为处理序列数据(如自然语言、时间序列)而设计的,其核心思想完全抛弃了传统的循环和卷积结构,转而使用自注意力机制,通过自注意力机制并行处理序列中的所有元素。
使用一个预训练好的Transformer编码器来进行“特征提取”,并输出一个固定长度的向量(嵌入序列),该向量包含整个行为序列的摘要信息。它取代了传统的数据分析方法(如计算均值、标准差等),因为它能捕捉更复杂、更抽象的模式。
接下来利用嵌入向量进行“语义化”,连接Transformer和LLM,我们不再需要手动去描述“点击量下降”和“论坛提问增加”这些模式,而是利用 Transformer 编码器输出的嵌入向量来自动化这个过程。
我们可以设计一个Prompt,将Transformer编码器输出的嵌入向量的某些可解释维度或者该向量所代表的模式描述直接作为LLM的输入。
【如:学生行为摘要向量:[0.85, -0.23, 0.55,...] 。请基于此摘要向量,总结该学生的学习行为模式。】