我有一个包含正面和负面内容的数据集。假设这是一个垃圾邮件项目。
我需要构建一个模型,能够将内容分类为正面/负面。因此,我在进行监督学习任务,因为我有标记的数据集。所以,最佳选择必须是使用SVC模型。
到目前为止,一切顺利。
现在,复杂的部分来了。
我想使用Keras的LSTM模型来解决同样的任务。所以我的问题是:
这仍然是监督学习还是无监督学习,因为我使用词嵌入来完成这个任务,并且参考了这个帖子,这里说词嵌入用于无监督任务:https://www.quora.com/Is-deep-learning-supervised-unsupervised-or-something-else
帖子中提到:
深度学习可以是无监督的:词嵌入、图像编码成更低或更高维度等。
那么,现在这是无监督还是监督学习(因为我的数据集是标记的)?
深度学习是像无监督和监督学习一样的另一种技术吗?这些主题之间的关系如何?深度学习使用监督和无监督技术吗?还是必须在深度学习、无监督和监督学习之间做出选择?
这太令人困惑了!请帮帮我!特别是关于LSTM任务。我需要知道这是监督学习(因为有标记的数据集)还是无监督学习(因为使用了词嵌入)。
提前感谢大家!
回答:
给您一个鼓励的话,我记得自己刚开始学习这个领域时,感觉完全一样;极度沮丧。这确实会变得更容易!
词嵌入是通过无监督学习创建的。然而,您可以在监督项目中使用训练好的嵌入层,就像您正在做的那样。换句话说,您的项目是监督学习项目,其中一个层使用了通过无监督训练技术获得的权重。
进一步了解嵌入层、它们是如何制作的,以及它们对监督学习的作用可能会有所帮助。我将尝试用非技术的方式解释,这样您在学习具体细节和繁琐之处之前可以对概念有所了解。
假设您从一个庞大的语料库开始。您统计每个词的出现频率,并用它来对每个词进行排名(或者使用其他公式,随便)。这是一种文本“标记化”的方法。重点是将词转换成数字。显然,这很重要,因为我们打算用它们进行数学运算,但这也带来了一些问题:数值关系不一定携带关于词的意义关系的信息。为了改善这一点,您可以训练一个小型网络,如下所示:从您的语料库中取出片段并创建skipgrams,并教网络在应用权重和余弦相似度度量后,如果词在附近出现,输出应为1
(或其他标准),如果没有,则为0
(或者,如果您喜欢,可以是-1
)。在整个语料库过程中,倾向于一起使用的词会一起移动,反之亦然。目标是创建一种地图(或者说是一种模拟,如果您愿意的话)来表示标记(即词)的相对意义;换句话说,目标是创建一个表示词的相对意义的n维表示。然后,训练后,嵌入可以保存下来用于像您这样的项目。您的嵌入层将查找保存的嵌入中的标记并获取其输出,即该词在嵌入空间中的向量表示;它们在我们理论地图中的坐标。这被认为是“无监督”的,因为您不需要明确提供用于比较的真实标签;在这种情况下,它是从训练样本中程序化生成的(即从输入生成的skipgrams)。另一个例子是如果预期输出与输入相同(如在自编码器中),这也是无监督的(如前所述),因为您不需要提供预期输出;如果您提供一个输入,它自动具有预期输出。
如果所有这些都让您感到困惑,那么请暂停并考虑您自己的想法:如果我问您一个与“a big pizza”中的“big”意思相同的词,您会参考您对“big”在所指短语中的理解,并尽可能找出最接近的词:也许是“large”。嵌入是一种制作地图的方式,其中“big”和“large”在大多数轴上(即在大多数维度上)被定位得很近。
因此,当您加载一些预训练的嵌入时,您只是将一些权重加载到您的层中。有时人们用零初始化层,有时人们使用随机正态或高斯分布,有时人们使用特定值(例如加载保存的网络,或加载嵌入);都是一样的。如果您继续进行监督训练,那么您就是在做这件事:进行监督训练。在嵌入层之后,您处理的信息不是任意词,而是这些:相对意义。如果这不是很酷,我不知道什么是酷!我发现考虑数据在网络中传递时代表什么是有帮助的。