深度学习——自然语言处理(一)

自然语言处理基础
本文根据《阿里云天池大赛赛题解析——深度学习篇》整理,可以看做是简易笔记,建议配合《阿里云天池大赛赛题解析——深度学习篇》阅读,效果更好。
1.1词向量
通常,将字和词映射为一组反映其语义特征的实数向量,这种方式被称为词向量。常用的词向量有独热表示(One-Hot Representation)与分布表示(Distribution Representation)两种表示方法。

(1)独热表示
独热编码使用N位0和1的编码方式来表示N种状态,且在任意时刻只有一种状态有效。
独热编码相当于给每个字词分配一个唯一的id,不能反映背后语义信息,且占用内存空间大。
(2)分布表示
将字词表示为一个定长的稠密向量,可以反映字词背后的语义信息,由于稠密向量不是随意设置的,因此还需要对句子进行建模,就是语言模型。
1.2语言模型
语言模型定义了自然语言中标记序列的概率分布。通俗地说,语言模型是对句子进行建模,并求解句子的概率分布(对句子概率分布的建模)。
(1)传统语言模型
①词袋模型
使用字词频数来代替独热编码中的0,1编码的模型——词袋模型(Bag-of-Words Model)。
词袋模型与字词在原句子中的顺序无关,只反映字词出现的频率。通常来说,字词的频率反映了其在句子中的重要性。
②n-gram模型
由于词袋模型无法反映字词在句子中的顺序信息,因此语义信息片面。为了更好地反映语义,提出了n-gram模型。
使用马尔可夫假设简化单词出现概率的计算。
马尔可夫假设:某个时刻的状态只和其之前(n-1)个时刻状态有关。
词袋模型为1-gram模型,n-gram模型通常采用极大似然估计来计算。
(2)神经语言模型
神经语言模型通过神经网络训练得到词的分布表示,通常被称为词嵌入(Word Embedding)。本质是通过无监督的方式来学习神经网络,训练完成后输出网络中间的隐层特征,而隐层特征就是我们希望得到的词向量。
神经语言模型本质上是分类模型,通过负采样技术与其对应的损失函数,可以大幅提高神经语言模型的训练效率。
①Skip-Gram模型
Skip-Gram模型通过中心词预测上下文窗口中的词,将处理为单词索引的句子作为输入,经过Embedding层将索引转换为对应的词向量(bs,len,dim)。其中,bs——batchsize,分组大小;len——句子的长度;dim——词向量的维度。
②CBOW模型
与Skip-Gram模型相反,CBOW模型通过上下文中的全部词预测中心词,CBOW模型接受将处理为单词索引的句子作为输入,经过Embedding层将索引转换为对应的词向量(bs,len,dim)。
1.3自然语言处理中的深度学习
(1)卷积神经网络
卷积神经网络是一类包含卷积计算单元的神经网络。卷积计算单元通过不断滑动卷积核的位置,对相应数据区域进行加权求和。常见的卷积计算单元有一维卷积CNN1D、二维卷积CNN2D、三维卷积CNN3D。
计算机视觉主要使用二维卷积,自然语言处理主要使用一维卷积。
利用卷积神经网络进行文本分类的模型为TextCNN。
CNN1D对挖掘序列数据在上下文窗口中的信息非常有效,但难以在长距离上下文信息中保持信息(不适合长文本)。
(2)循环神经网络
循环神经网络对序列的每一个位置都进行同样的循环单元计算,保持了长距离的上下文信息,天然地符合序列任务,在自然语言处理中得到广泛应用。
常见结构:LSTM(长时记忆)、GRU(门控循环单元)。解决简单RNN的梯度爆炸或梯度消失
GRU相对于LSTM降低了计算复杂度。
(3)编码器-解码器框架与注意力机制
自然语言处理的主要任务都可以被看作多对多的任务,即序列输入、序列输出的任务(文本分类是序列为1的输出)。因此,编码器-解码器框架天然地符合自然语言处理的任务需求。
编码器-解码器框架也被称为Seq2Seq框架,可以被看作一种条件性的语言模型。编码器、解码器通常使用循环神经网络。
循环神经网络有时保存了过长的信息,注意力机制能够有选择地保留信息。
通过注意力机制,解码器可以选择性地获得编码器的隐藏状态信息,从而提高训练效率。
可以将注意力机制视为一种查询(Query)键值对(Key,Value)的关系。
在自然语言处理中,注意力机制一般将键值对做等价处理,即K=V。更进一步,如果采用自注意力机制,则有Q=K=V。
以上使用稠密向量计算注意力权重的机制,被统称为软注意力机制,使用独热编码向量计算注意力权重的机制,被称为硬注意力机制。

猜你喜欢

转载自blog.csdn.net/weixin_47970003/article/details/123623865