吴恩达深度学习总结(15)

词汇表征

之前我们表示一个词汇都是创建一个词典,然后基于词汇在词典中的位置创建一个在该位置为1其他位置为0的向量表示词汇。比如我们创建一个10000个单词构成的字典,那么每个单词的向量维度为10000,apple在字典中的第1个位置,那么apple的表示为 [ 1 , 0 ,   , 0 ] [1,0,\cdots,0] ,这种表示方法称为 one-hot表示。该表示方法存在很大的缺点:将每个词的完全分隔开,无法知道两个词之间的联系,对相关词汇的泛化能力不强。
另一种表述方法:特征表述(word embedding),即用其他的词来表述当前词汇。
在这里插入图片描述
通过这种表述可以更好地发现两个词之间的相似度,embedding是指将词汇以向量的形式嵌入到空间的某点上

基于迁移学习训练word embedding

步骤

  1. 从大量文集中训练word embedding或者直接从网上下载开源的预训练模型
  2. 根据新任务给定的小数据集,转换embedding(比如新的任务中有100k个词汇,对embedding进行转换)
  3. (可选)基于新的数据集对embedding进行调整(只有当新任务的数据集很大时才需要这样做)

这种word embedding的方法通常用于命名实体识别,文本摘要,文本解析,对拥有大量数据的任务应用不是很多。
分析可知 word embedding方法和人脸识别中的 face encoding方法类似,都是将待识别的目标转换为一个向量,但是这两个任务存在着一些不同:Face encoding可以对任意一张图片识别出人脸,而word embedding 只能学习词汇表中的单词,对于未在单词表中的单词标记为 “UNK”

类比推理算法

类比推理算法时由已知的两个词A、B,根据给定的单词C,找出词汇表中与C的关系最像A、B之间关系的词。
例如:我们已知women对应着men,那么在词汇表中与Queen相对应的词是?
对于这个问题,我们可以将词汇表示为word embedding的形式 e women e men e queen e ? e_{\text{women}} \to e_{\text{men}} \approx e_{\text{queen}} - e_? ,这个问题可以转化为找到一个单词 w w 使得 argmin w s i m ( e w , e queen e women + e men ) \text{argmin}_w sim(e_w, e_{\text{queen}} - e_{\text{women}} + e_{\text{men}}) ,其中 s i m sim 是指输入之间的相似度,通常我们可以使用 cosine similarity描述相似度,即 s i m ( u , v ) = u T v u v sim(u,v) = \frac{u^Tv}{||u||||v||}

Embedding matrix

embedding matrix是由一系列表征单词的向量构成的矩阵,矩阵中的每一列代表一个单词,在矩阵 E E 中单词的位置与one-hot中单词的位置一致,在神经网络的框架中,通常会有专门的方法从embedding matrix中提取单词,不需要其与one-hot vector相乘。
在这里插入图片描述
从这个网络中我们可以了解Neural language model的工作模式,首先从embedding matrix中提取出需要的向量,将向量放到网络中进行训练,最后经过softmax得到one-hot中的一个向量。
在训练过程中存在一个超参数:相关词汇的数目。在图示的网络结构中,我们选择了前6个作为预测值的相关词汇,在实际的调试过程中,常见的选择方式有:1. 前4个词汇;2. 前后各4个;3. 前1个; 3. 附近的一个词汇;4. skip gram。

skip gram

skip gram:skip gram时选择一个词作为context,另一个词作为target,选择的方法有很多,前一个或者前几个,后一个或后几个。
在计算softmax时,我们计算的是一个整个词汇表大小的向量,这大大增加了计算复杂度。为了减小计算量提出了hierarchical softmax:先看属于那一部分,再继续分类(类似于建立了一个决策树)。在实际应用时,hierarchical softmax不会是一个balance tree,通常将常用的词放到tree优先级较高的节点上(即靠近root)不用的归为叶节点。

CBOW

CBOW与skip gram类似,将两边的词选做context,然后将中间的词作为target

负采样

先选择一个词作为context,在context一定范围内选择一个词作为正样本;负样本选择同样的context,再随机选择一个词作为负样本,因此是随机选择,我们认为负样本与context无关。负样本的数目k一般在5-20,若数据集很大,那么k在2-5之间,这里用sigmoid函数来训练loss function。
负样本的选取:综合考虑出现频率和重要性(因为出现频率最多的单词如the,of,and的重要性一般不高),使用 f ( w i ) 3 4 i = 1 n f ( w i ) 3 4 \frac{f(w_i)^{\frac{3}{4}}}{\sum_{i=1}^{n}f(w_i)^{\frac{3}{4}}} 作为每一个词汇的选择概率,其中 n n 为总词汇量(embedding的列数), f ( w i ) f(w_i) 为词汇的出现频率。

GloVe(Global vectors for word representation)

我们用 x i j x_{ij} 表示单词 i i 出现在单词 j j 周围的次数,这里 i i 类似于 target, j j 类似于 context。
将差距最小化:
minimize i = 1 n I = 1 n f ( x i j ) ( θ i T e j + b i + b j log x i j ) 2 \text{minimize} \sum_{i=1}^{n}\sum_{I=1}^nf(x_{ij})(\theta_i^Te_j + b_i + b_j - \log x_{ij})^2
其中 f ( x i j ) f(x_{ij}) 给不常出现的单词有意义的运算,给经常出现的单词更大但不过分的权重,当 x i j x_{ij} 为0时, f ( x i j ) f(x_{ij}) 也为0

情绪分类

由于情绪分类时不仅仅需要简单的单词识别,也需要先后顺序的判定才能正常识别出情绪,因此在文字识别的基础上引入了RNN网络。
在这里插入图片描述

除偏

  1. 分辨偏见存在的方向,即用坐标轴将存在偏见的词汇与不存在偏见的词汇分隔开(不一定是一维的)
  2. 基于偏见坐标轴建立无偏坐标轴,将不存在偏见的词汇映射到无偏坐标轴上
  3. 使得有偏见的词汇到映射后无偏见词汇的距离相等(基于无偏见坐标轴等距,与偏见坐标轴平行)
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33669204/article/details/84037113