图解Word2vec,读这一篇就够了
通俗理解word2vec
word2vec 中的数学原理详解
word2vec的几种实现
对 word2vec的理解
过程
- 通过切词,窗口宽度,通过窗口滑动,把句子分隔为相连词组,含义是一对输入和输出的词,它们是紧密关联的
- 生成 2 个矩阵,它们结构是相同的:纵向是词列表,横向是向量列表,向量个数一般 N=300,也就是横向是 300 个实数
- 一个叫embedding矩阵,用于存入输入词的向量
- 一个叫context矩阵,用于存放输出此的向量
- 最初,用随机值初始化这些矩阵
- 然后,用这些随机值计算(向量)计算输入和输出的点积(表示为它们相关的概率)
- 通过 sigmoid 函数把值映射到 [0,1],表示百分比(这就是第一轮预估)
- 因为有输入,有真实的词相关信息,上面计算的值(百分比)和真实值对比,找到误差
- 然后用这个误差调整向量(如何调整?)
- 循环迭代上述过程,逐步优化
- 然后停止训练过程(停止的条件?),丢弃 Context 矩阵,Embeddings 矩阵就是被训练好的词向量
概念
- word2vec(word to vector)是一个将单词转换成向量形式的工具
- word2vec 用到 Huffman 编码,它把训练语料中的词当做 huffman 的叶节点,在语料中出现的次数当做权值,以此对每个词进行编码。
- 词向量:一组整数代表一个词
- 神经概率语言模型?
- 词嵌入的父概念:神经语言模型
- 简单的理解过程
- 词同时出现的统计概率
- 词向量的维度与隐含层节点数一致,一般情况下要远远小于词语总数 V 的大小,所以 Word2vec 本质上是一种降维操作
- 分布式词向量
- 分布式词向量是一个固定大小的实数向量
- 事前确定它的大小比如 N=300 维
- loss function: 损失函数,比较初步预测和真实值的差距,对向量进行调整,调整的方向为损失函数值最小
- 梯度下降算法,梯度上升算法:就是根据误差,把向量向上(1)和向下(0)调整一个小值,再重新迭代
- stop function: 判断训练可以停止的函数
技巧
- 负采样(negative sampling)
- 滑动窗口生成的全部输入都是正采样,如果没有负采样,那么训练的输出结果将总是 1。
- 负采样是自动生成的,使用词表中非正采样的词
- Hierarchical softmax
其它
- 词向量技术,GloVe 是优化版本 skip-gram + LSA => GloVe
神经网络
- 神经网络主要由:输入层,隐藏层,输出层
- 网络输入层的每个神经元代表了一个特征,输出层个数代表了分类标签的个数
Doc2Vec
- Doc2Vec是一种非监督式算法,可以获得 sentences/paragraphs/documents 的向量表达,是 word2vec 的拓展。
- 学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性,可以用于文本聚类
- 对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题
应用
- ScaleAbout根据文章的内容来推荐视频
Doc2Vec的简介及应用(gensim)
基于gensim的Doc2Vec简析
词语分布式表示及其组合性
关于IMDB情感数据集的Gensim Doc2Vec教程
使用word embeddings进行文档分类的教程
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com