Character-Aware Neural Language Models
参考链接
参考论文:https://arxiv.org/pdf/1508.06615v4.pdf
模型架构
整体架构图
-
说明:
- 该图描述的是一个典序的语言模型,当前的输入词是absurdity,预测词是is。
- 第一步:查找character embeddings得到absurdity个字符的向量(维度为4),并将这些向量拼接成一个词矩阵.
- 第二步:将包含多个过滤器的卷积神经网络作用到矩阵上,过滤器的个数为12个:3个大小为2的(蓝色),4个大小为3的(黄色),5个大小为4的(红色)。
- 第三步:应用最大池化层,获取固定维度的词向量表示。
- 第四步:使用highway network作用在上面输出的固定维度的向量。
- 第五步:将highway network的输出作为多层的LSTM-RNN的输入。
- 第六步:将LSTM-RNN中最顶层的输出喂到最后的全连接层+softmax层得到下一个词的概率分布。
循环神经网络(Recurrent Neural Network)
- 一般RNN的计算公式如下:其中和为模型参数,为当前位置的词向量,是上一时刻的隐藏层状态。理论上,RNN可以用隐藏状态汇总从开始到时间的所有历史信息。但是实际上,由于消失/爆炸的梯度,学习远程依赖信息是困难的。
- LSTM-RNN解决了学习长距离依赖关系的信息的问题,通过在RNN中增加一个记忆单元。具体计算公式如下:和是族元素的sigmoid函数和双曲正切函数。是逐点乘积
- LSTM中的缓解梯度消失的问题但是梯度爆炸依然存在。通过简单的梯度优化操作(gradient clipping)能够很好的解决这个问题。
字符级卷积神经网络(Character-level Convolutional Neural Network)
- 假定表示字符表,为词汇表,为字符向量矩阵,为词汇表中的一个词,由字符长度为,则词经过可以表示为矩阵为过滤器,其中为过滤器宽度,为卷积层的输出,其计算公式:表示A和B的Frobenius内积。其中表示复数的共轭数(将复数部分的符号取反),表示内积,矩阵的迹。
注意:当A,B为实数矩阵式,其结果就是对应元素相乘再求和 - 由上面公式我们可以看出来是一个向量长度为:.所以卷积层的输出就是一个矩阵长度为12(12个过滤器).则卷积层后面的最大池化层公式为:由公式可知y是一个长度为12的向量。
Highway Network
- 我们可以直接将最大池化层是输出向量作为词向量了输入到LSTM-RNN中,也可以得到一个不错的性能。但是我们将再经过一个多层的全连接层再输入到LSTM-RNN确发现效果变得更差。
- 在最大池化层加上一个highway network可以改善模型性能,highway network的公式如下:注意:y和z的形状必须相同所以W_T,W_T必须是方正