使用词嵌入进行文本分类

Text classification using word embeddings

我有一个正面和负面内容的数据集。因此,让我们假设这是一个垃圾邮件项目。

我需要建立一个模型,可以对pos/neg中的内容进行分类。所以我正在做一个监督学习任务,因为我有一个标记的数据集。因此,最好的选择必须是使用 SVC 模型。

到目前为止一切顺利。

现在复杂的部分来了。

我想用 Keras LSTM 模型解决同样的任务。所以我的问题:

它还是有监督的还是无监督的,因为我在这个任务中使用了word embeddings,这里参考这个post,word embedding用于无监督任务:https://www.quora.com/Is-deep-learning-supervised-unsupervised-or-something-else

上面写着:

Deep learning can be Unsupervised : Word embedding, image encoding into lower or higher dimensional etc.

那么 - 它现在是无监督的还是有监督的(因为我的数据集被标记了)?

深度学习是无监督学习和监督学习等另一种技术吗?或者这些主题之间的关系如何?深度学习是否使用监督和非监督技术?还是必须在深度学习、无监督学习和监督学习之间做出选择?

太混乱了!请帮忙!特别是对于 LSTM 任务。我需要知道它在哪里受到监督(因为标记数据集)或不受监督(因为使用词嵌入)

提前谢谢大家!

词嵌入本身是一项无监督任务。这并不意味着您不能将它用作更大的监督任务的一部分,例如文本分类(将其更多地视为数据预处理)。因为,对于你更大的问题,你正在使用标签,你的问题是一个监督问题,并且你不使用这些标签来进行词嵌入子任务这一事实不会改变这一点。

作为一个非常普遍的规则,性质或问题 (supervised/unsupervised) 是由 整个 端到端问题决定的,而不是由它的子问题决定的任务。

用数字特征 classification/regression 的更简单设置进行类比可能会有所帮助:在这里我们经常 缩放 输入数字特征;缩放也是一种无监督技术(不需要标签),但由于它仅用于预处理,因此不会影响更大问题的性质。

在词嵌入的情况下,任务本身是用 ML 模型解决的(而不是相对简单的算术运算,如缩放)这一事实并没有改变论点:它只是一个无监督的组件监督分类管道。

一句鼓励的话,我记得当时的感觉完全一样;当我开始学习这个领域时,非常沮丧。它真的变得更容易了!

词嵌入是通过无监督学习创建的。但是,您可以像您正在做的那样,在受监督的投影中 使用经过训练的嵌入层。换句话说,您的项目是监督学习之一,其中一层正在使用通过无监督训练技术获得的权重。

这可能有助于进一步了解嵌入层、它们的制作方式以及它们可以为监督学习做些什么。我将尝试以非技术性的方式进行解释,以便您在了解细节和迂腐之前先了解一下概念。
假设您从一个巨大的语料库开始。您计算每个单词的出现频率,并使用它来相对于其他单词进行排名(或使用其他公式,无论如何)。这是一个text的方法 "tokenization." 重点是把文字变成数字。显然这很重要,因为我们要用它们做数学运算,但这会造成一些困难:数字关系不一定包含有关 含义[=28= 关系的任何信息]的话。为了改善这个问题,你可以像这样训练一个小网络:从你的语料库中取出块并创建 skipgrams, and teach the network that, after the application of weights and a measure of cosine similarity,如果单词彼此靠近(或其他一些标准),则产生的输出应该是 1 , 或 0 (或者 -1,如果你愿意的话)当它们彼此不靠近时。在语料库的过程中,倾向于一起使用的词会一起移动,反之亦然。 objective 是创建一种映射(或模拟,如果你愿意的话)相对意义 的标记(这是单词);换句话说,objective 是创建单词相对含义的 n 维表示。然后,在训练之后,可以保存嵌入以供在像您这样的项目中使用。然后,您的嵌入层将在保存的嵌入中查找标记并获取其输出,即该词在嵌入 space 中的向量表示;它们在我们的理论地图中的坐标。这被认为是 "unsupervised" 因为您不必明确提供基本事实进行比较;在这种情况下,它是从训练样本中按程序生成的(即从任何输入生成的 skipgrams)。另一个例子是,如果预期输出与输入相同(如在自动编码器中),这是无监督的(如前所述),因为您不必提供预期输出;如果您提供输入,它会自动具有预期的输出。
如果所有这些都令人困惑,那么就停下来考虑一下你自己的想法:如果我问你一个与短语 "a big pizza," 中的 "big" 意思相同的词,你会咨询你对意思的理解"big" 与指示的短语有关,并尽可能接近它:也许单词 "large." 嵌入是制作地图的一种方式,其中 "big" 和 "large"沿大多数轴(即在大多数维度上)的位置非常靠近。
因此,当您加载一些预训练的嵌入时,您只是将一些权重加载到其中一个层中。有时人们用零初始化层,有时人们使用随机正态分布或高斯分布,有时人们使用特定值(例如加载保存的网络或加载嵌入);全部都是一样。如果你继续进行监督训练,那么你就是在做:进行监督训练。在嵌入层之后,您正在使用的信息不是任意词,而是这些:相对含义。如果那不只是整洁,我不知道那是什么!我发现考虑您的数据在通过网络时代表什么是很有帮助的。

  1. 您的项目是一项监督学习任务,因为您希望算法从您提供的标记数据中学习。

  2. 深度学习是基于人工神经网络的方法的一部分,可用于监督和非监督方法。

  3. 词嵌入是词映射:每个词都表示为一个向量。您使用词嵌入将词转换为向量,以便为神经网络提供数据。

  4. 反过来,词嵌入通常是由浅层神经网络采用无监督方法生成的。