机器学习笔记 - 循环神经网络备忘清单

一、RNN概述

1、传统RNN的架构

        传统 RNN 的架构循环神经网络,也称为 RNN,是一类允许将先前的输出用作输入同时具有隐藏状态的神经网络。 它们通常如下所示:

        对于每个时间步t,激活 a^{< t >} 和输出 y^{< t >} 表示如下:

        \boxed{a^{< t >}=g_1(W_{aa}a^{< t-1 >}+W_{ax}x^{< t >}+b_a)}\quad\textrm{and}\quad\boxed{y^{< t >}=g_2(W_{ya}a^{< t >}+b_y)}

        其中 W_{ax}, W_{aa}, W_{ya}, b_a, b_y是在时间上共享的系数和 g_1, g_2激活函数。

        下表总结了典型 RNN 架构的优缺点:

        优点:可以处理任何长度的输入、模型大小不随输入大小而增加、计算考虑了历史信息、权重跨时间共享

        缺点:计算缓慢、很难从很久以前获取信息、不能考虑当前状态的任何未来输入

2、RNN 的应用

        RNN 模型主要用于自然语言处理和语音识别领域。 下表总结了不同的应用:

Type of RNN Illustration Example
One-to-one
T_x=T_y=1
传统神经网络

One-to-many

T_x =1,T_y>1

音乐生成

Many-to-one

T_x >1, T_y = 1

情绪分类

Many-to-many

T_x =T_y

Name entity recognition

Many-to-many

T_x \neq T_y

机器翻译

 3、损失函数

         在递归神经网络的情况下,所有时间步的损失函数 \mathcal{L}基于每个时间步的损失定义如下:

         \boxed{\mathcal{L}(\widehat{y},y)=\sum_{t=1}^{T_y}\mathcal{L}(\widehat{y}^{< t >},y^{< t >})}

 4、时间反向传播

         在每个时间点进行反向传播。 在时间步T,损失 \mathcal{L} 关于权重矩阵 W 的导数表示如下:

        \boxed{\frac{\partial \mathcal{L}^{(T)}}{\partial W}=\sum_{t=1}^T\left.\frac{\partial\mathcal{L}^{(T)}}{\partial W}\right|_{(t)}}

二、处理长期依赖

1、常用的激活函数

        RNN 模块中最常用的激活函数如下所述:

2、消失/爆炸梯度

        在 RNN 的上下文中经常遇到梯度消失和爆炸的现象。 它们发生的原因是很难捕捉长期依赖关系,因为乘法梯度可以相对于层数呈指数减少/增加。

3、Gradient clipping

        它是一种用于处理执行反向传播时有时会遇到的梯度爆炸问题的技术。 通过限制梯度的最大值,这种现象在实践中得到控制。

4、Types of gates

        为了解决梯度消失问题,在某些类型的 RNN 中使用了特定的门,并且通常具有明确的用途。 它们通常记为 \Gamma 并且等于:

        \boxed{\Gamma=\sigma(Wx^{< t >}+Ua^{< t-1 >}+b)}

        其中 W, U, b是特定于门的系数,\sigma 是 sigmoid 函数。 主要的总结如下表:

Type of gate Role Used in
Update gate \Gamma_uΓu​ How much past should matter now? GRU, LSTM
Relevance gate \Gamma_rΓr​ Drop previous information? GRU, LSTM
Forget gate \Gamma_fΓf​ Erase a cell or not? LSTM
Output gate \Gamma_oΓo​ How much to reveal of a cell? LSTM

5、GRU/LSTM

        门控循环单元(GRU)和长短期记忆单元(LSTM)处理传统RNN遇到的梯度消失问题,LSTM是GRU的泛化。 下表总结了每种架构的特征方程:

        备注:符号 \star​​​​表示两个向量之间的元素乘法。

 6、RNN 的变体

        下表总结了其他常用的 RNN 架构:

三、学习词表示

1、动机和符号

        表示技术:下表总结了两种主要的单词表示方式:

 2、嵌入矩阵

        对于给定的单词 w,嵌入矩阵 E 是将其 1-hot 表示 o_w 映射到其嵌入 e_w 的矩阵,如下所示:

        \boxed{e_w=Eo_w}

        备注:学习嵌入矩阵可以使用目标/上下文似然模型来完成。

四、Word embeddings

1、Word2vec

        Word2vec 是一个旨在通过估计给定单词被其他单词包围的可能性来学习单词嵌入的框架。 流行的模型包括skip-gram、负采样和CBOW。

 2、Skip-gram

        skip-gram word2vec 模型是一种监督学习任务,它通过评估任何给定目标词 t 与上下文词 c 发生的可能性来学习词嵌入。 通过注意\theta_tt 相关的参数,概率 P(t|c)由下式给出:

        \boxed{P(t|c)=\frac{\exp(\theta_t^Te_c)}{\displaystyle\sum_{j=1}^{|V|}\exp(\theta_j^Te_c)}}

        备注:在 softmax 部分的分母中对整个词汇表求和,使得该模型的计算成本很高。 CBOW 是另一个 word2vec 模型,它使用周围的词来预测给定的词。

3、Negative sampling

        它是一组使用逻辑回归的二元分类器,旨在评估给定上下文和给定目标词可能如何同时出现,模型在 k 个负样本和 1 个正样本集上进行训练。 给定一个上下文词 c 和一个目标词 t,预测表示为:

        \boxed{P(y=1|c,t)=\sigma(\theta_t^Te_c)}

        备注:此方法的计算成本低于 skip-gram 模型

