词向量模型 Word2Vec

Skip-gram 模型是图嵌入模型 Random Walk 中要使用到的模型,因此先学习 Word2Vec

神经网络语言模型 NNLM

目标:根据给定的词序列,预测下一个会出现的词,如给定 “他”,“是”,“一个”,预测下一个会出现的词的概率

模型输入

设定语料库中词的个数是 v,对每个词进行 one-hot 编码,得到每个词对应的编码是 1×v维的;设需要得到的词向量为k 维,构建一个 v×k 维的矩阵 C

假设给定 x 个词,预测下一个出现的词,那么就先根据这 x 个词的独热编码乘以 C,得到对应的 x 个词向量

模型训练

  • 前向传播:对这 x 个词向量根据模型的w加权求和,并施加激活函数 tanh,再 Softmax 求得概率

  • 反向传播:更新矩阵 C、w

引入 Word2Vec

NNLM 模型的目的是为了预测下一个要出现的词,所得到的词向量只是副产品;而 Word2Vec 是以得到词向量为目的所训练的网络模型,根据上下文进行训练

  • CBOW:给定上下文预测这个词
  • Skip-gram:给定词预测上下文

设每个词对应的词向量矩阵 C,输入的多个词的 one-hot 向量拼接为 x,输入到隐藏层的权重矩阵为w,偏置bias为 b,则前向传播表示为为:softmax(w1(xC) + b)

因为这里目的是为了训练得到词向量,所以没有加激活函数(不需要非线性的变换、加快训练速度)

Skip-gram Pytorch实现

import torch
from torch import nnclass SkipGram(nn.Module):def __init__(self, vocabulary_size, embedding_size):super().__init__()self.vocabulary_size = vocabulary_sizeself.embedding_size = embedding_sizeself.embedding = nn.Embedding(self.vocabulary_size, self.embedding_size) self.output = nn.Linear(self.embedding_size, self.vocabulary_size) self.log_softmax = nn.LogSoftmax(dim=1)def forward(self, x):    x = self.embedding(x)  x = self.output(x)     log_ps = self.log_softmax(x)  return log_ps```

图嵌入前篇之词嵌入模型 Wrod2Vec相关推荐

  1. 词嵌入 网络嵌入_深入研究词嵌入以进行情感分析

    词嵌入 网络嵌入 When applying one-hot encoding to words, we end up with sparse (containing many zeros) vect ...

  2. 词嵌入应用_神经词嵌入的法律应用

    词嵌入应用 A fundamental issue with LegalTech is that words - the basic currency of all legal documentati ...

  3. 词嵌入word2vec、字词嵌入fastText、全局词嵌入Glove直接的联系与关系

    参考:http://www.pengfoo.com/post/machine-learning/2017-04-11 https://blog.csdn.net/u012879957/article/ ...

  4. 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  5. 吴恩达deeplearning.ai系列课程笔记+编程作业(14)序列模型(Sequence Models)-第二周 自然语言处理与词嵌入

    第五门课 序列模型(Sequence Models) 第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 文章目录 第五门课 ...

  6. [DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3词嵌入的特性 properties of word embedding Mikolov T, Yih W T, Zwe ...

  7. 【序列模型】第二课--自然语言处理与词嵌入

    今日感想: 窗外是瓢泼大雨.来到杭州后,最大的变化就是说话少了,白天上班部门里的IT男神们只顾打代码如飞,闭口不语:晚上回到出租屋,也只剩一个人的独处.要么看书看论文,要么写写博客和日志,要么弹弹古筝 ...

  8. 05.序列模型 W2.自然语言处理与词嵌入

    文章目录 1. 词汇表征 2. 使用词嵌入 3. 词嵌入的特性 4. 嵌入矩阵 5. 学习词嵌入 6. Word2Vec 7. 负采样 8. GloVe 词向量 9. 情感分类 10. 词嵌入除偏 作 ...

  9. 第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings)

    第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 文章目录 第二周 自然语言处理与词嵌入(Natural Language ...

最新文章

  1. mac 使用nvm安装node
  2. oracle数据库 pc6,使用logdump 查看ogg的CSN
  3. A value-added tax (VAT) IN UK
  4. C++ 如何一次在堆上申请4G的内存?如何设计一个类只能在堆或者栈上创建对象?
  5. python 模块和包
  6. Python中IOBase详解
  7. 蚂蚁金服安全应急响应中心上线
  8. C语言 扫雷游戏(代码+注释)
  9. armeabi、armeabi-v7a、arm64-v8a区别
  10. 根据经纬度计算两地之间的距离
  11. C陷阱与缺陷 个人阅读笔记
  12. python可以用于工业机器人编程_工业机器人四种编程技术
  13. Cox回归+Cox比例风险回归模型
  14. python猜拳游戏编程代码_Python实现猜拳小游戏
  15. 面试高频智力题 100层楼两个鸡蛋找出临界点的最多次数 (直接分析法,非动态规划思路)
  16. rfc3315_DHCPv6-RFC3315(中文).pdf
  17. 用C++实现QQ自动登陆器,仿佛开了外挂,秒杀各种神操作!
  18. 欢迎大家在这里提交CSDN博客程序出现的问题
  19. unity中导入的角色没有Avatar
  20. C语言二维数组范德蒙,2、编写一个程序,实现一个3×4矩阵转置。

热门文章

  1. Logstash 分布式日志管理
  2. tmux命令基本使用
  3. 数据结构之栈以及栈的基本操作
  4. [博客迁移]探索Windows Azure 监控和自动伸缩系列3 - 启用Azure监控扩展收集自定义监控数据...
  5. android_binder
  6. JavaScript获取当天开始时间和结束时间
  7. Fatal error: Uncaught Error: Call to undefined function gzinflate() in
  8. Beautiful Soup的用法(六):解析器的选择
  9. java recordset 记录数_ADO Recordset 对象
  10. 使用SDWebImage清除图片缓存