1 前言
今天分享一篇2019年ACL的paper(Hierarchical Multi-label Classification of Text with Capsule Networks),论文下载链接。论文主要讲述使用胶囊网络(capsule network)进行层级多元标签识别任务。胶囊网络是Hinton提出来的一种新的网络结构,主要是用向量替代标量进行表征学习和预测。一些实验结果表明,相对cnn,lstm来说,胶囊网络在处理结构信息或者层级信息上有一定优势。也是正处于这一点,作者应用了此结构。
2 关于Capsule Network
从本质上说,胶囊网络的提出主要解决池化的问题。我们都知道,在CNN结构中,池化是一个标配过程,但不论max-pooling,mean-pooling,还是其他形式,都会存在一个问题:池化过程中会丢失一些信息,如位置,方向等信息。但池化的作用就是保留关键特征信息,舍弃一些次要或者没用的信息,它这个优点也是它的缺点。
CNN人脸识就上面这种图来说:CNN在进行人脸识别时,它主要去识别图像中是不是有“眼睛”、“嘴”等人脸特征,至于这些特征如何分布的,它是不考虑的。所以右边的“人脸图”也是CNN预测正确的一种,但实际上是不对。
为了解决上述问题,Hinton提出capsule network,其网络结构如下图: capsule network]
大致思路是先进行正常卷积,然后使用squash函数,将标量转成向量形式,生成PrimaryCaps;接着利用动态路由的算法(dynamic routing),生成类别capsules,用向量的长度来代表属于该类别的概率。
动态路由算法属于一种迭代算法,详细有兴趣建议详细去读原文《Dynamic Routing Between Capsules》。
3 Model
在本篇论文中,作者就是应用capsule network基本结构进行multi-label预测的。 Model从模型图上看,就是一个capsule network标准结构。需要提下就是:作者在训练的时候,考虑到标签的层级性信息,他利用各个标签的出现概率,然后初始化了一些参数,是论文中的一个小trick。此外,在预测的时候,如果一个标签的父类没预测对,那么不论子类是否预测正确都当预测错误处理。损失函数采用margin loss,跟原始论文是一致的,如下图。
loss function
4 Experiments.
在实验部分,作者使用两个数据集,一个是公开的,另一个是自己发布的关于图书标签的数据集。数据集情况如下图: 数据集样例。
在对比中,作者选取了SVM,CNN,LSTM作为baseline,其表现效果如下图:
results
从结果来看,capsule network没有明显的优势,在自己的BGC数据上取得优势结果,但也不是很大。可能因为这篇论文的结果,导致这篇论文只是被ACL workshop收录,作者在文中也说是想做一次尝试。
5 结论
本次分享主要通过这篇论文大概介绍capsule network。胶囊网络是Hinton大牛2017年提出的,近年还是有一部分在跟着研究。就目前来看,这个方向可能没那么明朗,不过在有些具体任务上,它还是有一定优势的。我想它还是存几个问题:1.虽然用向量代替标量进行表征,这种向量形式究竟携带多少有用信息,它也可能包含噪声特征,影响最后的预测;2.使用动态路由的迭代计算方法,导致计算很缓慢,跟CNN相比,效率处于绝对的劣势。最后,可能Hinton等其他大牛仍在解决这些问题,若后续有更好的改进方案,那capsule network会有更大的发挥空间,尤其是NLP领域。
网友评论