深度学习中的embedding
Posted kubopiy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习中的embedding相关的知识,希望对你有一定的参考价值。
深度学习中的embedding
1.简介
在整个深度学习框架中都是十分重要的“基本操作”,不论是NLP(Natural Language Processing,自然语言处理)、搜索排序,还是推荐系统,或是CTR(Click-Through-Rate)模型,Embedding都扮演着重要的角色。
2.介绍embedding的应用方式和如何计算embedding(通俗易懂)
基础知识了解
怎么把词表示出来即如何将一个单词表示为数字向量
最简单的方法是为词汇表中的每个单词定义一个带有节点的巨型输入层,或者至少为数据中出现的每个单词定义一个节点。 如果数据中出现500,000个唯一单词,则可以表示为长度为500,000向量的单词,并将每个单词分配给向量中的一个位置(slot)。
为什么引入
(1)神经网络过大(这里ppt引入一下神经网络的图加以说明)
巨大的输入向量意味着神经网络的超大数量的权重。 如果你的词汇表中有M个单词,并且输入上的网络的第一层中有N个节点,则您需要使用MxN个权重来训练该层。 大量的权重会导致进一步的问题:
数据量:模型中的权重越多,有效训练需要的数据就越多。
计算量:权重越多,训练和使用模型所需的计算量就越多,很容易超出硬件的能力。
(2)向量间缺少有意义的关系
如果将RGB通道的像素值提供给图像分类器,那么谈论“相近”值是有意义的。 略带红色的蓝色接近纯蓝色,无论是在语义上还是在向量之间的几何距离方面。 但是对于索引1247的1的向量表示的“马”,与索引50,430为1的向量表示的“羚羊”的关系不比索引238为1表示的向量“电视”的更接近。
这些问题的解决方案是使用embedding,embedding将大型稀疏向量转换为保留语义关系的低维空间。
简单来说,我们提取了数据集进行训练,根据训练,找寻我们所给的词汇之间的的关系,根据图,可以看出来积极的词汇聚拢,消极的词汇聚拢。
实现练习:
目标:
通过电影评论的数据集 ACL 2011 IMDB dataset训练一个语义分析模型来预测影评是喜欢(label=1)还是不喜欢(label=0)。
关于数据集:
数据集是电影的影评和评分,每个电影有个唯一id和对应评分,文件形式:id_score.txt,内容是影评。
原始数据集包括了train和test两个目录,train下面的neg目录表示负样本,其中评分score<=4,label为0;pos目录表示正样本,其中评分score>=7,label为1;
其中用的数据已经转换为tfrecord格式数据了。
特征工程:
通过tf.feature_column.categorical_column_with_vocabulary_list函数把影评的terms(影评的单词)转换为feature vector。本示例是为了练习,因此采用了词汇表(vocabulary)方式,只选取小部分词汇表,50个。即50维度的空间,如果影评中出现了其中的特征向量,出现置1,未出现置0。
采用one-hot编码
这里的feature vector就是稀疏的分类数据,可以转换为低纬的embedding
通过训练,得出50词的特征矩阵,再进行降维,形成训练好的embedding_matrix,等再输入一段影评,通过该矩阵就能判断该影评是好的还是不好的。
以上是关于深度学习中的embedding的主要内容,如果未能解决你的问题,请参考以下文章
推荐系统工程师必看!Embedding技术在深度学习CTR模型中的应用
盘点! 深度学习推荐系统中各类流行的Embedding方法 (下)
深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)