毕业设计实战:基于CNN+图嵌入的智慧学习助手(从模型构建到个性化推荐全流程)

71 阅读10分钟

一、项目背景:为什么要做智慧学习助手?

传统教育存在“一刀切”的痛点——老师无法精准掌握每个学生的知识漏洞,作业和试题推荐缺乏针对性,导致学生“会的题反复练,不会的题一直错”。具体来说有两大问题:

  • 诊断不精准:仅靠考试分数判断学习情况,无法定位具体知识点漏洞(如学生数学考80分,可能是“整式的加减”没掌握,却被整体分数掩盖);
  • 推荐无个性:全班做相同的课后题,学优生觉得简单浪费时间,学困生觉得难跟不上,学习效率低。

我的毕业设计用“CNN+图嵌入”解决这些问题:通过图嵌入挖掘知识点间的关联(如“数轴”是“有理数加减法”的前置知识),结合CNN的特征提取能力构建深度知识追踪模型,既能精准诊断学生的知识漏洞,又能推荐个性化试题——在武汉某中学七年级数学数据上,模型准确率达91.32%,比传统方法提升4.8%,真正实现“因材施教”。

二、核心技术栈:从算法到教育场景落地

整个系统围绕“数据处理→知识图谱构建→模型训练→个性化推荐”展开,技术栈兼顾AI算法与教育需求,用Python实现,本科生可复现:

技术模块具体工具/算法核心作用
核心算法CNN+图嵌入+LSTM实现知识诊断:图嵌入处理知识点关联,CNN提取答题数据特征,LSTM追踪知识变化;
知识图谱构建Neo4j+Py2neo存储实体关系:将学生、试题、知识点作为节点,知识点间的“前置/包含”关系作为边;
数据处理Pandas+SPSS数据清洗与分析:处理答题数据(如将3分答对转为1,0分答错转为0),验证试卷信效度;
模型训练PyTorch+TensorFlow模型实现:用PyTorch构建图卷积神经网络(GCN)做图嵌入,TensorFlow实现知识追踪;
性能评估ACC/AUC/P-R曲线验证效果:用准确率(ACC)、ROC曲线下面积(AUC)衡量模型诊断精度;
数据集武汉某中学七年级数学数据真实场景验证:245名学生的10道选择题答题数据,含班级、姓名、知识点标签;
推荐逻辑知识追踪预测值+DINA模型个性化推荐:结合“答题正确概率”和“知识点掌握概率”,推荐巩固/补救试题;

三、项目全流程:5步实现智慧学习助手

3.1 第一步:数据准备——构建教育数据集

要训出适配教育场景的模型,首先需要高质量标注数据,分3步完成:

3.1.1 数据采集(真实教育数据)

  • 数据来源:武汉某中学七年级数学期中测试数据,共245名学生,每人10道选择题的答题记录;
  • 数据维度:包含班级、学生考号、姓名、题目号、题目得分、题目对应的知识点(如第4题对应“多项式”)、题目难度系数(如第1题难度0.97,偏简单);
  • 关键处理:将答题得分转换为二分类标签——“3分(答对)”转为1,“0分(答错/未答)”转为0,方便模型训练。

3.1.2 数据验证(确保数据有效性)

用SPSS分析试卷信效度,避免因试题质量差影响模型效果:

  • 信度:Cronbachα系数0.709(>0.7为高信度),说明试题一致性好,不会出现“同一学生做类似题得分差异大”的情况;
  • 效度:KMO系数0.803(>0.8为高效度),说明试题能有效检测学生的真实知识水平;
  • 难度与区分度:10道题中8道题区分度>0.4(如第4题区分度0.66),能有效区分学优生和学困生。

3.1.3 数据划分(训练/测试集)

按7:3比例划分数据,保证模型泛化性:

  • 训练集:70%(1715条答题记录),用于模型参数学习;
  • 测试集:30%(735条答题记录),用于验证模型效果。

3.2 第二步:知识图谱构建——挖掘知识点关联

