1 词汇表征
词嵌入是语言表示的一种方式,例如国王和王后,男人和女人,只用one-hot 编码是无法体现词之间的关联,因此,我们可以用特征化的表示,来表示每个词。例如:特征依次为:gender、royal、age、food … … ,可以得到一个描述词的向量。例如:
为了对他们进行可视化,常用的算法有 t−SNE t-SNEt−SNE 算法,将这些向量投影到低维空间。通过这个投影,会发现相似的词总是聚在一起。
2 使用词嵌入
词嵌入使用步骤:
1.首先从大量的文本集中,学习词嵌入,一个非常大的文本集。
2.将词嵌入模型迁移到你的新的只有少量标注训练集的任务中
3.新的任务上训练模型的时候,可以选择使用新的数据来微调词嵌入。
词嵌入和人脸编码:
词嵌入和人脸编码很类似。在人脸识别领域,我们会将人脸图片预编码成不同的编码向量,以表示不同的人脸,进而在识别的过程中使用编码来进行比对识别。词嵌入则是通过在大量文本中对词汇表的单词进行编码。
3 使用词嵌入
当我们有Man、Woman、King、Queen、Apple、Orange这些词的时候,算法使其知道 Man->Woman 时,King-> Queen具有相似的关系。因此,我们使用相似度来计算:
4 嵌入矩阵
类似于对字典中的每个词做one-hot 编码,嵌入矩阵来描述这个字典中的词嵌入。
5 学习词嵌入
输入KaTeX parse error: Expected group after '' at position 27: …ass of orange ̲,能够预测下划线的词。示意图如下,通过各个词的特征向量作为输入,然后最后通过一个softmax作为一个输出从而预测下划线的词。
6 word2Vec
word2Vec是一种简单而且计算时更加高效的方式来学习这种类型的嵌入。
首先,抽取上下文和目标词配对,来构建监督学习问题。选取 orange 作为 Context ,目标单词为 juice 或 glass 或 my。也就是给定上下文,然后选取在这个词正负 10 个词距或 5 个词距,随机选取的某个目标词。构建这个监督学习问题的目标并不是监督学习本身,而是通过视同这个学习问题,来学到一个更好的词嵌入模型。
假设我们仍然使用了一个10000词的词汇表,Vocab size=10000k。 但我们需要解决的基本的监督学习问题是学习一种映射关系,从上下文C,这里我们假设为 orange (O6527)到某个目标词(target word,记为t),可能为 juice (O4834), 从输入x映射到输出y。
7 负采样
看到一个改善过的学习问题叫做负采样。我们可以给定一个上下文词(context word),例如orange,然后在一定词距内选择对应的词,例如 juice,然后标记 target 为 1。接着,在词典中随机选取 word, 例如king,然后将target标记为0。所以我们在训练过程中,输入的是context<->word (orange<->juice、orange<->king)等单词对,输出的是这俩个词之间的关系,即target的值,0或者1。分类器为Softmax分类器,其计算代价太高。而采样负采样(negative sample)后,假设k=4,我们只需要选取一个与context(这里是orange)对应的词(这里juice),然后其target 为1,再从字典中随机选取四个与orange不对应(一般情况下从字典随机选取是不对应的,当然刚好对应也是没有关系的)词(诸如king、book、the、of等),其target标记为0。 这样子就成了一个逻辑分类问题(Logistic classifier)。在每次迭代过程中从词典中虽然采样更新其负样本,从而训练其参数。
8 情绪分类
情感分类任务就是看一段文本来分辨这个人是否喜欢他们在讨论的这个东西。
通过将句子中每个单词都写成o…o…one-hot 向量的形式,然后乘以一个词嵌入矩阵EE, 我们得到了词嵌入向量e…e…, 然后将所有的向量平均(average),输入到SoftmaxSoftmax最后得到yy。 但是有一个缺点就是忽略了词的顺序,这时候可以用RNN。
网友评论