文章目录
- 前言
- 一、传统机器学习方法
- 1、基于规则的模型
- 2、基于概率的模型
- 3、基于几何学的模型
- 4、基于统计的模型
- 二、深度学习方法
- 1、Feed-Forward Neural Networks(前馈神经网络)
- 2. RNN-Based Models(基于循环神经网络的模型)
- 3. CNN-Based Models (基于CNN的模型)
- 4. Capsule Neural Networks (胶囊网络)
- 5.Models with Attention Mechanism (注意力机制模型)
- 6.Memory-Augmented Networks (记忆增强网络)
- 7.Graph Neural Networks (图神经网络)
- 8.Siamese Neural Networks(S2Nets)
- 9.Hybrid Models 混合模型
- 10.Transformers and Pre-Trained Language Models 预训练语言模型
- 参考链接:
前言
文本分类方法模型主要分为两个大类,一类是传统的机器学习方法(具体可以再分为四类),另一类是新兴的深度学习模型。
由于每个算法其实都非常复杂,在此仅做简单介绍,建议需要使用时一定要再深入学习理解。
从 1961 到 2020 文本分类算法的发展历史
图上黄色代表浅层学习模型,绿色代表深层学习模型。
可以看到,从 1960 年代到 2010 年代,基于浅层学习的文本分类模型占主导地位。
自 2010 年代以来,文本分类已逐渐从浅层学习模型变为深层学习模型。
一、传统机器学习方法
1、基于规则的模型
基于规则的分类模型相对简单,易于实现。它在特定领域的分类往往能够取得较好的效果。
相对于其它分类模型来说,基于规则的分类模型的优点就是时间复杂度低、运算速度快。在基于规则的分类模型中,使用许多条规则来表述类别。
类别规则可以通过领域专家定义,也可以通过计算机学习获得。
决策树就是一种基于训练学习方法获取分类规则的常见分类模型,它建立对象属性与对象值之间的一种映射。通过构造决策树来对未标注文本进行分类判别。
常用的决策树方法包括 CART 算法、ID3、C4.5、CHAID 等。
决策树的构建过程一般是自上而下的,决策树可以是二叉树也可以是多叉树,剪枝的方法也有多种,但是具有一致目标,即对目标文本集进行最优分割。
2、基于概率的模型
朴素贝叶斯分类器(naive Bayes)是应用最为广泛且最简单常用的一种概率分类模型。
朴素贝叶斯法基于贝叶斯定理将联合概率转化为条件概率,然后利用特征条件独立假设简化条件概率的计算。
事实上,词组之间并不是相互独立的。虽然这是一种假设独立性,但是朴素贝叶斯还是能够在分类任务中表现出很好的分类效果和鲁棒性。
这一假设简化了联合概率的计算,它允许条件概率的乘积来表示联合概率
3、基于几何学的模型
使用向量空间模型表示文本,文本就被表示为一个多维的向量,那么它就是多维空间的一个点。
通过几何学原理构建一个超平面将不属于同一个类别的文本区分开。
最典型的基于几何学原理的分类器是"支持向量机"(SVM),其分类效果较为不错,几乎可以说是传统机器学习算法中最好的了。
- SVM 之所以能够取得比较好的分类效果,其优点在于:
- SVM 是一种针对有限样本条件下的分类算法,其目标是得到当前训练集下的最优解而不是样本数趋于无穷大时的最优值,该算法最终将问题转化成二次线性规划寻求最优解问题。从理论上来讲,它得到的是全局最优解,能够避免局部极值问题。
- 该方法将实际问题通过核函数技巧将线性不可分空间映射到高维线性可分空间,在高维空间中构造线性决策函数来实现原线性不可分空间的决策函数。这保证了 SVM 具有较好的推广能力,计算的复杂度不再取决于空间维数,而是取决于训练集样本数量。
- SVM 方法能够很好的处理稀疏数据,更好的捕捉了数据的内在特征,准确率较高。
- SVM 虽然有许多优点,但是固有的缺点是不可避免的。其缺点包括:
- SVM 算法时间和空间复杂度较高,随着训练样本数和类别的增加,分类时间和空间代价很高。
- 核函数空间变换会增加训练集空间的维数,使得 SVM 对时间和空间需求加大,又进一步降低了分类的效率。
- SVM 算法一般含有较多参数,并且参数随着训练样本的不同,呈现较大的差异,调整参数以获得最优分类效果相对困难。而且参数的不同对分类结果的显示出较大的差异性。
4、基于统计的模型
基于统计的机器学习方法已经成为自然语言研究领域里面的一个主流研究方法。事实上无论是朴素贝叶斯分类模型,还是支持向量机分类模型,也都采用了统计的方式。文本分类算法中一种最典型的基于统计的分类模型就是 k 近邻(k-Nearest Neighbor,kNN)模型,是比较好的文本分类算法之一。
kNN 分类模型的主要思想:通过给定一个未标注文档 d,分类系统在训练集中查找与它距离最接近的 k 篇相邻(相似或相同)标注文档,然后根据这 k 篇邻近文档的分类标注来确定文档 d 的类别。分类实现过程:
- 将训练集样本转化为向量空间模型表示形式并计算每一特征的权重
- 采用类似步骤 1 的方式转化未标注文档 d 并计算相应词组元素的权重 计算文档d 与训练集样本中每一样本的距离(或相似度);
- 找出与文档 d 距离最小(或相似度最大)的 篇训练集文本;
- 统计这个 k 篇训练集文本的类别属性,一般将文档 d 的类归为 k中最多的样本类别。
KNN 分类模型是一种“懒学习”算法,实质上它没有具体的训练学习过程。分类过程只是将未标注文本与每一篇训练集样本进行相似度计算, kNN 算法的时间和空间复杂度较高。因而随着训练集样本的增加,分类的存储资源消耗大,时间代价高。一般不适合处理训练样本较大的分类应用。
二、深度学习方法
与基于浅层学习的方法相比,深度学习方法避免了人工设计规则和特征,并自动提供文本挖掘的语义意义表示。
与浅层模型不同,深度学习通过学习一组直接将特征映射到输出的非线性转换,将特征工程集成到模型拟合过程中。目前的几乎所有研究都是基于 DNN。
1、Feed-Forward Neural Networks(前馈神经网络)
FFN在很多TC(文本分类)任务中实现了高精确度。它把文本看做成一袋单词。每个单词都用word2vec或者Glove等嵌入模型表示成词向量,然后将词向量取和或者平均来代表文本,然后通过一层或多层的前馈神经网络(例如:MLPs),然后使用分类器(例:逻辑回归,朴素贝叶斯,或SVM)对最后一层的表示进行分类。
例如:DAN网络, fastText,doc2vec等
DAN(Deep Average Network)框架如下:
fasttext
跟DAN一样,fasttext把文本视为一袋单词。但不同的是,fasttext使用一袋n-gram作为附加特征来捕获本地词序信息(在实践中非常有效)。
doc2vec
doc2vec可以使用无监督算法来学习可变长度文本片段的固定长度特征提取。其架构与CBOW迷行类似,唯一的区别是通过矩阵D映射到段落向量的附加段落标记。其架构图如下:
2. RNN-Based Models(基于循环神经网络的模型)
RNN-Based models 将文本看做一序列的单词,旨在为TC捕获单词依赖性和文本结构。但是传统的RNN模型表现并不好,还没有前馈网络表现好,于是出现了很多变体。其中以LSTM最流行,旨在更好的捕捉长期依赖关系。
这里简单提几个变种模型。
- Tree-LSTM模型
文本信息中存在语法结构的,Tree-LSTM能够学习到语法结构中丰富的语义表示,且能够学习到序列文本中的较长依赖的问题 - Multi-Timescale LSTM (MT-LSTM)模型
LSTM在处理较长文本时,效率很低,常见的做法是截断后再输入到LSTM中。MT-LSTM的出现使得该模型能够处理长文本,能够在不同的时间尺度上获取有价值的信息 - Topic RNN
能够整合语法依赖,也能够整合话题中的语义依赖
3. CNN-Based Models (基于CNN的模型)
前面提到的RNN模型被训练来识别跨时间的模式,而CNN学习跨空间的识别模式。RNN适用于需要理解远程语义的NLP任务,比如POS标记或者QA。而CNN更适用于局部检测和位置不变模式。在CNN中,预训练的词向量会比随机初始化好,并且采用maxpooling比其他的pooling好。
- DCNN(Dynamic CNN) 采用动态的k-max pooling,可以根据句子大小和卷积的层级进行动态选择k。
- VDCNN 在字符级别进行操作,并且仅使用小的卷积核池化操作。其性能随着深度的增加而提高
4. Capsule Neural Networks (胶囊网络)
CNN已经能够通过卷积、池化操作进行文本和图片的分类,为什么还要提出胶囊网络呢?主要是因为CNN模型丢失了信息的空间关联,也就是既是位置不正确,也能够正确识别,比如当图片中人的五官位置都不正确,CNN也能识别出是人脸。(池化操作的锅)
胶囊网络是一组神经元,它的活动向量代表一个特定类别的实体的不同属性,向量的长度代表实体存在的可能性,向量的方向表示实体的属性。
与选择一些信息而丢掉其他信息的最大池化不同,胶囊网络从底层的胶囊到高层的胶囊之间会有一个路径规划,寻找最佳的高层胶囊来作为低层胶囊的父辈。
- TC model based on a variant of CapsNets
- CapsNet-based model
5.Models with Attention Mechanism (注意力机制模型)
1)hierarchical attention network 分层注意力网络
模型有两个显著的特征:
- 1、是一个分层的结构来反应文档的层次结构。
- 2、在单词和句子级别应用了两个级别的注意力机制,使其能够在构建文档表示时以不同的方式关注重要和不重要的内容。
2)应用于cross-lingual sentiment classification
在每种语言中,都是用LSTM网路对文档进行建模,然后使用分层注意力机制实现分类。 其中句子级别的注意力模型学习文档中的哪一个句子对于判断情感更加重要。而词级别的注意力模型学习句子中的哪一句话更具有决定性。
3)directional self-attention network for RNN/CNN-free language understanding 只基于注意力机制没有任何的RNN/CNN结构。
4)LSTM model with inner-attention for NLI(自然语言推理)这个模型对用户两个阶段的过程来编码一个句子。
首先,在word-level Bi-LSTMs 基础上采用平均池化来生成第一个阶段的句子表示
然后,用注意力机制来代替平均池化在同一个句子上进行更好的表示。
将TC任务看成标签和单词匹配任务,每个标签与词向量用相同的方法嵌入表示。
6.Memory-Augmented Networks (记忆增强网络)
前面提到的注意力机制在编码过程中的隐藏状态可以看成模型内部存储器,
而记忆增强网络可以能够将神经网络与一种外部存储器结合在一起,模型可以读写到外部存储器。
Neural Semantic Encoder (NSE) 应用于TC和QA任务,其具有可变大小的编码内存,随着时间的推移而演变,并能够通过读写改操作来保证对输入序列的理解。
Dynamic Memory Network(DMN) 通过处理输入序列和问题来形成情景记忆,从而生成相关回答。在QA和POS方便取得了更好的进展。
7.Graph Neural Networks (图神经网络)
-
TextRank 最早的基于图的模型。节点表示各种类型的文本,比如单词、搭配、句子等。边来表示节点之间的不同类型的关系,例如词汇、语义关系、上下文重叠等。
-
Graph Neural Networks (GNNs) 通过扩展图数据的深度学习方法
-
Graph Convolutional Networks (GCNs) 是图上的CNN的一种变形,可以更有效方便的与其他的神经网络结合
-
graph-CNN,首先将文本转换成词图,然后使用图卷积操作对词图进行卷积。使用词图去表示文本更加能够捕捉到非连续和长距离语义。
-
对于一个大的文本集建立GNN是很耗时的,现在有些研究来降低模型复杂度或者改变训练策略。降低复杂度的模型有Simple Graph Convolution(SGC),它将卷积GNN相邻层的非线性操作去掉,将权重矩阵降为线性变换。在改变训练策略方便,模型有Text-level GNN,它将文本用滑动窗划分为不同的chunk,然后对这些chunk进行graph表示,以此来减少内存消耗。
8.Siamese Neural Networks(S2Nets)
S2Nets,也叫深度结构化语义模型(DSSMs)是用来进行文本匹配的。很多NLP任务,比如问题文本排序,抽取式问答的答案选择等都可以看做TC的特例。
正如图12所示,S2nets包含一对DNN,f1,f2分别将x,y映射到相同的低纬度语义空间,然后用cosine来计算x,y的相似度。
f1,f2可以是相同的结构,也可以是不同的结构。f1和f2能够根据x,y来选取不同的结构。
例如,为了计算图相似度,f1可以是一个深度卷积神经网络,f2可以是一个循环神经网络或者多层感知机。
因此这个模型可广泛应用到NLP任务中。
9.Hybrid Models 混合模型
很多混合模型结合LSTM和CNN来获取句子和文档的局部或者全局特征。
Convolutional LSTM (C-LSTM) network 利用CNN来获取高层次短语表示,然后将其喂给LSTM网络获得句子表示。
Dependency Sensitive CNN (DSCNN),主要用于文档模型,是一个分层模型,LSTM学习句子向量,然后喂给卷积层、最大池化层来生成文档表示
Hierarchical Deep Learning approach for Text classification (HDLTex) 用于文本分类
Stochastic Answer Network (SAN) 用于机器阅读理解
。。。。
10.Transformers and Pre-Trained Language Models 预训练语言模型
Transformer 采用自注意力机制解决了长距离依赖问题,还能够并行计算,这就使得在GPU上训练大模型和处理大数据称为了可能。
预训练模型分类(按照表示类型、模型架构、预训练任务、下游任务)
autoregressive and autoencoding PLMs. 自回归和自编码
自回归预训练模型:OpenGPT,
OpenGPT是一个单向模型,从左向右(或从右向左)逐个单词的预测文本序列,对每一个单词的预测取决于前一个单词。OpenGPT结构如下:
包含12层Transformer块,每层包含一个带掩码的多头注意力模块。每一层后边是一个层归一化和一个位置前馈层。
OpenGPT可以通过添加特定线性分类器和微调标签来适应TC等下游任务。
自编码:BERT
与OPenGPT通过之前的预测来预测当前词不同,BERT是使用MLM任务进行训练,该任务是随机掩蔽文本序列中的一些token,然后通过调节双向transformer获得的编码向量来独立恢复被掩蔽的token。
BERT的改进:
(1)RoBERTa 比BERT更加强大,可以使用更多的训练数据进行训练。
(2) ALBERT 降低了内存系消耗并提高了BERT的训练速度
(3)DistillBERT在预训练期间通过利用知识蒸馏,将BERT的大小减小到40%,保留BERT原有的99%的功能,并提高60%的速度。
(4) SpanBERT扩展了BERT以更好的进行表示和预测文本跨度。
(5)Electra 利用比MLM更加简单有效的预训练任务–eplaced token detection,它不是mask输入,而是从一个小型生成网络中抽取出一些合理的替代方案来代替一些token
(6)ERNIE结合了来自外部知识库的知识,例如命名体识别等进行预训练。
(7)ALUM引入了对抗性损失,提高了模型对新任务的泛化能力和对抗鲁棒性
自回归和自编码相结合的预训练语言模型:
- XLNet
- Unified language Model (UniLM)
参考链接:
1、https://blog.csdn.net/a1097304791/article/details/121472163
2、https://blog.csdn.net/onion___/article/details/123255293