word2vec数学原理详解
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步
1.单词表示
单词需要用计算机可以理解的方式表达后,才可以进行接下来的操作。
1.One hot representation
程序中编码单词的一个方法是one hot encoding。
有1000个词汇量。排在第一个位置的代表英语中的冠词"a",那么这个"a"是用[1,0,0,0,0,…],只有第一个位置是1,其余位置都是0的1000维度的向量表示,如下图中的第一列所示。
也就是说,
在one hot representation编码的每个单词都是一个维度,彼此independent。
2.Distributed representation
然而每个单词彼此无关这个特点明显不符合我们的现实情况。我们知道大量的单词都是有关。
语义:girl和woman虽然用在不同年龄上,但指的都是女性。
复数:word和words仅仅是复数和单数的差别
时态:buy和bought表达的都是“买”,但发生的时间不同。
所以用one hot representation的编码方式,上面的特性都没有被考虑到。
我们更希望用诸如“语义”,“复数”,“时态”等维度去描述一个单词。每一个维度不再是0或1,而是连续的实数,表示不同的程度。
但是说到底,为什么我们想要用Distributed representation的方式去表达一个单词?
2.神经网络分析
假设我们的词汇只有4个,girl, woman, boy, man,下面就思考用两种不同的表达方式会有什么区别。
One hot representation
尽管我们知道他们彼此的关系,但是计算机并不知道。在神经网络的输入层中,每个单词都会被看作一个节点。 而我们知道训练神经网络就是要学习每个连接线的权重。如果只看第一层的权重,下面的情况需要确定4*3个连接线的关系,因为每个维度都彼此独立,girl的数据不会对其他单词的训练产生任何帮助,训练所需要的数据量,基本就固定在那里了。
Distributed representation
我们这里手动的寻找这四个单词之间的关系 f 。可以用两个节点去表示四个单词。每个节点取不同值时的意义如下表。 那么girl就可以被编码成向量[0,1],man可以被编码成[1,1](第一个维度是gender,第二个维度是age)。
那么这时再来看神经网络需要学习的连接线的权重就缩小到了2*3。同时,当送入girl为输入的训练数据时,因为它是由两个节点编码的。那么与girl共享相同连接的其他输入例子也可以被训练到(如可以帮助到与其共享female的woman,和child的boy的训练)。
Word embedding也就是要达到第二个神经网络所表示的结果,降低训练所需要的数据量。
而上面的四个单词可以被拆成2个节点的是由我们人工提供的先验知识将原始的输入空间经过 f (上图中的黄色箭头)投射到了另一个空间(维度更小),所以才能够降低训练所需要的数据量。 但是我们没有办法一直人工提供,机器学习的宗旨就是让机器代替人力去发现pattern。
我们没有办法一直人工提供,机器学习的宗旨就是让机器代替人力去发现pattern。
训练方法
问题来了,我们该如何自动寻找到类似上面的关系,将One hot representation转变成Distributed representation。我们事先并不明确目标是什么,所以这是一个无监督学习任务。
用输入单词作为中心单词去预测周边单词的方式叫做:Word2Vec - The Skip-Gram Model
用输入单词作为周边单词去预测中心单词的方式叫做:Continuous Bag of Words(CBOW)
3.word embedding数学解释
word embedding的意思是:给出一个文档,文档就是一个单词序列比如 “A B A C B F G”, 希望对文档中每个不同的单词都得到一个对应的向量(往往是低维向量)表示。比如,对于这样的“A B A C B F G”的一个序列,也许我们最后能得到:A对应的向量为[0.1 0.6 -0.5],B对应的向量为[-0.2 0.9 0.7] (此处的数值只用于示意)
之所以希望把每个单词变成一个向量,目的还是为了方便计算,比如“求单词A的同义词”,就可以通过“求与单词A在cos距离下最相似的向量”来做到。
Embedding在数学上表示一个maping, f: X -> Y, 也就是一个function,其中该函数是injective(就是我们所说的单射函数,每个Y只有唯一的X对应,反之亦然)和structure-preserving (结构保存,比如在X所属的空间上X1 < X2,那么映射后在Y所属空间上同理 Y1 < Y2)。那么对于word embedding,就是将单词word映射到另外一个空间,其中这个映射具有injective和structure-preserving的特点。
通俗的翻译可以认为是单词嵌入,就是把X所属空间的单词映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中,一个萝卜一个坑。
word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达,该表达就是word representation。
推广开来,还有image embedding, video embedding, 都是一种将源数据映射到另外一个空间
知乎相关链接:https://www.zhihu.com/question/32275069
参考文献:1.http://dataunion.org/9331.html
word2vec数学原理详解相关推荐
- 【转载】word2vec 中的数学原理详解
文章目录 一.前言 二.预备知识 三.背景知识 四.基于 Hierarchical Softmax 的模型 五.基于 Negative Sampling 的模型 六.若干源码细节 原文传送门: wor ...
- 转:word2vec 中的数学原理详解
1,目录和前言 https://blog.csdn.net/itplus/article/details/37969519 2,预备知识:逻辑回归.贝叶斯公式.霍夫曼树 https://blog.cs ...
- word2vec中数学原理详解以及原理思考
很久没有写博客了,也没有写过相关总结.最近,工作中又开始用到了word2vector,正好就做个相关总结.这方面相关的博客有很多,我看过的讲的最清楚的就是@peghoty的博客. 要理解wordvec ...
- 主成分分析(PCA)数学原理详解
文章目录 1 数据的向量表示及降维问题 2 向量的表示及基变换 2.1 内积与投影 2.2 基 2.3 基变换的矩阵表示 3 协方差矩阵及优化目标 3.1 方差 3.2 协方差 3.3 协方差矩阵 3 ...
- word2vec 中的数学原理详解(二)预备知识
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/peghoty/article/details/37969635 https://blog.csdn. ...
- word2vec 中的数学原理详解(三)背景知识
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...
- word2vec 中的数学原理详解(六)若干源码细节
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...
- word2vec 中的数学原理详解(一)目录和前言
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...
- word2vec 中的数学原理详解
https://www.cnblogs.com/peghoty/p/3857839.html
- Python机器学习中的数学原理详解(补充勘误表)
数学是机器学习和数据科学的基础,任何期望涉足相关领域并切实领悟具体技术与方法的人都无法绕过数学这一关.在一篇题为<放弃幻想,搞AI必须过数学关>的网文中,作者一针见血地指出想从事AI相关工 ...
最新文章
- 几何梯度分析神经网络中不可信预测性
- boost::fusion::fused_procedure用法的测试程序
- linux 杀死t状态进程,Linux下如何查杀stopped进程
- Python web开发——自定义userprofile(用户描述)
- qt 3d迷宫游戏_《加雷利亚的地下迷宫与魔女的旅团》最新情报公布
- 线程池工厂方法newFixedThreadPool()和newCachedThreadPool()
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确
- 《信任的速度》读后感
- https防流量劫持
- 【Si24R2F+ Demo板】介绍说明与使用建议
- 个人理财第十课-【货币基金】筛选实操课
- windows中docker 安装和使用
- vscode 插入多个光标,实现同时多行编辑的快捷键
- java List深拷贝的两种方式
- 浅析 ContentSizeFitter 以及 Horizontal Layout Group 嵌套问题
- 学习使用html2canvas生成渐变色背景图片
- android 混淆不起作用,Android代码混淆的写法总结
- 从小样本学习出发,奔向星辰大海
- MPP(高斯DB)常用语句(不定时更新添加)
- 超市服务器软件系统软件,星宇超市收银软件服务器
热门文章
- 2018年视频云服务市场格局进入整合阶段,阿里云视频云位居市场竞争力领导者的位置... 1
- PostgreSQL 全文检索 - 词频统计
- UI_storyboard实现页面回调
- GitHub 引入缺陷和Pull Request 模版,并支持直接上传文件
- shell手册--笨鸟杰作
- [置顶] jBPM4工作流开发实战 之 第二部分 jBPM4开发入门
- Finalize/Dispose资源清理模式
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(2月13日-2月19日)
- 【C004】VB - 数据文件(一)顺序文件
- 将多个csv文件整合到一个csv文件中