TensorFlow之文本分类算法-4

时间:2022-12-05 21:53:22

1 前言

2 收集数据

3 探索数据

4 选择模型

5 准备数据

6 模型-构建训练评估

机器学习主要包括模型构建、模型训练、模型评估,在选择模型章节中已经对如何根据S/W的比率进行模型的选择,其包括n-gram模型或者序列模型,本章节内容主要描述如何运行分类算法进行模型训练,这也是机器学习的核心内容,主要是使用TensorFlow的tf.keras技术框架实现。

Keras技术框架实现机器学习的主要流程是如何组装神经网络的分层,也就是,其对应数据处理的分块,该过程类似于堆积积木或者堆积砖块,使用这些分层可以指定输入数据的转换顺序,该机器学习模型适用的场景是输入单一文本以及输出单一分类,数据处理过程是一个分层的线性栈,使用Keras的序列模型(Sequential model)实现。

TensorFlow之文本分类算法-4

如上所示,Input layer是输入层,Hidden layer是中间层,输入层与中间层实现的数据处理的逻辑是由所选择的n-gram模型或者序列模型确定,而Output layer是输出层,主要是输出分类。

构建输出层

输出层是最后一层,也就是对中间层的输出进行分类,包括两种分类法,二元分类法以及多元分类法,二元分类法对应的类别数是2,多元分类法对应的类别数大于2。

二元分类

例如,二元分类法,只输出一个可能的分数,如果输出是0.2,表示当前输入的数据样本的20%置信度(可能性)属于类别1,数据样本的80%置信度(可能性)属于类别2,总分数等于1。二元分类法使用sigmoid函数作为激活函数。二元分类的演进过程如下所示:

TensorFlow之文本分类算法-4

如上所示,从左到右,输出层使用激活函数sigmoid计算分数并输出0.14,根据置信度0.14进行二元分类,输出分数小于0.5,则数据样本是属于类别2。该函数是在神经网络机器学习中用于学习特征与标签之间的非线性关系,被称之为激活函数,比较常用的激活函数包括ReLU或者Sigmoid,其描述如下所示:

ReLU

该函数的图形总是大于一条直线,如下图所示,其中包括两条直线:

TensorFlow之文本分类算法-4

Sigmoid

该函数的图形如下所示,对输入的数据集合实现输出值收敛,也被称之为收敛函数,如下所示,其输出的收敛范围在0与1之间:

TensorFlow之文本分类算法-4

在一个神经网络中,激活函数是用于操作一个神经元的所有输入的权重和,也就是,对于一个神经元的每个输入值,将输入值与其对应的权重计算后再取和,得出权重和,最后使用激活函数处理权重和,得出收敛值。

假设,存在以下的输入值:

TensorFlow之文本分类算法-4

其计算过程如下所示:

TensorFlow之文本分类算法-4

如上所示,将每个输入的值与其对应的权重值相乘再逐一相加,最后得出权重和。

假设,一个神经网络中使用sigmoid作为激活函数,则如上所示的例子中,对应的神经元使用sigmoid函数计算-0.2,其得出的近似值等于0.12。因此,该神经元将输出0.12到下一层神经网络中作为输入,其对应的演进过程如下所示:

TensorFlow之文本分类算法-4

多元分类

当分类数大于2,则属于多元分类,模型将为每个分类输出一个分数,所有分数之和等于1。例如,激活函数的输出结果是{0: 0.2, 1: 0.7, 2: 0.1},则表示当前输入的数据样本的20%置信度(可能性)是属于类别1,数据样本中的70%置信度(可能性)是属于类别2,数据样本的10%置信度(可能性)是属于类别3。多元分类的激活函数是softmax,多元分类的演进过程如下所示:

TensorFlow之文本分类算法-4

如上所示,从左到右,输出层使用激活函数softmax计算分数并输出多元分类每个类别的置信度(可能性),当前数据样本的1%置信度(可能性)是属于类别1,数据样本的14%置信度(可能性)是属于类别2,数据样本的85%置信度(可能性)是属于类别3。

Softmax

该函数应用于多元分类中计算并确定每个分类的可能性(置信度),每个分类的可能性的总和等于1。例如,如下所示是使用softmax函数计算输入所得输出的可能性,其总和等于1:

TensorFlow之文本分类算法-4

如上所示,使用softmax函数计算输入的数据样本,确定图片的内容是属于哪一类的动物,数据样本的85%置信度(可能性)是属于狗,数据样本的13%置信度(可能性)是属于猫,数据样本的2%置信度(可能性)是属于马。

Softmax函数对应的方程式如下所示:

TensorFlow之文本分类算法-4

如上所示,方程式的参数说明如下所示:

  • 等式左边是输出的向量集合,向量集合中的每个输出元素表示每个输入元素的可能性,向量集合中所有元素之和等于1,输出元素的总数等于输入元素的总数。

  • z是输入的向量集合,每个输入元素对应一个浮点类型的数值。

  • K是输入向量集合的总数(也是输出向量集合的总数)。

假设,输入的向量集合如下所示:

TensorFlow之文本分类算法-4

使用输入的向量集合计算softmax方程式的分母如下所示:

TensorFlow之文本分类算法-4

使用输入的向量集合计算softmax方程式对应的每个输入元素的可能性如下所示:

TensorFlow之文本分类算法-4

由以上的计算输出向量集合如下所示:

TensorFlow之文本分类算法-4

如上所示,输出向量集合的和等于1。

如下所示,代码逻辑表示根据分类的个数返回合适的层单元数量、以及合适的激活函数:

TensorFlow之文本分类算法-4

根据前面章节的描述,文本分类算法主要包括两类,包括n-gram模型、以及序列模型。当S/W的比率较小,则使用n-gram模型,当S/W的比率较大,则使用序列模型。当数据样本包括大量小而且稠密的数据集合,则序列模型的表现更佳,在序列模型的学习过程中,嵌入特征关系的向量集合,实践证明,序列模型在大量数据样本的学习过程中表现得比其他模型更加优秀。

构建n-gram模型

根据前面章节的描述,n-gram模型是独立地处理分词,与原文中的单词顺序不相关。简单的多层神经感知(逻辑回归)、梯度推进机、支持向量机,这些都属于n-gram类型,这些模型利用的信息与原文的顺序无关。

(未完待续)