赞
踩
1、概述
文本表示可以分为:
2、离散式表示(Discrete Representation)
2.1 One-Hat(独热编码)
将词或字表示成一个向量,该向量的维度是词典(或字典)的长度,词典是通过语料库生成的,该向量中,当前词的位置为1,其余位置为0。
编码步骤:
One-Hot编码特点:
One-Hot编码缺点:
2.2 词袋模型(Bag of Word,BOW)
在词袋模型中不考虑语序和词法的信息,每个单词都是相互独立的,将词语放入一个“袋子”里,统计每个单词出现的频率
词袋模型编码特点:
词袋模型缺点:
2.3 TF-IDF(词频-逆文档频率)
为了解决词袋模型无法区分常用词(“是”,“的”)和关键词、专有名词对文本的重要性问题
3 分布式表示(Distributed Representation)
3.1 n-gram
n-gram是一种语言模型(Language Model,LM)语言模型是一种基于概率的判别式模型,该模型的输入是一句话(单词打的序列),输出的是这句话的概率,也就是这些单词的联合概率
(语言模型就是判断一句话是不是正常人说的话)
3.2 共现矩阵(Co-Occurrence Matrix)
首先指定窗口大小,然后统计内词语共同出现的次数作为词的向量
语料库:
若指定窗口大小为1(bi-gram),则语料库的共现矩阵如下:
优点
考虑了句子中词的顺序
缺点
3.3 Word2Vec
woed2vec有两种模型:CBOW和SKIP-GRAM
缺点
3.4 GloVe
是一个基于全局词频统计的词向量表示算法,该算法综合了全局矩阵分解和局部上下文窗口两种方法的优点
优点
缺点
3.5 ELMO(Embedding from Language Models)
word2vec和glove算法得到的词向量都是静态词向量,静态词向量会把多义词的语义进行融合,训练结束后不会根据上下文进行改变,而ELMO模型进行训练词向量可以解决多义词的问题
算法精髓:用语言模型训练神经网络,在使用词向量的时候,单词已经具备上下文信息,这时神经网络可以根据上下文信息对词向量进行调整,经过调整后的词向量更能表达上下文中的具体含义,就可以解决静态词向量无法表达多义词的问题。
网络模型
过程:
备注
word2vec分为CBOW和skip-gram
CBOW目标是根据上下文出现的单词预测当前词的生成概率,而Skip-gram根据当前词预测上下文各词的生成概率
其中w(t)w(t)w(t)是当前所关注的词,w(t−2),w(t−1),w(t+1),w(t+2)是上下文单词,这里前后滑动窗口大小均设为2。
CBOW和skip-gram都可以表示为有输入层、映射层、输出层组成的浅层神经网络。
输入层中每个单词是由独热编码表示。所有词均表示一个N维向量,N为词汇表中单词的总数。在向量中,每个单词对应的维度为1,其余维度为0。
在映射层中,K个隐含单元的值可以由N维输入向量以及连接输入和隐含单元的NK维权重矩阵计算得到。
输出层向量的值可以由隐含层向量(K维),以及连接隐含层和输出层之间的KN维权重矩阵计算得到。输出层也是一个N维向量,每一维与词汇表中的一个单词对应。最后对输出层向量应用Softmax函数,可以得到每个单词的生成概率。
接下来需要训练神经网络权重,使得所有单词的整体生成概率最大化。共有两大参数:从输入层到隐含层的一个维度为NK的权重矩阵,从隐含层到输出层的一个维度为KN的权重矩阵。学习权重可以使用BP算法实现。
训练得到维度为N * K和K * N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。
但是由于Softmax激活函数存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,使得迭代过程非常缓慢。由此产生了Hierarchical Softmax和Negative Sampling两种方法。
Word2Vec与LDA区别
传统文本处理任务的方法一般将TF-IDF向量作为特征输入,这样做,实际上丢失了输入的文本系列中每个单词的顺序
1、输入层是两个nk的矩阵,其中n为文本所对应的单词总数(若长度不够n用padding 补,超出则舍弃),k是每个词对应的emberding向量维度。这里的两个通道:一个是每个词的 k维向量预先在其他语料库中训练好的,即预训练的模型可以用word2vec等,另外一个通道是每个词的k维向量作为未知的参数由模型训练得到。这样做的好处一方面预训练好的emberding向量可以利用其他预料库获取更多的先验知识;另一方面,由当前CNN模型训练出来的词嵌入向量可以更好地捕捉与当前任务关联的特征。其中未知的nk的通道的参数是初始化,随着网络的训练会慢慢迭代改变。
2、第二层为卷积层,在输入的nk的矩阵上,定义的滑动窗口卷积操作为:
其中代表输入矩阵的第i行到第i+h-1行 所组成的大小为hk的滑动矩阵窗口,和的维度一样,也是hk,b为偏置参数。f为非线性激活函数,为标量。
比如一个filter的卷积操作,假设h=2,则每次在2k的滑动窗口上进行卷积,就可得到n-h+1=n-1个结果,然后把他们拼接起来,组成n-1维的特征向量
卷积成中可以根据设置不同的h,产生多个不同的filter,每一个filter的卷积操作相当于提取一个特征,通过不同的滑动窗口的filter就可以提取出不同的特征,构成卷积层。
3、第三层为池化层,图中采用了max池化,即把上层中的每个filter产生的特征向量值中选出最大的一个作为特征值,,也就是说上一层每个filter的贡献在这一层就生成一个特征值,然后最后所有的值构成一个penultimate layer的特征向量,喂给最后的全连接层,并使用Softmax函数输出每个文本类别的概率。
RNN的求解可以采用BPTT(Back Propagation Through Time)算法实现。实际上是BP的简单变种。RNN设计的初衷在于捕捉长距离输入之间的依赖关系,然而使用BPTT的算法并不能成功捕捉远距离依赖关系,这一现象源于深度神经网络中的梯度消失问题。
传统的RNN网络梯度可以表示为连乘的形式:
由于预测误差沿神经网络每一层反向传播,当雅克比矩阵最大特征值大于1时,随着离输出越来越远,每层的梯度大小会呈指数增长,导致梯度爆炸。反之若最大特征值小于1,梯度大小会指数减小,产生梯度消失。梯度消失意味着无法通过加深网络层数来提升预测效果,只有靠近输出的几层才真正起到学习的作用,这样RNN很难学习到输入序列中的长距离依赖关系。
梯度爆炸可以通过梯度裁剪来缓解,即当梯度的范式大于某个给定值的时候,对梯度进行等比缩放。而梯度消失问题需要对模型本身进行改进。深度残差网络是对前馈神经网络的改进。通过残差学习的方式缓解了梯度消失的现象,从而可以学习到更深层的网络表示。对于RNN来说,长短时记忆模型及其变种门控循环单元等模型通过加入门控机制,很大程度上缓解了梯度消失带来的损失。
答案是肯定的。但是需要对矩阵的初值做一定限制,否则容易引发数值问题。首先回顾一下RNN前向传播公式:
根据前向传播公式,向前传播一层,得到:
如果采用ReLU替换公式中的激活函数f,并且假设ReLU一直处于激活区域(即输入大于0),则有 f(x)=x
继续将其展开,net的表达式最终包含t个W连乘。如果W不是单位矩阵,最终的结果将会趋于0或无穷,引发严重的数值问题。
那么为什么在CNN中不会出现这样的问题呢,因为CNN中每一层的权重矩阵是不同的,并且在初始化的时候它们是独立同分布的,可以相互抵消,多层之后不会出现严重的数值问题。
回到RNN的梯度计算公式:
- 6.1 什么是LSTM
长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
- 6.2 RNN与LSM的区别
- 6.3 深入LSTM
6.4 LSTM内部的四个状态
以上,就是LSTM的内部结构。通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的RNN那样只能够“呆萌”地仅有一种记忆叠加方式。对很多需要“长期记忆”的任务来说,尤其好用。
但也因为引入了很多内容,导致参数变多,也使得训练难度加大了很多。因此很多时候我们往往会使用效果和LSTM相当但参数更少的GRU来构建大训练量的模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。