热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入理解word2vec

深度学习Author:louwillFrom:深度学习笔记语言模型是自然语言处理的核心概念之一。word2vec是一种基于神经网络的语言模型࿰

 深度学习

Author:louwill

From:深度学习笔记

语言模型是自然语言处理的核心概念之一。word2vec是一种基于神经网络的语言模型,也是一种词汇表征方法。word2vec包括两种结构:skip-gram(跳字模型)和CBOW(连续词袋模型),但本质上都是一种词汇降维的操作。

word2vec

 我们将NLP的语言模型看作是一个监督学习问题:即给定上下文词,输出中间词,或者给定中间词,输出上下文词。基于输入和输出之间的映射便是语言模型。这样的一个语言模型的目的便是检查和放在一起是否符合自然语言法则,更通俗一点说就是和搁一起是不是人话。

所以,基于监督学习的思想,本文的主角——word2vec便是一种基于神经网络训练的自然语言模型。word2vec是谷歌于2013年提出的一种NLP分析工具,其特点就是将词汇进行向量化,这样我们就可以定量的分析和挖掘词汇之间的联系。因而word2vec也是我们上一讲讲到的词嵌入表征的一种,只不过这种向量化表征需要经过神经网络训练得到。

word2vec训练神经网络得到一个关于输入和输出之间的语言模型,我们的关注重点并不是说要把这个模型训练的有多好,而是要获取训练好的神经网络权重,这个权重就是我们要拿来对输入词汇的向量化表示。一旦我们拿到了训练语料所有词汇的词向量,接下来开展 NLP 研究工作就相对容易一些了。

word2vec包括两种模型。一种是给定上下文词,需要我们来预测中间目标词,这种模型叫做连续词袋模型(Continuous Bag-of-Words Model,以下简称CBOW),另一种是给定一个词语,我们根据这个词来预测它的上下文,这种模型叫做skip-gram模型,也有种翻译称之为“跳字”模型。

CBOW模型的应用场景是要根据上下文预测中间词,所以我们的输入便是上下文词,当然原始的单词是无法作为输入的,这里的输入仍然是每个词汇的one-hot向量,输出为给定词汇表中每个词作为目标词的概率。CBOW模型的结构如图1所示。

图1 CBOW模型

Skip-gram模型的应用场景是要根据中间词预测上下文词,所以我们的输入是任意单词,输出为给定词汇表中每个词作为上下文词的概率。Skip-gram模型的结构如图2所示。

图2 skip-gram模型

从CBOW和skip-gram模型的结构图可以看到,二者除了在输入输出上有所不同外,基本上没有太大区别。将CBOW的输入层换成输出层基本上就变成了 skip-gram 模型,二者可以理解为一种互为翻转的关系。

从监督学习的角度来说,word2vec本质上是一个基于神经网络的多分类问题,当输出词语非常多时,我们则需要一些像Hierarchical Softmax(分层Softmax)和Negative Sampling(负采样)之类的技巧来加速训练。但从自然语言处理的角度来说,word2vec关注的并不是神经网络模型本身,而是训练之后得到的词汇的向量化表征。这种表征使得最后的词向量维度要远远小于词汇表大小,所以word2vec从本质上来讲是一种降维操作。我们把数以万计的词汇从高维空间中降维到低维空间中,对NLP的下游任务大有裨益。 

word2vec的训练过程:以CBOW为例

因为skip-gram和CBOW的相似性,本小节仅以CBOW模型为例说明word2vec是如何训练得到词向量的。图3标出了CBOW模型要训练的参数,很明显我们要训练得到输入层到隐藏层的权重以及隐藏层到输出层的权重。

图3 CBOW的训练权重

CBOW模型训练的基本步骤包括:

  1. 将上下文词进行one-hot表征作为模型的输入,其中词汇表的维度为,上下文单词数量为;

  2. 然后将所有上下文词汇的one-hot向量分别乘以共享的输入权重矩阵;

  3. 将上一步得到的各个向量相加取平均作为隐藏层向量;

  4. 将隐藏层向量乘以共享的输出权重矩阵;

  5. 将计算得到的向量做softmax激活处理得到维的概率分布,取概率最大的索引作为预测的目标词。

下面以具体例子来说明。假设语料为I learn NLP everyday, 以I learn everyday作为上下文词,以NLP作为目标词。将上下文词和目标词都进行one-hot表征作为输入,如图4所示。

图4 CBOW训练过程1:输入one-hot表征

然后将one-hot表征分别乘以输入层权重矩阵,这个矩阵也叫嵌入矩阵,可以随机初始化生成。如图5所示。

图5 CBOW训练过程2:one-hot输入乘以嵌入矩阵

然后将得到的向量结果相加求平均作为隐藏层向量,如图6所示。

图6 CBOW训练过程3:求平均

然后将隐藏层向量乘以输出层权重矩阵,这个矩阵也是嵌入矩阵,可以初始化得到。得到输出向量,如图7所示。

图7 CBOW训练过程4:隐层向量乘以嵌入矩阵

最后对输出向量做Softmax激活处理得到实际输出,并将其与真实标签做比较,然后基于损失函数做梯度优化训练。

图8 CBOW训练过程5:Softmax激活输出

以上便是完整的CBOW模型计算过程,也是word2vec将词汇训练为词向量的基本方法之一。无论是Skip-gram模型还是CBOW模型,word2vec一般而言都能提供较高质量的词向量表达,图9是以50000个单词训练得到的128维的skip-gram词向量压缩到2维空间中的可视化展示。

图9 word2vec的可视化效果

可以看到,意思相近的词基本上被聚到了一起,也证明了word2vec是一种可靠的词向量表征方式。

往期精彩:

  CNN图像分类:从LeNet5到EfficientNet

【原创首发】机器学习公式推导与代码实现30讲.pdf

【原创首发】深度学习语义分割理论与实战指南.pdf

喜欢您就点个在看!



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
author-avatar
小白兔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有