学生的知识掌握受“前置知识点”影响(如没学好“数轴”,就很难学好“有理数加减法”),需用知识图谱存储这种关联:

3.2.1 实体与关系定义(3类节点+2类边)

  • 节点
    1. 学生节点:属性为“学生ID、姓名、班级”;
    2. 试题节点:属性为“题目ID、难度系数、区分度”;
    3. 知识点节点:属性为“知识点ID、名称”(如A1=有理数概念,A2=数轴);
  • 关系
    1. 学生-答题关系:如“学生001-答过-题目004”;
    2. 知识点-关联关系:如“数轴(A2)-前置-有理数加减法(A5)”“多项式(A10)-包含-单项式(A9)”。

3.2.2 图谱存储(Neo4j数据库)

用Py2neo库将实体和关系导入Neo4j,示例代码:

from py2neo import Graph, Node, Relationship

# 连接Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))
# 创建知识点节点
node_A2 = Node("Knowledge", id="A2", name="数轴")
node_A5 = Node("Knowledge", id="A5", name="有理数加减法")
# 创建前置关系
rel = Relationship(node_A2, "PREDECESSOR", node_A5)
# 提交到数据库
graph.create(node_A2)
graph.create(node_A5)
graph.create(rel)
  • 可视化效果:在Neo4j浏览器中可看到节点间的关联,如“数轴”指向“有理数加减法”,清晰呈现知识点依赖。

3.3 第三步:模型构建——CNN+图嵌入的知识追踪

传统知识追踪模型忽略知识点关联,改进后加入图嵌入,让模型能“理解”知识点间的依赖,分2个核心模块:

3.3.1 图嵌入模块(GCN实现)

用图卷积神经网络(GCN)将高维的知识图谱转换为低维稠密向量,保留知识点关联信息:

  • 输入:知识图谱的邻接矩阵(如A2和A5相连则为1,否则为0)和节点属性矩阵(如知识点名称的One-Hot编码);
  • 卷积过程:通过2层GCN提取特征,每层计算公式为:
    H^{(l+1)} = \hat{D}^{-1/2}\hat{A}\hat{D}^{-1/2}H^{(l)}W^{(l)}
    
    其中A^\hat{A}是加自环的邻接矩阵,D^\hat{D}A^\hat{A}的度矩阵,W(l)W^{(l)}是可学习参数;
  • 输出:每个知识点的128维嵌入向量(如“数轴”的向量为[0.21, 0.53, ..., 0.18]),向量越近说明知识点关联越紧密。

3.3.2 知识追踪模块(LSTM实现)

将图嵌入向量与学生答题数据结合,用LSTM追踪知识状态变化:

  • 输入:拼接“题目对应的知识点嵌入向量”和“答题标签(1/0)”,形成模型输入;
  • LSTM计算
    1. 遗忘门:决定保留多少之前的知识状态(如学生之前掌握了“数轴”,这部分知识是否保留);
    2. 输入门:更新新的知识状态(如学生答对“有理数加减法”题,更新该知识点的掌握状态);
    3. 输出门:输出当前知识状态向量,用于预测下一题的答对概率;
  • 输出:学生下一次答对某题的概率(如预测学生做“整式的加减”题,答对概率0.3,说明该知识点没掌握)。

3.4 第四步:个性化推荐——结合知识诊断结果

仅靠知识追踪的“答对概率”推荐试题不够精准,需结合认知诊断模型(DINA)定位具体知识点漏洞,分2步推荐:

3.4.1 知识点漏洞诊断(DINA模型)

DINA模型能计算学生对每个知识点的掌握概率,规则:

  • 掌握概率>0.5:视为“已掌握”,推荐同类试题巩固;
  • 掌握概率≤0.5:视为“未掌握”,推荐针对性补救试题。
  • 示例:某学生“整式的加减(A8)”掌握概率0.0014,“有理数乘方(A7)”掌握概率1.0,说明需重点补A8,巩固A7。

3.4.2 个性化试题筛选(取并集逻辑)

