对[建][原]TextCNN原理的详细解释(1)

  • A+
所属分类:随便撸

\\N

\\N

我最近一直在研究TextCNN算法,我将每周更新一系列内容,其中大致包括以下内容:

TextCNN基本原理及优缺点详细说明TextCNN代码(与Gitub Link)TextCNN模型实践迭代经验总结TextCNN模型部署TF-服务实践摘要

今天,我们主要讨论TextCNN的基本原理和优缺点,包括网络结构、如何更新参数和应用场景等。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

一.什么是TextCNN?

\\N

当我们提前使用CNN时,我们通常认为它属于计算机视觉方向的CV领域,但2014年,Yoon Kim对CNN的输入层进行了一些变形,并提出了文本分类模型TextCNN。与传统图像的CNN网络相比,TextCNN的网络结构没有变化(甚至更简单)。从图1可以看出,textCNN实际上只有一层卷积,一层最大池,最后将输出从Softmax分类为n。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

\\N

图1 TextCNN架构

\\N

与图像中的CNN网络相比,TextCNN与图像中的网络最大的区别是输入数据的差异:

\\N\\

图像是二维数据,图像的卷积核从左向右滑动,从上到下滑动提取特征。

\\N

自然语言是一维数据.虽然二维向量是由字嵌入产生的,但从左向右滑动单词矢量是没有意义的。例如,与“今天”[0,0,0,0,0,1]对应的向量按照1*2的窗口大小从左到右滑动,以得到[0,0],[0,0],[0,0],[0,1]与单词\\“day\\”对应的[0,0],[0,1]。这种滑动是没有帮助的。

\\N\\

Front / in? Be careful in the front / in the bow / in front

\\N

TextCNN的成功不是网络结构的成功,而是通过引入经过训练的词向量,在多个数据集中超越基准的性能,这进一步证明了构建更好的嵌入是提高NLP任务的关键能力。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

二.TextCNN的优势

\\N\\

TextCNN最大的优势是网络结构简单。在该模型网络结构简单的情况下,通过引入经过训练的词向量,并在多个数据集中超越基准,仍然取得了良好的效果。

\\N

网络结构简单,参数少,计算量少,训练速度快。在V 100单板机上,可对165万个数据进行训练,迭代260000步,在半小时内达到收敛速度。

\\N\\

Front / in? Be careful in the front / in the bow / in front

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

三.TextCNN进程

\\N

1.词嵌入分词构造词向量

\\N

如图2所示,textCNN首先对\\“今天天气好,出来玩”,今天/天气/非常好/,/出柜/播放,通过嵌入单词2vec或GLOV将每个单词映射为一个5维(维度可以指定)字向量,例如\\“今天”->;[0000001,1],\\“天气”->;[000010],\\“好\\”->;[0,0,10,0]等等。

\\N

\\N

图二文字嵌入

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

这样做的主要好处是使自然语言数字化,并便于随后的处理。从这里还可以看出,不同的映射方法将对最终结果产生很大的影响。如何将自然语言映射到更好的词向量是目前NLP研究的热点。在构造了单词向量后,将所有的单词向量放在一起,形成一个6≤5的二维矩阵作为初始输入。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

2.卷积

\\N

\\N

图3卷积示意图

\\N

卷积是一种数学算子。让我们用一个简单的例子来说明

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

步骤1将“今天”/“天气”/“非常好”/\\“,”相应的4≤5矩阵和卷积核进行逐点乘法,然后进行求和,即卷积运算:

\\N

特征地图[0]=0*1+0*0+0*1+0*0+1*0+/(第一行)

\\N

0+0+0+0+0+1+0+0+/(line 2)

\\N

0 1+0 0+1+0+0+0+/(line 3)

\\N

0+1+0+0+0+0+0/(line 4)

\\N

=1

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

步骤2将窗口滑下网格(滑动距离可以自行设置),\\“≤\\”/“out”对应的4个5矩阵和卷积核(权重不变)继续进行逐点乘法和。

\\N

特征地图[1]=0*1+0*0+0*1+1*0+0*0+/(第一行)

\\N

0+0+0+1+0+0+0+0+0+/(line 2)

\\N

0+1+0+0+0+0+0+/(line 3)

\\N

1 http://www.xiaobailm.com]1+0+0+1+0+0+0<;b>;[小白联盟运营网络资金项目http://www.xiaobailm.com]<;/b>;/(第4行)

\\N

=1

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

步骤3将窗口滑下网格(滑动距离可以自行设置)\\“Good\\”/\\“out\\”/\\“播放”相应的4≤5矩阵和卷积核(权重不变)继续进行逐点乘法和。

\\N

特征地图[2]=0*1+0*0+1*1+1*0+0*0+/(第一行)

\\N

0+1+0+0+0+0+0+0+/(line 2)

\\N

1 1+0 0+0+1+0+0+0+/(line 3)

\\N

0 1+0+0+1+0+1/(line 4)

\\N

=2

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

特征映射是卷积后的输出。通过卷积运算将输入的6≤5矩阵映射到3≤1矩阵。这种映射过程与特征提取的结果非常相似,因此最终的输出称为特征映射。通常,在卷积后存在一个激活函数,为了简化描述,我们将激活函数设为f(X)=x。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

