【译】 Word2Vec教程 Part 1 - The Skip-Gram Model

最近在学习深度学习,大部分好的文章都是英文的,本人英文水平较差,读起来较吃力,只能边读边借助google翻译,特此将翻译后的文章保存下来,方便以后阅读,也方便大家参考阅读。

本教程将介绍Word2Vec的Skip-Gram Model神经网络体系结构。 本教程的目的是跳过关于Word2Vec的常见介绍性和抽象的见解,并深入了解更多的细节。 具体来说,我正在潜入Skip-Gram Model神经网络模型。

模型

skip-gram神经网络模型其最基本的形式实际上是惊人的简单;我认为这是所有的小调整和增强,开始混乱的解释。

让我们先从高层次了解我们要了解的。Word2Vec使用了一个你可能在机器学习中看到过的技巧。 我们将训练一个带有单个隐藏层的简单的神经网络来执行某个任务,但是实际上我们并没有将这个神经网络用于我们训练的任务。 相反,目标实际上只是为了学习隐藏层的权重 - 我们会看到这些权重实际上是我们试图学习的“单词向量”。

另一个你可能已经看到使用这个技巧的地方是在无监督的特征学习中,训练一个自动编码器来压缩隐藏层中的输入矢量,并将其解压缩回输出层的原始数据。 在训练完成后,你可以去掉输出层(解压缩步骤),然后使用隐藏层 - 这是学习好的图像特征而不用标记训练数据的一个技巧。

“假”任务

所以现在我们需要谈论这个“假”的任务,我们要建立神经网络来执行,回过头来,这个“假”任务间接地给我们提供那些真正的单词向量。

我们要训练神经网络做以下事情。 给定一个句子中的特定单词(输入单词),查看附近的单词并随机选择一个单词。 网络将告诉我们在我们所选择的“附近的词”词汇中的每个词的概率。

当我说“附近”时,算法实际上有一个“窗口大小”参数。 一个典型的窗口大小可能是5,即5个字落后5个字(总共10个)。

输出概率将与在我们的输入词附近找到每个词汇单词的可能性有关。 例如,如果你给训练的网络输入单词“苏联”,输出概率将比“西瓜”和“袋鼠”这样无关的单词高得多,比如“联盟”和“俄罗斯”。

我们将通过训练文档中输入的单词对,来训练神经网络。下面的例子显示了一些训练样本(单词对),我们将从“The quick brown fox jumps over the lazy dog.”这个句子中取出。我只是用一个2的小窗口来举例。 以蓝色突出显示的单词是输入单词。

网络将从每次配对显示的次数中学习统计。 因此,相比于(“苏联”,“萨斯克奇”)网络可能会获得更多的(“苏联”,“联盟”)训练样本。 训练结束后,如果将“苏联”一词作为输入,则“联盟”或“俄罗斯”的概率比“萨斯克奇”输出的概率高得多。

模型细节

那么这是如何表示的?

首先,你知道你不能把一个单词作为一个文本字符串输入到一个神经网络,所以我们需要一种方法来把这个单词表达给网络。 要做到这一点,我们首先要从培训文档中建立一个单词词汇表(假设我们有一个有10,000个独特单词的词汇表)。

我们将把一个像“蚂蚁”这样的输入词表示成一个one-hot 向量,这个向量将有10,000个元素(我们词汇表中的每个单词都有一个),我们将在与“蚂蚁”单词对应的位置放置一个“1”,在所有其他位置放置一个“0”。

网络的输出是一个单一的矢量(也有10,000个元素),对于我们的词汇表中的每一个单词,都包含随机选择的附近单词是该单词的概率。

这是我们的神经网络框架。

隐藏层不使用激活函数,输出层使用softmax, 我们稍后再看。

当在单词对上训练这个网络时,输入是代表输入词的单向矢量,训练输出也是代表输出词的单向矢量。 但是当你在输入字上评估训练好的网络时,输出矢量实际上是一个概率分布(即一堆浮点值,而不是一个热点矢量)。

隐藏层

对于我们的例子,我们要说,我们正在学习300个特征的单词向量。 所以隐藏层将由一个10,000行的权重矩阵(我们词汇表中的每个单词一个)和300列(每个隐藏的神经元一个)来表示。

300特征是Google在Google新闻数据集上训练的发布模型中使用的(可以从这里下载)。 特征的数量是一个“超参数”,你只需要你的应用程序调整它(即尝试不同的值,看看用什么值可以产生最好的结果)。

如果你看这个权重矩阵的行,这些实际上是我们的词向量!

因此,所有这些的最终目标实际上只是为了学习这个隐藏的层权重矩阵(当我们完成后,我们会去掉输出层!)

让我们回过头来看,通过我们要训练的这个模型的定义来工作。

现在,你可能会问,“那个one-hot向量几乎全是零...那有什么效果?”如果你用1×10,000 one-hot向量乘以一个10000×300的矩阵,它将有效地选择矩阵中对应于“1”的行。 这里有一个小例子,可以直观感受一下。

这意味着这个模型的隐藏层实际上只是作为一个查找表来操作。 隐藏层的输出只是输入单词的“单词向量”。

输出层

“蚂蚁”的1×300单词向量,被送到输出层。 输出层是一个softmax回归分类器。 这里有一个关于Softmax回归的深入教程,Softmax的要点是每个输出神经元(我们词汇表中的每个单词)将产生一个0到1之间的输出,并且所有这些输出值的总和将加起来等于1。

具体来说,每个输出神经元都有一个权向量,它与来自隐层的单词向量相乘,然后将函数exp(x)应用于结果。 最后,为了得到输出总和为1,我们将这个结果除以所有10,000个输出节点的结果之和。

下面是计算单词“car”的输出神经元输出的图示。

请注意,神经网络不知道输出词相对于输入词的偏移量。 在输入之前的单词与之后的单词之间没有学到不同的一组概率。 为了理解这个含义,假设在我们的训练语料库中,每个单词“York”的前面都有“New”这个词。 也就是说,至少根据训练数据,“纽约”附近有100%的可能性。 然而,如果我们把“ York”附近的10个字词随机选取其中的一个,那么“ New”的可能性不是100%。 你可能已经选择了附近的其他单词之一。

直观

好了,现在你准备好了了解这个网络了吗?

如果两个不同的单词具有非常相似的“上下文”(即那些单词可能出现在他们周围),那么我们的模型需要为这两个单词输出非常相似的结果。 网络为这两个单词输出相似的上下文预测的一种方式是是否单词向量是相似的。 所以,如果两个单词具有相似的上下文,那么我们的网络就有动机学习这两个单词的相似单词向量!

两个词有什么相似的背景? 我认为你可以期望像“ intelligent”和“smart”这样的同义词具有非常相似的背景。 或者,像“ engine”和“transmission”这样相关的词语也可能具有相似的语境。

这也可以为你处理干扰。网络可能会学习类似的单词向量的单词“ ant”和“ ants”,因为这些应该有类似的上下文。

接下来

您可能已经注意到skip-gram神经网络包含了大量的权重...对于我们的例子,有300个特征和10,000个单词的词汇,每个隐藏层和输出层都是3M权重! 在一个大的数据集上进行训练是很难的,所以word2vec作者引入了一些调整来使训练变得可行。 这些在本教程的第2部分中有介绍。

其他资源
我还创建了一篇文章,链接到其他word2vec教程,论文和实现的描述。

引用
McCormick, C. (2016, April 19). Word2Vec Tutorial - The Skip-Gram Model. Retrieved from http://www.mccormickml.com

相关文章

原文链接:http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容