上海站 | 高性能计算之GPU CUDA培训

4月13-15日

三天密集式学习  快速带你晋级
阅读全文
>

正文共1930个字,6张图,预计阅读时间5分钟。

原文:Word2Vec Tutorial - The Skip-Gram Model(http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/)

这篇教程主要讲述了Word2Vec中的skip gram模型,主要目的是避免普遍的浅层介绍和抽象观点,而是更加详细地探索Word2Vec。现在我们开始研究skip gram模型吧。

模型

skip-gram实际上是非常简单的神经网络模型形式;我认为任何所有微小的调整和变化都会使解释困扰。

我们进一步看,你可能在机器学习使用Word2Vec时用到下面一个技巧:使用一个隐藏层的简单神经网络来执行某个任务,但是接下来我们将不会在训练模型任务时使用那样的神经网络,而是仅仅是使用它来学习隐层神经网络的权重,在Word2Vec中指的是“词向量”。

另一个你可能在无监督学习中看到这种技巧,在无监督学习中,你训练一个自动编码器来将输入向量“压缩”到隐藏层,然后将它“解压”到的原始输出层。在训练完它后,你舍去输出层(解压步骤),只使用隐藏层的数据——这是一个不需要标记训练数据就能学习好图像特征的技巧。

“伪任务”

现在我们需要讨论一下这种“伪”任务,我们要构建并运行神经网络,然后我们间接地获得到的后面所需的词向量。

我们要训练skip-gram神经网络做以下任务:给出一个句子中间的某个单词(输入词),观察输入单词旁边的单词并随机选择一个。而我们训练的神经网络将告诉我们词汇表中每个单词被选作为“邻近单词”(nearby word)的概率。

这里所说的“邻近”其实与算法中的一个“窗口大小”(window size)参数有关。一般窗口大小为5,意思是中心词前后的5个单词(一共10个单词)。

输出概率与输入单词与每个词汇表单词邻近程度相关。举例来说,训练的神经网络的输入单词为“苏联”,那么像“联盟”和“俄罗斯”的输出概率将会远大于像“西瓜”和“袋鼠”不相关单词的概率。

我们将通过“喂养”在训练文档中找到的“单词对”(word pair)来训练神经网络。下面的例子显示了一些训练样本(单词对),句子为“The quick brown fox jumps over the lazy dog.”,窗口大小为2,蓝色突出显示的是输入单词。

神经网络将会从显示的单词对的次数学习统计信息。例如,神经网络可能会得到更多的训练样本(“苏联”,“联盟”)而不是(“苏联”,“北美野人”)。当模型训练结束时,当你将“苏联”作为输入时,然后输入为“联盟”或“俄罗斯”的概率比输出为“野人”的概率更高。

关于模型的更多细节

思考下,这些单词应该怎么被表示哪?

首先,我们不能够将单词作为一个字符串输入到神经网络,所以我们需要一种方式去表示单词。为了达到目的,我们从训练文档中创建一个单词词汇表,假如我们现在有一个具有10000个不同单词的词汇表。

我们将输入单词比如“蚂蚁”(ants)表示为一个one-hot向量,这种向量有10000个元素(词汇表中的每个单词都被表示为这种形式)。1 的位置对应该词在词典中的位置,其他全为0。

下面是我们神经网络的结构:

在隐藏层中没有使用激活函数,而在输出层使用了softmax,我们稍后在讨论这个原因。

隐藏层

假如,我们要学习有关词向量的300个特征(比如词性,语义等等),那么隐藏层结构将会表示为一个权重矩阵:10000行(代表着词汇表中的每个单词)和300列(代表每一个隐层的神经单元)。

300个特征是谷歌基于谷歌新闻数据集训练的模型(你可以在 这里下载)。特征的数量是一个你调试应用的“超参数”(尝试不同的值来产生更好的结果)。

下面是权重矩阵,矩阵的每一行代表了我们词汇表中的一个单词。

现在你可能反问自己,-“one hot向量几乎全部是0,那么它的作用是什么呢?”如果你将一个1×10000 one hot向量乘以10000×300的矩阵,那么就会有效地选中矩阵中与1对应的行。下面是一个例子:

这就意味着模型中的隐藏层其实运作为一个单词查找表,隐藏层的输出为输入单词的“词向量”。

输出层

隐藏层产生的1×300的词向量将会传送到输出层,这个输出层是一个softmax regressio分类器,其要领就是每一个输出神经单元将会产生一个介于0到1的输出,并且所有输出值的和为1。

