Convolutional Neural Network for Sentences Classification 笔记

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, 里面的字随机初始化成向量vector x i ∈ R k x_i \in\mathcal{R}^k xiRk,通过训练去调整,也就是所有的字其实都是要训练的parameter,个人认为这个需要很大的数据训练,所以这个model必然overfit. 这一系列的向量自称一条长为n的句子,如果每个字代表一个长为 k k k的行向量,则可将整个句子写成一个 k × n k\times n k×n的矩阵。Convolution filter w ∈ R h k w \in \mathcal{R}^{hk} wRhk,即每个feature c i c_i ci 应该与h个连续单词(将这些单词写作 x i : i + h − 1 x_{i:i+h-1} xi:i+h1,意即取了矩阵中的第 i i i i + h − 1 i+h-1 i+h1行)有关,这个想法在某个方面上很像Local Attention mechanism. 公式为 c i = f ( w ⋅ x i : 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 map c = [ c 1 , c 2 , . . . , c n − h + 1 ] \mathbf{c} = [c_1,c_2,...,c_{n-h+1}] c=[c1,c2,...,cnh+1],其中 c ∈ R n − h + 1 c\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有不同的 h h h: 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上并且结果也要用于计算 c i c_i ci的计算(感觉这里和其他的CNN不同,因为一般channels的number应该是和kernel的深度一致,但这里似乎没有,仿佛是分开计算的一样,可能我这里理解错了)。 每个model都不可避免需要做regularization, 本文用了dropout在penultimate layer (with a constraint on l 2 l_2 l2=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 ) + b y = \mathbf{w}\cdot(\mathbf{z}\odot \mathbf{r}) + b y=w(zr)+b, 而不是 y = w ⋅ z + b y = \mathbf{w}\cdot\mathbf{z} + b y=wz+b. ⊙ \odot 是element-wise multiplication operator, 它就像一个mask,对其中的元素有概率为 p p p遮住不让它传到下一层。
    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的参数,但保持另一个的参数。
### 回答1: 卷积神经网络 (Convolutional Neural Networks, CNN) 是一种常用于文本分类的深度学习模型。它通过卷积和池化层来提取文本中的特征,并使用全连接层来进行分类。 CNN 的一个优点是能够处理变长的输入,并且不需要对文本进行预处理。 ### 回答2: 卷积神经网络是一种深度学习方法,用于对文本进行分类。在训练过程中,这种网络可以自动学习输入数据的特征表示。卷积神经网络中的卷积层可以识别输入中的局部模式,这些局部模式组合起来形成更高级别的特征,最终帮助分类器确定类别。对于文本分类问题,卷积神经网络的输入是文本的词嵌入向量,可以从先验知识中自动学习特征。 在一些文本分类任务中,卷积神经网络已经取得了很好的表现。文本分类任务通常被分为两种类型:二元分类和多分类。二元分类任务是指将数据分为两类,例如垃圾邮件和非垃圾邮件。多类分类任务是指将数据分为多类,例如新闻分类。在这两种任务中,卷积神经网络都能够进行有效的分类。 对于二元分类任务,卷积神经网络可以使用一个输出节点,并使用 sigmoid 激活函数将输入映射到 0 到 1 之间的概率。对于多分类任务,卷积神经网络可以使用多个输出节点,每个节点对应一个类别,并使用 softmax 激活函数将输入映射到 0 到 1 之间,并且所有输出节点的和为 1。 要训练卷积神经网络进行文本分类,需要对模型进行三个主要的训练步骤。首先,需要构建词嵌入矩阵,该矩阵将文本中的每个词都映射到一个向量。然后,需要将文本数据转换为卷积神经网络所需的格式。最后,需要对模型进行训练,并根据测试数据进行评估。 总之,卷积神经网络已经被证明是一种强大的工具,可以用于文本分类等任务。在处理文本数据时,卷积神经网络可以自动学习输入数据的特征表示,并使用这些特征来确定文本的类别。 ### 回答3: 卷积神经网络(CNN)是一种深度学习模型,它在图像识别、计算机视觉和自然语言处理中表现出色。最近几年,CNN 在句子分类中也获得了很大的成功。 CNN 句子分类模型的输入是一个序列,输出是类别标签。与传统的 RNN 模型不同之处在于,CNN 可以使每个神经元只能捕获一个固定大小的区域的特征,从而加快模型的训练和降低了模型的复杂度。 CNN 句子分类模型的基本架构包括词嵌入层、卷积层、池化层和全连接层。词嵌入层将输入的文本转化为向量表示。卷积层通过滑动窗口对输入的序列进行卷积操作,提取出局部特征。池化层在每个滑动窗口上提取出一个最大值或平均值,进一步降低维度。最后,全连接层将提取出的特征传递到输出层进行分类。 CNN 句子分类模型的优点在于它可以处理不定长的文本序列,并在仅有少量特征的情况下表现出色。但是,CNN 模型的缺点在于不善于处理长期依赖关系,例如情感分析中的Irony识别。为了解决这个问题,可以引入 RNN 或 Transformer 等模型。 总的来说,CNN 模型为句子分类问题提供了一个简单有效的解决方案。在实践中,需要根据具体的任务选择合适的模型结构和参数设置,才能取得最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值