4、GloVe

        GloVe 模型是词表示的全局向量的缩写,是一种词嵌入技术,它使用共现矩阵 X,其中每个 X_{i,j}表示目标 i在上下文 j 中出现的次数。 其代价函数 J 如下:

        \boxed{J(\theta)=\frac{1}{2}\sum_{i,j=1}^{|V|}f(X_{ij})(\theta_i^Te_j+b_i+b_j'-\log(X_{ij}))^2}

        其中f 是一个加权函数,使得 X_{i,j}=0\Longrightarrow f(X_{i,j})=0

        鉴于 e\theta 在该模型中发挥的对称性,最终词嵌入 e_w^{(\textrm{final})}由下式给出:

        \boxed{e_w^{(\textrm{final})}=\frac{e_w+\theta_w}{2}}

5、Comparing words

(1)Cosine similarity

        单词 w_1w_2 的余弦相似度表示如下:

        \boxed{\textrm{similarity}=\frac{w_1\cdot w_2}{||w_1||\textrm{ }||w_2||}=\cos(\theta)}

        备注:\theta 是单词 w_1w_2 之间的角度

        

 (2)t-SNE

        t-SNE(t-distributed Stochastic Neighbor Embedding)是一种旨在将高维嵌入减少到低维空间的技术。 在实践中,它通常用于在 2D 空间中可视化词向量。

 五、语言模型

        语言模型旨在估计句子 P(y)的概率。

1、n-gram model

        这个模型是一种简单的方法,旨在通过计算一个表达式在训练数据中出现的次数来量化一个表达式出现在语料库中的概率。

2、Perplexity

        语言模型通常使用困惑度度量(也称为 PP)来评估,它可以解释为由词数 T 归一化的数据集的逆概率。 困惑度越低越好,定义如下:

        \boxed{\textrm{PP}=\prod_{t=1}^T\left(\frac{1}{\sum_{j=1}^{|V|}y_j^{(t)}\cdot \widehat{y}_j^{(t)}}\right)^{\frac{1}{T}}}

        备注:PP 常用于 t-SNE。

六、机器翻译

        机器翻译模型类似于语言模型,只是它之前放置了一个编码器网络。 出于这个原因,它有时被称为条件语言模型。

        目标是找到一个句子 y 使得:

        \boxed{y=\underset{y^{< 1 >}, ..., y^{< T_y >}}{\textrm{arg max}}P(y^{< 1 >},...,y^{< T_y >}|x)}

1、Beam search

        它是一种启发式搜索算法,用于机器翻译和语音识别,以在给定输入x 的情况下找到最可能的句子 y

        第 1 步:找到最可能出现的 B 词 y^{< 1 >}

        第 2 步:计算条件概率 y^{< k >}|x,y^{< 1 >},...,y^{< k-1 >}

        第 3 步:保留前 B 组合 x,y^{< 1>},...,y^{< k >}

         备注:如果beam width设置为1,那么这相当于一个naive greedy search。

2、Beam width

        波束宽度B是波束搜索的参数。 较大的B 值会产生更好的结果,但会降低性能并增加内存。 较小的 B值会导致更差的结果,但计算量较小。 B 的标准值约为 10。

3、Length normalization

        为了提高数值稳定性,波束搜索通常应用于以下归一化目标,通常称为归一化对数似然目标,定义为:

                \boxed{\textrm{Objective } = \frac{1}{T_y^\alpha}\sum_{t=1}^{T_y}\log\Big[p(y^{< t >}|x,y^{< 1 >}, ..., y^{< t-1 >})\Big]}

        注:参数α可以看作是一个软化器,它的值通常在0.5到1之间。

4、Error analysis

        当获得一个不好的预测翻译 \widehat{y} 时,人们可能会想知道为什么我们没有通过执行以下错误分析得到一个好的翻译 y^*

5、Bleu score

        双语评估替补 (bleu) 分数通过计算基于 n-gram 精度的相似性分数来量化机器翻译的好坏。 定义如下:

                \boxed{\textrm{bleu score}=\exp\left(\frac{1}{n}\sum_{k=1}^np_k\right)}

        其中 p_n 是 n-gram 上的 bleu 分数,仅定义如下:

                p_n=\frac{\displaystyle\sum_{\textrm{n-gram}\in\widehat{y}}\textrm{count}_{\textrm{clip}}(\textrm{n-gram})}{\displaystyle\sum_{\textrm{n-gram}\in\widehat{y}}\textrm{count}(\textrm{n-gram})}

        备注:可以对简短的预测翻译应用简洁惩罚,以防止人为夸大 bleu 分数。

七、注意力

1、注意力模型

        该模型允许 RNN 关注输入中被认为重要的特定部分,从而提高了最终模型在实践中的性能。 通过注意 \alpha^{< t, t'>}输出 y^{< t >} 应该对激活 a^{< t' > }c^{< t >} 在时间 t 的上下文,我们有:

        \boxed{c^{< t >}=\sum_{t'}\alpha^{< t, t' >}a^{< t' >}}\quad\textrm{with}\quad\sum_{t'}\alpha^{< t,t' >}=1

        备注:注意力分数常用于图像字幕和机器翻译。

2、注意力权重

        输出 y^{< t >} 应该对激活 a^{< t' >} 给予的关注量由\alpha^{< t,t' >} 给出 计算如下:

        \boxed{\alpha^{< t,t' >}=\frac{\exp(e^{< t,t' >})}{\displaystyle\sum_{t''=1}^{T_x}\exp(e^{< t,t'' >})}}

        备注:计算复杂度是 T_x 的二次方

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/125227157