自然语言处理实战——卷积神经网络(CNN)


前言

前文表述过语言的意义隐藏在文字的背后,蕴藏在形成词的特定组合意图和情感中。
在感知机逐渐发展为前馈网络(多层感知机)的过程中,原本设计神经网络的最初目的是作为一个学习量化输入的机器,而神经网络已然由处理分类、回归问题演变到生成新文本的任务了。

一、卷积神经网络是什么?

神经网络是什么?
先解决这个问题:就像是阿凡达丛林中各种轴突树突之间的关系,经过训练过程可以不断优化得到训练结果的参数集合。
卷积神经网络:顾名思义,多了一个卷积,而卷积是什么?可以称为滤波器、卷积核、特征检测器。可以理解为一直卷一直求积,这也是卷积核计算的原理,至于这种原理可以在基础课本中看到具体的运行机制。

二、卷积神经网络的细节。

1.构建块

被卷积的原始输入,我理解的。

2.步长

卷积核一次移动的距离

3.卷积核的组成

权重+激活函数(RELU)

4.填充

某一向量过长或者过短导致矩阵长短不一,故需要填充null或者0

5.学习

权重不断更新的过程
分类器根据各个输入数据,从期望标签中获得一定的误差值,并通过激活函数将输入数据反向传播给卷积核。对于误差值的反响传播,计算误差对输入权重的导数。

6.窗口

如何滑动窗口对模型本身没有影响,保证按照与窗口在输入上的位置相同的方式重构输出即可。

三、卷积神经网络的流程

1.准备数据

2.向量化数据

使用停用词得到一个信息有损失情况下的卷积神经网络的基线性能。
单独训练word2vec模型可以确保有更好的向量覆盖率。

3.划分训练/测试集合

填充操作使输入大小保持一致,对训练样本的开头和结尾填充都需要单独考虑,取决于是否希望输出具有相同的大小以及结束位置上的词条是否与中间位置上的词条作相同的处理或者是否对起始/结束词条区别对待。

4.设置CNN参数

网络输入的样本数量batch_size、词条向量的长度embedding_dims、卷积核数量filters、卷积核大小kernel_size、神经元数量(潜亏网络中传播链端点)hidden_dims.

5.填充及截断词条序列

keras中预处理方法:pad_sequences;但只对标量数据有效,对向量数据需要辅助函数。

6.构建一维CNN

7. 池化

这是一种降维方法,缓解输出过多的情况,此方法下的丢弃数据也是学习源数据高阶表示的一种有效途径。
如果原始输入在相似但有区别的输入样本中的位置发生轻微变化,则最大池化层仍然会输出类似的内容。

7.dropout

是一种防止过拟合的技术,按照一定比例关掉进入下一部分的数据

8.输出

9.编译CNN

10.优化

训练阶段的一些优化政策,如随机梯度下降、Adam、RSMProp。

11.拟合

12.训练CNN

13.保存模型

14.加载模型

15.测试样本

16.预测

总结

这是一个卷积神经网络训练的过程,NLP分类任务会选择使用CNN高效率的神经网络。
大概能够理解cnn的运行过程,但是如何取得相应的实验成果还是没有概念,所以打算在《pytorch自然语言处理》这本书中寻找答案,下周。

本人才疏学浅,希望大家提些建议。感恩不尽。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值