一维卷积在语义理解中的应用,莫斯科物理技术学院(MIPT)开源聊天机器人DeepPavlov解析及代码

莫斯科物理技术学院(MIPT)前不久开源了聊天机器人DeepPavlov(基于TensorFlow和Keras),对于有志学习NLP的同学是个不错的借鉴。其中的语义理解分类模块,不是采用的马尔科夫随机场(CRF)或RNN, 而是使用一维卷积去做语义分类:

来自:https://arxiv.org/pdf/1408.5882.pdf

这一模型是来自纽约大学的论文:Convolutional Neural Networks for Sentence Classification,用一维卷积为句子的语义分类。

值得注意的是,上图模型中,第一层句子的词嵌入输入(embedding)并不是单个通道,而是两个通道的。每个通道用相同的word2vec的embedding方法初始化(表征同一个句子),有意思的是,文章指出,把其中一个通道的词表征静态化(static),而另一个通道的词表征设为可训练的(non-static),这样两个通道组合在一起可以有更好效果。 继续阅读一维卷积在语义理解中的应用,莫斯科物理技术学院(MIPT)开源聊天机器人DeepPavlov解析及代码

你想要的神经网络自动设计,谷歌大脑帮你实现了:用参数共享高效地搜索神经网络架构(ENAS)

所有高级的创造,似乎都有一些“搜索”和“拼凑”的“智能” — David 9

模型自动设计已经不是新鲜事(H2O 的AutoML谷歌的CLOUD AUTOML)。但是,高效的神经网络自动设计还是一个较有挑战性的课题(单纯用CV选模型太耗时间) 。谷歌大脑的这篇新论文就提供了一种高效的搜索方法,称之为:Efficient Neural Architecture Search(ENAS)

对于老版本强化学习的NAS,需要21天搜索出的cnn模型,ENAS只需要3小时就可以搜索出相同准确率的模型:

例子:对于CIFAR-10数据集ENAS搜索出的具有4.23%错误率的模型,只需要3小时左右。 来自:https://arxiv.org/pdf/1802.03268.pdf

作者把这样的效率提高归功于候选子模型的参数共享上(相似子模型可以模仿迁移学习使用已有的权重,而不需要从头训练)。

为简单起见,我们先从生成四个计算节点的RNN循环神经网络进行解释:

来自:https://arxiv.org/pdf/1802.03268.pdf

即使是只有四个计算节点的RNN,也有多种有向无环图(DAG)的生成可能,如上左图,红色的箭头生成的RNN才是我们在右图中看到RNN。 继续阅读你想要的神经网络自动设计,谷歌大脑帮你实现了:用参数共享高效地搜索神经网络架构(ENAS)

David 9的循环神经网络(RNN)入门帖:向量到序列,序列到序列,双向RNN,马尔科夫化

rnn似乎更擅长信息的保存和更新,而cnn似乎更擅长精确的特征提取;rnn输入输出尺寸灵活,而cnn尺寸相对刻板。— David 9

聊到循环神经网络RNN,我们第一反应可能是:时间序列 (time sequence)。

确实,RNN擅长时间相关的应用(自然语言,视频识别,音频分析)。但为什么CNN不容易处理时间序列而RNN可以? 为什么我们之前说过RNN有一定的记忆能力?

数学上,如果我们想要预测一个单词x 的后一个单词y,我们需要3个主要元素(输入单词xx上下文状态h1;通过xh1输出下一个单词的函数比如softmax):

来自:http://suriyadeepan.github.io/2017-01-07-unfolding-rnn/

数学计算如下:

htan(W1x+b1)

tan(W2h1+b2)

softma(o)

上面是一个很简单的有向无环图(DAG), 继续阅读David 9的循环神经网络(RNN)入门帖:向量到序列,序列到序列,双向RNN,马尔科夫化