图嵌入前篇之词嵌入模型 Wrod2Vec
词向量模型 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相关推荐
- 词嵌入 网络嵌入_深入研究词嵌入以进行情感分析
词嵌入 网络嵌入 When applying one-hot encoding to words, we end up with sparse (containing many zeros) vect ...
- 词嵌入应用_神经词嵌入的法律应用
词嵌入应用 A fundamental issue with LegalTech is that words - the basic currency of all legal documentati ...
- 词嵌入word2vec、字词嵌入fastText、全局词嵌入Glove直接的联系与关系
参考:http://www.pengfoo.com/post/machine-learning/2017-04-11 https://blog.csdn.net/u012879957/article/ ...
- 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入
本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...
- 吴恩达deeplearning.ai系列课程笔记+编程作业(14)序列模型(Sequence Models)-第二周 自然语言处理与词嵌入
第五门课 序列模型(Sequence Models) 第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 文章目录 第五门课 ...
- [DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3词嵌入的特性 properties of word embedding Mikolov T, Yih W T, Zwe ...
- 【序列模型】第二课--自然语言处理与词嵌入
今日感想: 窗外是瓢泼大雨.来到杭州后,最大的变化就是说话少了,白天上班部门里的IT男神们只顾打代码如飞,闭口不语:晚上回到出租屋,也只剩一个人的独处.要么看书看论文,要么写写博客和日志,要么弹弹古筝 ...
- 05.序列模型 W2.自然语言处理与词嵌入
文章目录 1. 词汇表征 2. 使用词嵌入 3. 词嵌入的特性 4. 嵌入矩阵 5. 学习词嵌入 6. Word2Vec 7. 负采样 8. GloVe 词向量 9. 情感分类 10. 词嵌入除偏 作 ...
- 第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings)
第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 文章目录 第二周 自然语言处理与词嵌入(Natural Language ...
最新文章
- mac 使用nvm安装node
- oracle数据库 pc6,使用logdump 查看ogg的CSN
- A value-added tax (VAT) IN UK
- C++ 如何一次在堆上申请4G的内存?如何设计一个类只能在堆或者栈上创建对象?
- python 模块和包
- Python中IOBase详解
- 蚂蚁金服安全应急响应中心上线
- C语言 扫雷游戏(代码+注释)
- armeabi、armeabi-v7a、arm64-v8a区别
- 根据经纬度计算两地之间的距离
- C陷阱与缺陷 个人阅读笔记
- python可以用于工业机器人编程_工业机器人四种编程技术
- Cox回归+Cox比例风险回归模型
- python猜拳游戏编程代码_Python实现猜拳小游戏
- 面试高频智力题 100层楼两个鸡蛋找出临界点的最多次数 (直接分析法,非动态规划思路)
- rfc3315_DHCPv6-RFC3315(中文).pdf
- 用C++实现QQ自动登陆器,仿佛开了外挂,秒杀各种神操作!
- 欢迎大家在这里提交CSDN博客程序出现的问题
- unity中导入的角色没有Avatar
- C语言二维数组范德蒙,2、编写一个程序,实现一个3×4矩阵转置。
热门文章
- Logstash 分布式日志管理
- tmux命令基本使用
- 数据结构之栈以及栈的基本操作
- [博客迁移]探索Windows Azure 监控和自动伸缩系列3 - 启用Azure监控扩展收集自定义监控数据...
- android_binder
- JavaScript获取当天开始时间和结束时间
- Fatal error: Uncaught Error: Call to undefined function gzinflate() in
- Beautiful Soup的用法(六):解析器的选择
- java recordset 记录数_ADO Recordset 对象
- 使用SDWebImage清除图片缓存