每个输出单元有一个权重矩阵,然后与来自隐藏层的词向量相乘,然后对结果运用exp(x)函数。最后,为了将输入结果加起来为1,我们将结果除以10000个输出节点的所有之和。

下面是单词“car”输出单元的计算。

原文链接:https://www.jianshu.com/p/a1163174ebaf

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看


LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

Word2Vec教程-Skip-Gram模型相关推荐

  1. 《自然语言处理学习之路》02 词向量模型Word2Vec,CBOW,Skip Gram

    本文主要是学习参考莫烦老师的教学,对老师课程的学习,记忆笔记. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟. 零.吃水不忘挖井人 一.计算机如何实现对于词语的理解 1.1 万物数字化 1.2 ...

  2. Word2Vec教程 - Skip-Gram模型

    翻译原始链接: http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/ 这个教程包含 训练word2vec的 ...

  3. 黑马lavarel教程---5、模型操作(AR模式)

    黑马lavarel教程---5.模型操作(AR模式) 一.总结 一句话总结: AR: ActiveRecord :Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型 ...

  4. SAP UI5 初学者教程之七 - JSON 模型初探试读版

    Jerry 从 2014 年加入 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,曾经在 SAP 社区和"汪子熙"微信公众号上发表过多篇关于 SAP U ...

  5. 3D建模软件测试自学,收藏:5个自学3DMAX教程以及3D模型资源的网站

    收藏:5个自学3DMAX教程以及3D模型资源的网站 2019-03-11 19:05:43 10点赞 131收藏 0评论 话不多说就直接上网站了, 第一个:3D侠 这个有大量的模型和模型库,最重要的是 ...

  6. v_rep教程----构建纯净模型

    v_rep教程----构建纯净模型 构建可见形状: 建立关节 模型定义 本教程将指导您逐步建立一个纯净的模拟模型,一个机器人,或任何其他项目.得到一个美观.快速显示.快速仿真和稳定的仿真模型,这是一个 ...

  7. UML教程1:模型图的构成和功能说明

    文章目录 大纲 一.前言 1.1 UML概述 1.1.1 UML简介 1.1.2 UML模型图的构成 1.2 UML事物 1.2.1 构件事物 1.2.2 行为事物 1.2.3 分组事物 1.2.4 ...

  8. 仙剑人物MMD制作详细教程,包含模型提取和3DMAX简单操作

    [仙剑人物MMD制作详细教程,包含模型提取和3DMAX简单操作]_夏侯瑾轩吧_百度贴吧

  9. word2vec三种保存模型方式

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

最新文章

  1. 设计模式系列8--策略模式
  2. 页面缩放android浏览器,适用于所有移动浏览器的完整网页和禁用的缩放视口元标记...
  3. 有必要学python吗-学习Python有必要去培训机构吗?
  4. 大型网站的灵魂——性能
  5. Android持久化存储(3)SQLite数据库的使用
  6. 打不开内存卡,U盘提示未格式化的3种修复及数据恢复方法
  7. Struts2 ( 二 )
  8. 华兴数控g71外圆循环编程_数控车床加工时的复合循环指令G70,G71,G72,G73
  9. 用 【NEST】 在C#中操作ElasticSearch
  10. rn 0.57打包常见错误_linux管道命令介绍及常见用于场景
  11. Python中的split()和rsplit()的使用
  12. Scala进阶之路-进程控制之执行shell脚本
  13. mysql where range_MYSQL explain详解之range
  14. SPSS反向题处理(图文+数据集)【SPSS 011期】
  15. Log4j2 0day漏洞项目级紧急修复方法
  16. css属性table
  17. win10桌面右键一直转圈是什么原因
  18. oracle vm virtualbox 64位,virtualbox
  19. Python转换表情符号 emoji
  20. (深度学习快速入门)第三章第一节:多层感知器简介

热门文章

  1. java处理表单变量_Java自学之SpringMVC:接收表单数据
  2. 【script】python 使用json模块实现字符串与字典的相互转换
  3. java batch size_java – @BatchSize但在@ManyToOne案例中有很多往返
  4. python 3.7下载安装scrapy_win10上python3.7安装scrapy1.5.1
  5. html音乐播放器代码自动,html5 css3音乐播放器代码
  6. tiny core linux ftp,tinycore 的基本搭建,开机时间只需要1-3秒
  7. 跳转类内方法快捷键_想要快速编写代码,你得熟悉这些快捷键!
  8. Oracle相关练习
  9. c++-虚函数与多态
  10. ueditor上传图片尺寸过大导致显示难看的解决办法