system: [SYSTEM]

user: 3. 基于LSTM/GCN的文本特征提取方法 在学习网站中，学习者浏览的每一节课堂都是一门课程的一部分，课程之间存在复杂的先修关系，每门课程又可能同时属于多个教育计划。这就导致了课堂之间存在复杂的结构信息。利用这些结构信息对语义信息进行补充，可以更好地服务于学习网站的学习分析。本节描述了构建课堂嵌入的流程，图1展示了将原始文本数据转换为嵌入数据的流程，其中 ⊕ 符号表示将两个流程得到的向量连接在一起。 数据预处理模块将从在线学习平台获得的原始文本数据进行清洗、分词和标注等操作，数据预处理模块之后通过语义嵌入提取模块将文本数据转化为实数向量。随后是本方法的核心模块：结构嵌入提取(SEE)模块，如流程图所示，SEE模块有两种架构，每种架构对应一种课程内课堂可能的结构，分别为时序式和图式。提取器输出的内容作为该课堂的结构嵌入，为课堂嵌入提供更丰富的特征。最后，课堂嵌入的计算公式为 V SE i = Concatnate ( V DE i ， V SEE i ) (1) 其中，特定课堂i的课堂嵌入 V SE i 是一个实数向量，它由连接文本嵌入 V DE i 和结构嵌入 V SEE i 得到。函数 Concatnate ( ⋅ ， ⋅ ) 的作用是将传递给它的两个向量连接在一起。 V DE i 和 V SEE i 的值分别由文本嵌入模块和SEE模块获得。 图1. 基于LSTM/GCN的在线学习文本特征提取流程 3.1. 数据预处理模块 数据预处理模块主要分为以下步骤：在英文书写的过程中，为了强调或风格区分，文本中同一个单词因为大小写可能有多种形式，但往往它们表示的是同一个意思。为了消除冗余，将文本归一化至全小写；数据清洗阶段将噪音数据进行消除，例如本文实验中，消除内容为“exam”的课堂，因为它不存在有效的文本信息；分词阶段将文本分成无法再分拆的有意义的符号，对于英文文本进行分词往往指的是将每个句子分割成一系列的单词的过程；词性标注阶段给单词标上词类标签，比如名词、动词、形容词等，因为了解单词在句子中的用途有助于模型更好理解句子内容；去除停用词阶段从文本内删去“the”、“is”和“at”等对文本特征没有贡献作用的字词。 3.2. 语义嵌入提取模块 语义嵌入提取模块采用的是Doc2Vec的PV-DBOW架构。Doc2vec受Word2vec的启发，目标是将可变长度的文本映射为固定长度的向量表示形式，是一种无监督方法，PV-DBOW与Word2vec的Skip-Gram架构相似，它以段落ID和段落内句子的抽样作为输入，通过预测采样句子中的单词进行训练。训练结束后使用段落矩阵作为查找表来获取段落表示，本文提出的方法采用python的自然语言处理库gensim中对Doc2Vec的实现。 3.3. 结构嵌入提取模块 LSTM常用于时序数据的特征提取，而图神经网络(Graph Neural Networks， GNNs)常用于基于拓扑信息的特征提取。基于此，结构嵌入提取模块将两者作为基础组件，针对在线学习数据可能具备的结构特征设计了两种结构嵌入提取器，分别是上下文序列提取器和上下文图提取器。 3.3.1. 上下文序列提取器 学习者对一门课程的学习记录通常可以看成一段关于课堂的时序数据。基于此，上下文序列提取器(Context Sequence Extractor， CSE)将Doc2Vec得到的课堂的文本嵌入作为输入用于提供课堂之间的差异，并使用堆叠的Bi-LSTM层来捕捉课堂间的顺序信息。CSE的训练目标是将一个课堂序列准确地分类到其对应的课程中，此时中间层的输出融合了语义和结构信息，将其作为对应课堂的结构嵌入。 LSTM单元中根据上一个隐藏状态 h t − 1 计算当前隐藏状态 h t 的步骤可以描述为以下公式： f t = σ ( W f ⋅ [ h t − 1 ， x t ] + b f ) (2) i t = σ ( W i ⋅ [ h t − 1 ， x t ] + b i ) (3) C ˜ t = tanh ( W C ⋅ [ h t − 1 ， x t ] + b C ) (4) C t = f t ∗ C t − 1 + i t ∗ C ˜ t (5) o t = σ ( W o [ h t − 1 ， x t ] + b o ) (6) h t = o t ∗ tanh ( C t ) (7) 其中 W f 、 W i 、 W o 和 W c 分别表示遗忘门、输入门、输出门和LSTM单元的参数矩阵。 C t 是时间t和 t − 1 单元状态的加权和，sigmoid激活函数 σ ( ⋅ ) 将两者权重映射到0和1之间。再经由激活函数 tanh ( ⋅ ) 得到加权系数 o t ，最终得到隐藏状态 h t 。CSE架构基于Bi-LSTM单元，如图2所示。 图2. 上下文序列提取器CSE架构 其中 x → i 表示从Doc2Vec模型得到的第i个文本嵌入。在Bi-LSTM单元中，将课堂的文本嵌入序列从左到右输入LSTM_L得到 h → l t ，使用相反的顺序输入LSTM_R得到 h → l t ，通过将两者连接得到 h → t 。CSE以固定窗口大小的文本嵌入序列作为输入，通过两层Bi-LSTM及全连接层后将其分类为不同的课程。在分类目标的引导下，CSE的输出逐渐向类别的独热向量靠拢，而隐藏层则保留了课程之间的序列结构信息。因而将CSE的第一层输出的隐藏状态序列作为结构嵌入。由于滑动窗口之间有重叠，大部分课堂根据其在滑动窗口中的不同位置有多个隐藏状态，这里采用平均运算作为后处理来得到课堂i的唯一嵌入。如公式(8)中所述。 V SE i = Concatnate ( V Doc2Vec i ， Mean ( ∑ j = 0 n h LSTM i j ) ) (8) 其中j表示课堂i在滑动窗口中的位置，n表示滑动窗口的大小。将课堂i状态向量的平均与其文本嵌入相连接，得到课堂i的嵌入向量。 受到Word2Vec [ 7 ] 的启发，其中CBOW架构将锚词i周围的词作为输入，并将i作为预测目标。基于此本文提出了上下文序列回归提取器(Context Sequence Regression Extractor， CSRE)。CSRE将粒度从单词扩展到文本，并将预测目标从中心改为右侧。 网络整体结构与图2相同，但用回归层代替了分类层。其目标是根据前几节课堂的文本嵌入来拟合下一个课堂的文本嵌入。公式(9)显示了它的计算方式。 V SE i = { Concatenate ( V Doc2Vec i ， Mean ( ∑ j = 0 n h CSRE i j ) ) ，     当     i     不 是 课 程 的 最 后 一 节 课 堂 Concatenate ( V Doc2Vec i ， Mean ( ∑ j = 0 n − 1 V SE i ) ) ，     当     i     是 课 程 的 最 后 一 节 课 堂 (9) 其符号约定与CSE的公式一致。略有不同的是，每门课程最后一节课堂的结构嵌入无法通过模型的隐藏层获得，本文使用同一门课程中其他课堂的结构嵌入的平均值作为最后一节课堂的结构嵌入。 3.3.2. 上下文图提取器 当课堂i-1和i-2是课堂i的预备知识，但预备知识之间没有关联时，形成课堂i-1和i-2有一条指向i的弧的“V”型结构。为了利用这类隐藏的结构信息对课堂嵌入进行补充，本文引入了可以在非欧几里得空间进行卷积的GCN [ 4 ]，并基于此提出上下文图提取器(Context Graph-like Extractor， CGE)来获得课堂的结构嵌入。GCN层间的更新公式 [ 4 ] 如下所示。 H ( l + 1 ) = σ ( D ˜ − 1 2 A ˜ D ˜ − 1 2 H ( l ) W ( l ) ) (10) 其中 A ˜ 表示输入图的重归一化邻接矩阵，重归一化指的是图中的每个节点加上了一条指向自己的弧。 D ˜ 表示 A ˜ 的度矩阵。也可以将GCN的更新公式(10)改写成公式(11)，其中 x i 是输入图第i个节点的表示向量， N ( x i ) 是节点i邻居表示向量的集合。 h x i = f ( 1 | N ( x i ) | ∑ j ∈ N ( x i ) W x j + b ) ，   ∀ x i ∈ V (11) 公式(11)形式化地描述了更新的两个步骤：首先对每个节点i使用平均算子聚合其邻居节点线性变化后的特征，然后使用非线性激活函数 f ( ⋅ ) 得到下一层该节点的输入 h i 。基于GCN层，CGE_N架构如图3所示。 图3. 上下文图提取器CGE_N架构 CGE_N架构中图的构造基于当前课堂只和滑动窗口内先修于它的课堂相关，在图3中表示为滑动窗口内当前课堂之前的所有课堂都有一条指向当前课堂的弧线。CGE_N架构使用课堂的文本嵌入作为节点特征，在图中用 x → i 表示。CGE_N将上述图和节点特征作为输入，在训练过程中，图中的节点通过弧线进行通信，使节点的文本嵌入进行融合。读出层合并了所有节点的隐藏表示，以获得图级表示进行分类任务。CGE_N架构使用第二层GCN层的输出 h GCN 作为结构嵌入，并使用平均运算对因为滑动窗口重叠而带来的多份结构嵌入进行后处理，如式(12)所示。 V SE i = Concatnate ( V Doc2Vec i ， Mean ( ∑ j = 0 n h GCN i j ) ) (12) 在CGE_N架构中，权重在同一GCN层之间是共享的，即课堂图中节点对待每个邻居的方式是一样的。考虑滑动窗口中的最后一个课堂节点，所有节点都有一条指向它的弧线，使用相同的权重将距离不同的节点特征进行聚合是不自然的。Veličković [ 17 ] 提出的GAT层通过将注意力机制引入图卷积层来获取一定的灵活性。 通过将GCN网络层替换为GAT网络层，提出了基于GAT的CGE_T架构，在GAT层中课堂节点通过注意力机制获得对各个邻居权重值用于更新自身的隐藏表示。公式(13)用于构建课堂嵌入，其中 h GAT 代表第二个GAT层的输出。 V SE i = Concatnate ( V Doc2Vec i ， Mean ( ∑ j = 0 n h GAT i j ) ) (13)