16372212 / NLP_learning

record some points and cods
0 stars 0 forks source link

Convolutional Neural Networks for Sentence Classification #1

Open 16372212 opened 3 years ago

16372212 commented 3 years ago

paper: Convolutional Neural Networks for Sentence Classification github: CNN_sentence

daedae-cc commented 3 years ago

CNN卷积神经网络

word vectors:句子中的词语对应的依次(从上到下)排列的矩阵,假设句子有 $n$ 个词,vector 的维数为 $k$,那么这个矩阵就是 $n \times k$ 的。这个矩阵的类型既可以是 static,也可以是 non-static 的。

static:word vectors 是固定不变的。

non-static:在模型训练过程中,word vectors 也当做是可优化的参数,通常把反向误差传播导致 word vectors 中值发生变化的这一过程称为 fine-tuning

$\text{1-of-V}$ encoding:每一个词用一个向量表示,向量的维度就是所有可能的词的数量,假如有10万个,那 $\text{1-of-V}$ encoding的维度就是十万维。每一个词,对应其中一维。用这种方式描述一个词,这个描述向量信息不丰富,不同词的词向量都是不同的,那就没办法知道词与词之间的关系。

模型训练和调参

四个模型

结论

daedae-cc commented 3 years ago

Ye Zhang等人基于Kim Y的模型做了大量的调参实验之后的结论:

Ye Zhang等人给予模型调参者的建议:

16372212 commented 3 years ago
Title background solution/contribution(系统还是算法贡献) question
Convolutional Neural Networks for Sentence Classification 现有的用于句子分类的方法有RNN, Fast-RNN,LSTM 提供了一个简单的cnn。基于预训练的word vectors训练一个CNN,从而用于句子分类。并对CNN-vector做了微调:CNN-rand, CNN-static, CNN-non-static, CNN-multichanne 那text的时间序列怎么办

模型说明:

two ‘channels’ of word vectors: one keep static, another fine-tuned via backpropagation.正则:l2正则

img

Input layer -> Convolution layer -> max pooling layer -> full connected layer+softmax layer

Image

Methods

Question

  1. 一般不是用rnn or LSTM做文本分类吗,为什么这个用cnn, 那text的时间序列怎么办( 样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要

  2. 现在用LSTM, RNN, Fast-RNN的算法解决文本分类。那么文中的CNN与这些主流文本分类算法的优缺点是什么?

daedae-cc commented 3 years ago

CNN也是将语言视为一个序列的,filter 是沿着时间维度在移动。 CNN比RNN更并行化,它在每个时间步长的状态只依赖于本地上下文, RNN要依赖过去所有的状态。

16372212 commented 3 years ago

CNN 与 RNN在文本分类的比较: 1、An RNN is trained to recognize patterns across time, while CNN learns to recognize patterns across space. 但是在一些分类任务,比如情感分类,一些关键词起着决定性作用。比如“生气了”,“皱眉”等,因此,在这类问题中,CNN的效果也非常exciting. 但是对于翻译任务之类的任务,需要考虑全局的信息,上下文都很重要,因此RNN的效果会更出众。

2、 速度不同,CNN里较费时间的就是卷积了。但是RNN还需要记录上下文各种信息,速度很慢