摘要

      作为一种革命性的神经网络架构,Transformer改变了处理变长序列的方式,其独有的自注意力机制使其能够高效完成智能对话,文本分类,机器翻译等自然语言处理任务。本篇文章所讨论的研究内容是基于自定义的Transformer神经网络实例完成一个文本分类任务——英文文本的文风分类任务,旨在解决传统文风分类任务方法在多语义和复杂语境理解的局限性。

      研究过程涵盖如下部分:首先介绍对给定数据集的预处理的流程;接着,我们将阐述如何针对英文文本的文风分类任务设计一个Transformer神经网络实例;最后,我们将展示AI模型的训练过程,对完成训练的模型的相关性能进行评估,并对模型进行相关优化。整个实验过程基于pytorch的python编程环境。

引言

Transformer模型是一种用于处理序列数据的强大神经网络架构,特别是在自然语言处理(NLP)领域取得了显著的效果。Transformer的基本组成部分包括如下几个关键层:

  1. 输入层(Input Layer):
  • 词嵌入(Word Embeddings): 将词汇转换为稠密的向量表示。
  • 位置编码(Positional Encoding): 添加位置信息,因为Transformer没有内在的顺序概念,位置编码确保模型能够理解词序。
  1. Encoder(编码器):
  • Multi-Head Attention: 允许模型在多个表示子空间中并行执行自我注意力机制。
  • Position-wise Feed-Forward Networks (FFNs): 提供非线性变换,通常包括两个全连接层,中间可能有激活函数。
  • Layer Normalization: 在每一层的残差连接前后应用,帮助加速收敛和避免梯度消失问题。
  • Dropout: 用于正则化,减少过拟合。
  1. Decoder(解码器):
  • Masked Multi-Head Attention: 类似于编码器中的Multi-Head Attention,但是加入了mask以防止当前位置访问未来位置的信息。
  • Multi-Head Attention with Encoder Outputs: 这允许解码器关注编码器的输出,这是序列到序列任务的关键部分。
  • Position-wise Feed-Forward Networks (FFNs): 提供非线性变换,通常包括两个全连接层,中间可能有激活函数。
  • Layer Normalization: 在每一层的残差连接前后应用,帮助加速收敛和避免梯度消失问题。
  • Dropout: 用于正则化,减少过拟合。
  1. Output Layer(输出层):
  • Linear Layer(线性层): 将解码器的输出映射到目标词汇表的大小。
  • Softmax Layer: 应用softmax函数,将线性层的输出转换为概率分布,表示每个词汇被选中的概率。

下图是Transformer模型的架构图:

【木棉花】基于Pytorch的文本分类AI模型_数据集

对不同的英文文本进行文风分类这一应用具有多领域和多方面的价值。文风分类不仅有助于识别和理解不同文化背景下的语言使用习惯,促进跨文化的理解和交流,而且在AI文本生成领域,文风分类技术可以用于控制模型生成文本的风格,使得生成的文本更加贴近特定的受众或情境,如新闻报道、小说创作或广告文案。因为在传统方法的基础上实现的文风识别功能效果欠佳,而Transformer神经网络在处理文本这类变长序列时具有非常好的效果,所以我们可以利用Transformer神经网络训练一个合格的模型,用于完成文本分类任务。

方法

1.数据预处理

      本次研究所用到的数据集en_test来自ModelScope社区的数据集仓库,数据集的格式是csv文件,此数据集下载网址如下:

 http://www.modelscope.cn/datasets/iic/nlp_style_classification_enlish_testset

      此数据集总共约有7400条英文文本样本,而样本的标签分为如下四个类型:

文风标签