3.渠道说明

\\N

\\N

图四通道说明

\\N

在CNN中,人们常提到信道中的深红色矩阵和亮红色矩阵,图3形成两个通道,统称为卷积核。从这张图中还可以看出,每个通道不必严格相同,每个4≤5矩阵和输入矩阵都要进行卷积运算才能得到特征图。在计算机视觉中,<;b>;(通过刷应用程序赚钱的能力,每天看视频)<;/b>;,因为彩色图像中有三种颜色,每种颜色代表一个频道。

\\N

根据本文作者的描述,引入通道是为了防止过度拟合(通过保证学习的向量不会过多偏离输入),从而在较小的数据集中获得比单通道更好的性能,但后来发现正则化的直接使用效果更好。

\\N

然而,使用多通道可以使用不同的字嵌入,对于每个信道来说,例如可以在非静态中传播的微调字向量(梯度可以传播回来),使得字向量更适合当前的训练。

\\N

对于信道在TextCNN中是否有用,本文的实验结果表明,多通道对模型的分类能力没有明显的改善。单通道在7个数据集上的TextCNN性能优于多通道TextCNN。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

\\N

图5 TextCNN实验

\\N

我们还想介绍这四种模式之间的不同之处。

\\N\\

CNN-RAND(单通道)设计嵌入尺寸的超参数,随机初始化不同单词的向量,并在BP后对其进行调整。

\\N

cnn-静态(单频道),直接从Word2vec、FastText或手套中获取预训练向量,在训练过程中不再调整单词向量。

\\N

cnn-非静态(单频道),预训练向量+微调,采用Word2vec(刷一些信息网络、互联网信息产业文化和娱乐网站http://www.shuadianzixun.com]<;/b>;初始化)训练的单词向量<;b>;,然后在培训过程中对它们进行微调。

\\N\\

CNN-多频道(多频道),类比于RGB频道中的图像,也可以用静态和非静态两种频道来构建。

\\N\\

Front / in? Be careful in the front / in the bow / in front

\\N

4. Maxpool

\\N

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

图六:最大池的描述

\\N

在获得feamap=[1,1,2]后,选择一个最大值[2]作为输出,即最大池。最大池在维护主要功能的同时,大大减少了参数的数量。如图5所示,功能地图已从三维变为一维,具有以下两个优点:

\\N\\

降低了过拟合的风险,特征图=[1,1,2]或[1,02]的最终输出为[2],表明初始输入,即使有轻微的变形,也不影响最终的识别。

\\N

减小了参数,进一步加快了计算速度。

\\N\\

池本身不能带来平移不变性(图像中有一个字母A,无论字母A出现在哪里都可以在CNN网络中识别),并且可以得到卷积核的权重分担。

\\N

最大池的原则主要是从多个值中取最大值,这是不可能的。CNN可以实现平移不变性,因为当滑动卷积核时,所使用的卷积核的权重是固定的(权重分担)。假设卷积核被训练成识别字母A,当卷积核在整个图像上滑动时,当然可以识别出整个图像的A。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

5.使用Softmax k分类

\\N

\\N

图六:Softmax的示意图

\\N

如图6所示,我们将最大池的结果拼接到Softmax中,以获得每个类别的概率,例如标记为1的概率和标记为-1的概率。如果这是一个预测,整个文本CNN的过程就在这里。

\\N

如果是训练,则根据预测的标号和实际的标号计算损失函数,计算Softmax函数、最大池函数、激活函数和卷积核函数的参数梯度,依次更新四个函数的参数并完成一轮训练。

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

Front / in? Be careful in the front / in the bow / in front

\\N

五.CNN文本摘要

\\N

文本CNN是一种基于CNN网络的文本分类模型。

\\N\\

TextCNN处理:首先,文本分词嵌入得到单词向量,字向量通过一层卷积,一层最大池,输出外部Softmax来做n个分类。

\\N

TextCNN的优点是模型简单,训练速度快,效果好。

\\N

TextCNN的缺点:这个模型是不可解释的。在调整模型时,由于TextCNN中的gbdt模型中没有类似于特征重要性(特征重要性)的概念,因此很难根据训练结果来调整具体的特征,因此很难评价每个特征的重要性。

\\N\\

关于如何调整TextCNN的经验的总结将在第三篇文章中总结,在下一篇文章中,我们将讨论textCNN的具体代码实现。

Front / in? Be careful in the front / in the bow / in front

分享当前页面将至少获得10%佣金,点此获取推广链接(规则说明)。

本站VIP源码资源永久免费下载!持续更新!www.526bt.com

加入999永久VIP会员带做项目包赚钱!教引流包搭建,社群资源共享!

新项目更新通知QQ群:767688774 站长技术交流QQ付费群:552760713

点击这里给我发消息备用QQ:点击这里给我发消息

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 源码安装视频教程
  • 教程项目网赚APP扫码下载
  • weinxin

admin
网站漏洞修复 网站木马清理 漏洞修复 漏洞检测 服务器安全维护
苹果签名200一月!不掉的苹果企业签名
彩世纪电脑+手机全套-建站 编号: 1053
提供APP打包服务,APP封装
点击注册

发表评论

您必须才能发表评论!