第 2.5 步:选择模型

此时,我们已经组建了数据集,并深入了解了数据的关键特性。接下来,根据我们在第 2 步中收集的指标,我们应该考虑应该使用哪种分类模型。这意味着要问一些问题,比如“我们该如何向需要数字输入的算法呈现文本数据?”(这称为数据预处理和矢量化)、“我们应该使用哪种模型?”、“我们应该为模型使用哪些配置参数?”等等。

得益于数十年的研究,我们能够使用大量数据预处理和模型配置选项。不过,有大量可行的选项可供使用会显著增加当前特定问题的复杂性和范围。鉴于最佳选项可能不那么明显,一种简单的解决方案是详尽地尝试每个可能的选项,通过直觉删减一些选项。不过,这将非常昂贵。

在本指南中,我们尝试显著简化选择文本分类模型的过程。对于给定的数据集,我们的目标是找到一种算法,它可以实现近乎最高的准确性,同时最大限度缩短训练所需的计算时间。我们使用 12 个数据集,针对不同类型的数据(尤其是情感分析和主题分类问题)运行了大量实验(约 45 万项),交替使用不同的数据预处理技术和不同的模型架构。这有助于我们确定影响最佳选择的数据集参数。

下面的模型选择算法和流程图是我们的实验摘要。如果您还没有理解其中使用的所有术语,也无需担心;本指南的以下部分将对其进行深入说明。

数据准备和模型构建算法

1. Calculate the number of samples/number of words per sample ratio.
2. If this ratio is less than 1500, tokenize the text as n-grams and use a
simple multi-layer perceptron (MLP) model to classify them (left branch in the
flowchart below):
  a. Split the samples into word n-grams; convert the n-grams into vectors.
  b. Score the importance of the vectors and then select the top 20K using the scores.
  c. Build an MLP model.
3. If the ratio is greater than 1500, tokenize the text as sequences and use a
   sepCNN model to classify them (right branch in the flowchart below):
  a. Split the samples into words; select the top 20K words based on their frequency.
  b. Convert the samples into word sequence vectors.
  c. If the original number of samples/number of words per sample ratio is less
     than 15K, using a fine-tuned pre-trained embedding with the sepCNN
     model will likely provide the best results.
4. Measure the model performance with different hyperparameter values to find
   the best model configuration for the dataset.

在下面的流程图中,黄色框表示数据和模型准备过程。灰色框和绿色框表示我们为每个进程考虑的选项。绿色方框表示每个进程的推荐选项。

您可以基于此流程图构建第一个实验,因为它能够以较低的计算费用为您提供良好的准确率。然后,您可以在后续迭代中继续改进初始模型。

文本分类流程图

图 5:文本分类流程图

此流程图回答了两个关键问题:

  1. 我们应该使用哪种学习算法或模型?

  2. 我们应该如何准备数据,以高效地了解文本和标签之间的关系?

第二个问题的答案取决于第一个问题的答案;我们对数据进行馈送至模型的方式取决于我们选择的模型。模型可以大致分为两类:使用词序信息(序列模型)的模型和仅以文本“袋子”(集)的形式查看文本的模型(n-gram 模型)。序列模型的类型包括卷积神经网络 (CNN)、循环神经网络 (RNN) 及其变体。n-gram 模型的类型包括逻辑回归简单的多层感知器(MLP 或全连接神经网络)、梯度提升树支持向量机

从我们的实验中,我们发现“样本数”(S) 与“每个样本的字数” (W) 之比与哪个模型表现良好相关。

当此比率的值较小 (<<1500) 时,接受 n-gram 作为输入(我们称之为选项 A)的小多层感知器会表现更好或至少与序列模型相同。MLP 易于定义和理解,与序列模型相比,它们的计算时间要短得多。当此比率的值很大 (>= 1500) 时,请使用序列模型(选项 B)。在接下来的步骤中,您可以跳到根据所选样本/每个样本的比率选择的模型类型对应的子部分(标记为 AB)。

在我们的 IMDb 审核数据集中,样本数/单字数的比率约为 144。这意味着我们将创建一个 MLP 模型。