结合“知识追踪预测值”和“DINA掌握概率”,筛选试题:

  1. 巩固试题:知识追踪预测答对概率>0.5 + DINA知识点掌握概率>0.5,如推荐类似“有理数乘方”的题;
  2. 补救试题:知识追踪预测答对概率≤0.5 + DINA知识点掌握概率≤0.5,如推荐类似“整式的加减”的题;
  • 案例:武汉某中学7号学生,知识追踪预测第5、6题答对概率低,DINA显示A8没掌握,最终推荐3道A8相关试题作为补救,7道已掌握知识点试题作为巩固,精准匹配其学习需求。

3.5 第五步:实验验证——从指标到真实场景

用武汉某中学的真实数据验证模型效果,从3个维度评估:

3.5.1 核心指标对比(改进前后)

指标传统知识追踪模型改进模型(CNN+图嵌入)提升幅度
准确率(ACC)86.52%91.32%+4.8%
AUC值0.85340.9025+0.0491
知识点诊断准确率78.2%89.5%+11.3%

3.5.2 班级群体诊断效果

对7个班级的知识点掌握情况分析,发现:

  • 全年级共2个知识点未达标(掌握概率<0.5):“有理数概念(A1)”31.36%、“相反数(A3)”31.36%,需全年级重点补;
  • 班级差异明显:7班“数轴(A2)”掌握概率仅18.77%,而1班达98.1%,可针对性调整教学重点。

3.5.3 学生个体诊断效果

3名数学均考27分的学生,传统方法认为水平一致,但模型诊断出不同漏洞:

  • 6号学生:“有理数概念(A1)”未掌握;
  • 7号学生:“整式的加减(A8)”未掌握;
  • 47号学生:“有理数乘方(A7)”未掌握;
    根据漏洞推荐不同试题,实现“同分不同练”,真正个性化。

在这里插入图片描述 在这里插入图片描述

四、毕业设计复盘:踩过的坑与经验

4.1 那些踩过的坑

  1. 知识图谱关系错标:初期将“包含关系”和“前置关系”混淆(如误标“多项式包含数轴”),导致图嵌入向量偏差——解决:邀请数学老师参与标注,确保知识点关系正确;
  2. 数据不平衡:答题数据中“答对(1)”占80%,“答错(0)”仅20%,模型偏向预测“答对”——解决:用SMOTE算法生成虚拟答错样本,平衡数据分布;
  3. 模型过拟合:训练集准确率达95%,测试集仅82%——解决:在LSTM中加入Dropout(概率0.5),减少过拟合。

4.2 给学弟学妹的建议

  1. 结合教育场景:不要只关注算法精度,要考虑实际教学需求(如老师需要知道“学生哪没会”,而不只是“下次答对概率”);
  2. 小步验证:先验证知识图谱的合理性,再训练图嵌入模块,最后整合知识追踪,避免一步错全错;
  3. 答辩突出价值:评委更关注“项目能解决什么教育问题”,可展示“某学生用推荐试题后,知识点掌握概率从0.3升到0.8”的案例,比单纯讲公式更有说服力。

五、项目资源与后续扩展

5.1 项目核心资源

本项目包含完整代码(知识图谱构建、图嵌入、知识追踪模型)、武汉某中学答题数据集(脱敏处理)、Neo4j图谱文件,可复现实验结果。若需获取,可私信沟通,还能提供模型调参指导。

5.2 未来扩展方向

  1. 多学科适配:目前仅支持数学,后续可扩展到英语(如知识点“时态”“语法”)、物理(如“力学”“电学”);
  2. 实时追踪:对接在线答题系统,实时更新学生知识状态,动态调整推荐试题;
  3. 教师端可视化:开发Web界面,让老师直观看到全班学生的知识点漏洞,辅助制定教学计划。

如果本文对你的教育AI、个性化推荐相关毕业设计有帮助,欢迎点赞 + 收藏 + 关注,后续会分享更多教育场景的AI落地案例!