Convolutional Neural Network for Sentences Classification 笔记

AI助手已提取文章相关产品:

Convolutional Neural Network for Sentences Classfication

文章特点

  1. 仅用一个很简单的拥有少数hyperpamater tuning and static vectors 的CNN, 就提高了七个任务中的四个SOA(state of the art),其中包括sentiment analysis and question classification.
  2. 四个model:
    2.1 CNN-rand: 基准model, 里面的字随机初始化成向量vectorxi∈Rkx_i \in\mathcal{R}^kxiRk,通过训练去调整,也就是所有的字其实都是要训练的parameter,个人认为这个需要很大的数据训练,所以这个model必然overfit. 这一系列的向量自称一条长为n的句子,如果每个字代表一个长为kkk的行向量,则可将整个句子写成一个k×nk\times nk×n的矩阵。Convolution filter w∈Rhkw \in \mathcal{R}^{hk}wRhk,即每个feature cic_ici 应该与h个连续单词(将这些单词写作xi:i+h−1x_{i:i+h-1}xi:i+h1,意即取了矩阵中的第iiii+h−1i+h-1i+h1行)有关,这个想法在某个方面上很像Local Attention mechanism. 公式为ci=f(w⋅xi:i+h−1+b)c_i = f(\mathbf{w\cdot x}_{i:i+h-1} + b)ci=f(wxi:i+h1+b). 如果将这个filter运用到整个矩阵上, stride 为1的话, 就可以产生feature mapc=[c1,c2,...,cn−h+1]\mathbf{c} = [c_1,c_2,...,c_{n-h+1}]c=[c1,c2,...,cnh+1],其中c∈Rn−h+1c\in \mathcal{R}^{n-h+1}cRnh+1. 然后运用max-over-time pooling operation在这产生的feature map中取最大值,c^=max⁡{c}\hat{c} = \max\{\mathbf{c}\}c^=max{c}. 这个地方的目的其实是因为如果我们的filters有不同的hhh: variable sentence length, 这样我们最后得到的也能是一个向量,长度是filters的数量,否则可能每个output channel维度都不同。所以一个filter最后实际产生一个feature。 将所有filters产生的features形成一个penultimate layer(没想到倒数第二层也能有自己的名字), 而后通过一个full connected softmax layer,输出是labels的概率分布。
    (这里应该是2.2与2.3的内容哈哈哈)如下图所示,某个模型有两个channel: static channel 和 non-static channel,前者vectors保持固定,后者通过backpropagation进行微调。每个filter都要应用到两个channels上并且结果也要用于计算cic_ici的计算(感觉这里和其他的CNN不同,因为一般channels的number应该是和kernel的深度一致,但这里似乎没有,仿佛是分开计算的一样,可能我这里理解错了)。 每个model都不可避免需要做regularization, 本文用了dropout在penultimate layer (with a constraint on l2l_2l2=norms of the weight vector)。 通过随机的dropout的好处是防止hidden units的co-adaption(个人理解相当于参数之间的相关性,免得有一些参数其实最后变化永远都是一起变化的)。
    具体做法: 已知penultimate layer z=[c^1,...,c^m]\mathbf{z} = [\hat{c}_1,...,\hat{c}_m]z=[c^1,...,c^m], 我们用 y=w⋅(z⊙r)+by = \mathbf{w}\cdot(\mathbf{z}\odot \mathbf{r}) + by=w(zr)+b, 而不是y=w⋅z+by = \mathbf{w}\cdot\mathbf{z} + by=wz+b. ⊙\odot是element-wise multiplication operator, 它就像一个mask,对其中的元素有概率为ppp遮住不让它传到下一层。
    two channels for an example sentences
    2.2 CNN-static: 一个运用预训练得到的向量word2vec. 所有的词,包括未知的(被随机初始化),在训练过程中保持不变,并且只有其他参数进行学习。
    2.3 CNN-non-static: 与CNN-static很相似,只是在训练过程中,每次任务可以微调这些vectors,
    2.4 CNN-multichannel: 这个模型把word vectors弄两个set(里面初始的vector应该是一致的),每个filter都对两个channel同时工作,但是 gradients 只backpropagated 其中一个channel,也就是只微调其中一个channel的参数,但保持另一个的参数。

您可能感兴趣的与本文相关内容

### 关于卷积神经网络(CNN)的相关文献 以下是关于卷积神经网络的一些重要研究论文和资源,这些内容可以帮助深入理解其理论基础及其在不同领域中的应用: #### 早期经典工作 - **LeNet-5**: Yann LeCun et al., *Gradient-Based Learning Applied to Document Recognition* (1998)[^6]。这篇论文介绍了最早的卷积神经网络之一——LeNet-5,它被广泛用于手写字符识别任务。 - **AlexNet**: Alex Krizhevsky et al., *ImageNet Classification with Deep Convolutional Neural Networks* (2012)[^7]。这是第一个大规模展示深度学习能力的模型,在 ImageNet 图像分类竞赛中取得了突破性的成果。 #### 自然语言处理中的 CNN 应用 - Kalchbrenner, N., Grefenstette, E., & Blunsom, P. (2014). *A Convolutional Neural Network for Modelling Sentences*[^2]。该文章探讨了如何利用宽度卷积操作来捕捉句子中的短语级特征。 - Kim, Y. (2014). *Convolutional Neural Networks for Sentence Classification*. 这篇论文展示了简单的一维卷积层可以有效应用于文本分类任务,并成为后续许多工作的基准方法[^3]。 #### 结构优化与轻量化设计 - Howard, A.G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., Andreetto, M., & Adam, H. (2017). *MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications*[^5]。本文提出了基于深度可分离卷积的设计理念,显著降低了计算复杂度并提高了运行效率。 - Sandler, M., Howard, A., Zhmoginov, A., Chu, L.C., & Tan, J. (2018). *MobilenetV2: Inverted Residuals and Linear Bottlenecks*. 此版本进一步改进了前代架构,通过引入倒残差模块实现了更好的性能表现。 #### 基础原理讲解材料 除了学术期刊外,还有一些优秀的博客和技术文档能够帮助初学者快速入门: - Chris Olah 的博文系列提供了直观易懂的可视化解释。 - TensorFlow 和 PyTorch 官方教程也包含了丰富的实践案例供开发者参考。 ```python import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.conv_layer = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=(3, 3)) def forward(self, x): return self.conv_layer(x) ``` 以上代码片段定义了一个简单的二维卷积层作为演示用途。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值