Word Embedding 浅析"/>
Word Embedding 浅析
目录
1. 语言的算法表达
1.1 字典序
1.2 one-hot 编码
2. 深度学习简述
2.1 复习一下:待定系数法
2.2 复习一下:导数
2.3 深度学习的本质
3. embedding 的本质
3.1 word2vec
3.2 Embedding Layer
3.3 Embedding 的本质
3.4 Embedding 的意义
1. 语言的算法表达
1.1 字典序
文字对于计算机来说就是一个个 鬼画符,计算机看不懂,也无法直接处理
因此NLP第一步就是 :
将 文字 转换为计算机能看懂的 数字
传统计算机系统会将一个个汉字转换为特殊的字符串编码,如:utf-8、gb2312 等等
而在机器学习、深度学习领域,必须将文本描述为数字
其中最常用的方式就是将文本转换为字典序:
词典中的第几个字
如: Abandon 是英语字典中 第1个 单词 ,所以他的字典序就是 1
这样就已经迈出了让计算机看懂文字的第一步
但是对于机器学习尤其是深度学习来说,光将文本转换为字典序是不够的。
我们回头看看字典序都有哪些特征:
- 本质是间隔为 1 的非连续变量
实际上离散变量并不是无法训练,如:cart 树、 xgboost 等都可以直接使用离散变量进行训练。主要问题在于文本字典序只代表各个文本之间的字典顺序,实际并无具体意义
- 数值存在数学性质
很明显这种数字上的关系在很多场景下会带来大量的错误信息,因为每个字词本身在不同语境下都有着不同的意义
1.2 one-hot 编码
为了解决字典序所带来的问题,我们可以使用one-hot 编码。
one-hot 编码有个很装逼的中文名:独热编码,听起来高大上,实际一句话概括就是:
构建一个由 n个0组成的序列 (n是字典总数),其中将第字典序个0 换成 1
例如:n =3,则所有的字典序对应one-hot 编码有
1: 1 , 0 , 0
2: 0 , 1 , 0
3: 0 , 0 , 1
one-hot 编码的优势:
1. 从数值上每个字典序转换后都是 1,而且有且只有一个 1 ,避免字典序带来的数值问题
2. 本身是离散变量,但是被当作连续变量训练时,0~1 正好可以代表出现的概率
2. 深度学习简述
2.1 复习一下:待定系数法
在高中时,有一类任务:给定函数类型及部分特征,求解函数解析式。常用的一种方法就是待定系数法
2.2 复习一下:导数
2.3 深度学习的本质
给定大量级样本及模型(负杂函数),求解模型参数(函数解析式)
因为,深度学习和高中求函数解析式不同,我们并不知道真实样本之间的映射函数是一个什么形式(如:一元二次、二元一次)
深度学习就是,通过待定系数法,设一个复杂函数g(x) 及 函数衡量 g(x)与真实函数f(x) 之间差距的函数 loss( g(x),f(x))。
对于loss 而言,f(x) 是常数,g(x) 的参数 w 是自变量。
通过导数求解 loss()的最小值,就能找到 g(x) 的参数w,让g(x) 约等于真实的函数f(x)
简单来说深度学习,就是通过待定系数法、求导更新,最小化模型和真实世界模型的误差。其中模型就是:一大堆负杂的矩阵乘法、加法及变换
3. embedding 的本质
终于到了Embedding 本质这一part了
有一句话: 万物皆可embedding
3.1 word2vec
首先,看看nlp embedding 的鼻祖之一:word2vec (2013)
直观的来讲,word2vec 就是进一步在语言的算法表达上,做了一个映射任务:
语言 ——> 函数 ——> 目标任务
这个目标任务有两种做法 :
- skip-gram : 给定句子中的当前词,预测周围的词
- cbow : 给定句子中的周围词,预测当前词
其核心观点是在one-hot 的文本表征基础上,乘以一个参数矩阵,得到一个dim 长度的参数,这个就是embedding
因为该矩阵通过Skip-gram 或 CBOW 方式在大量语料中训练得到 , 所以,通过w2c训练得到的embedding 也就带有了相似词相近这么一个特点。
因为同义词、近义词可能在大量语料上有着相同的上下文,因此,训练后embedding 也相近
w2c 提供了一种有效的文本数值化方法,为深度学习发展提供了标准范式
w2c 的本质是通过embedding 的方式,将原有的one-hot 矩阵通过大量的语料扩展出了dim 维度的特征信息。
就像我们给大众店家打分一样,本来店家可能只是 某地区、第几家 店铺。
通过5个维度,给店家打了一个评分,这个评分一定意义上就能代表这个店家。
3.2 Embedding Layer
由w2c 思想发展而来,后续NLP 任务都加入了Embedding Layer 作为标准的做法。
因为embedding 和 one-hot 相比能够通过预训练带来更多的一些特征信息。
但是,我们想象中的embedding 和实际中的embedding 是有所不同的
- 以为的embedding:
同w2c一样是一个矩阵乘法的操作,从one-hot 到 embedding ,把 vocab 降维到 dim
- 实际的embedding:
直接通过字典序,通过mod 、div 分块直接从参数矩阵中查出embedding 向量。
画重点!!!
embedding 在NLP 的过程中,实际是一个升维的操作。
从不带有任何信息的字典序 (1维)升维到 dim 维 : 1 * 1 ---> 1 * dim
而在推荐、广告领域,通过one-hot 乘以参数矩阵,才是降维操作!!!
1 * feature_dim ---> 1 * dim
3.3 Embedding 的本质
总结一下
训练embedding 的本质是: 通过一系列目标任务,训练出一个由目标文本转换到特定向量的模型。不同的目标任务会带来不同的词向量意义,这一系列目标任务被称为预训练任务
embedding 的本质就是: 通过训练的方式 ,将一些低维、离散、不带任何意义的序号升华成带有特定任务性质的高维特征。如:火锅店到底好不好吃、贵不贵
因此说万物皆可embedding 的原因就是:基本上的任务及模型都可以视为广义的embedding
BERT、GPT-3 、ELMO 、Word2vec 都是embedding ,只是任务、模型不同罢了
embedding 不止单指Embedding Layer
3.4 Embedding 的意义
我觉得embedding 最主要的意义就是构建了一套 离散数据转换为连续数据的范式。
通过映射的方式,用连续不同维度的特征数据来表示一个真实世界中的实体。
平时评分是embedding ,高考通过分数筛选何尝不是embedding
有了embedding 才有后续一系列数学手段完成的 NLP 深度学习任务
今天只是剖析了最简单基础的Embedding 任务,但是还有大量Embedding 的未来值得我们去思考
如: GPT-3 的确大力出奇迹,但是GPT-3 之中有很多任务是并无训练数据的,GPT-3 是如何捕捉到其中的关联关系的。这个就和人类如果思考真实世界中实体关系一样。
更多推荐
Word Embedding 浅析
发布评论