深度学习之卷积神经网络CNN理论与实践详解

概括

大体上简单的卷积神经网络是下面这个网络流程:

笼统的说:

文本通过Embeding Layer 后,再通过一些filters进行过滤,对结果进行maxPooling,再经过线性层映射到类别上,最后经过Softmax,得出类别分数。

细致的说:

就得慢慢分析了,as follows:

第一层:将Embeding进行filter

设 Embeding大小为:EmbedSize

边解释专有名词边讲述过程:

Channel: 每个单词的向量是上图的对应的行。这里的一个句子形成一个二维矩阵,这里二维矩阵叫做 一个channel。

Filter:过滤器,有时候也叫做kernel。图片处理的filter大小可以根据情况选择不同的正方形的filter;而自然语言处理中,每行表示一个特征,不能分离,所以这里的filter的长为EmbedSize,而宽呢?一般设置为奇数3,4,5(这些都是经验值,当然可以设置成别的值,但是不推荐。宽为偶数的特别少见,一般不用)。这里的Filter在和计算的时候,是和Embeding矩阵对应位相乘,最后相加,得出一个结果,公式为y = W*X + b(有没有b,自己决定)最后随着滑动,得到一个新的矩阵。

Strides: 步长。也就是滑动的距离。无论向右滑动还是向下滑动都是这个大小。(因为这里的Filter长为EmbedSize,所以,这里只能向下滑动)

Filter后的输出矩阵大小为:(n-f+1)/s+1 * 1 其中n为句子的长度,f为Filter的宽,s为Stride。可以看出,不同的Filter对应的输出矩阵大小是不一样的。所以,提出Padding。

Padding:四周填充0。它的用途有两个:1.解决输出大小不一致的问题。2.解决信息丢失的问题(主要是角上的信息)。

所以这时候的矩阵输出为:(n-f+2p+1)/s+1 * 1(p为pooling大小), 一般默认s为1,所以为了使输出的矩阵高为n,则

n-f+2p+1 = n

即:

p = (f-1)/2 (f为一般为奇数,所以p = (f-1)//2)

这里在pytorch里的网络层代码:

最后的矩阵记得要经过一个激活函数。

数据流动:

第二层 maxPooling最大池化

有时候这个也说不算是一个层,因为不含参数。

将第一层得到的m个二维矩阵,进行maxPooling,最终变成m*1的矩阵。(m为相同Filter的个数*Filter种类)

数据流动代码:

第三层 Fully Connected Layer全连接层

将上面的m*1维的数据进过一个线性层,映射到k*1上。(k是种类个数)

再进行Softmax,得到最终分类。

这里在pytorch里的网络层代码:

数据流动代码:

注:代码里没有Softmax,是因为之后用到的Loss函数里默认有。

ok,这里就讲完了。最近在想CNN好想不太适合做立场检测,觉得LSTM应该更为合适,接下来系统理论的学习下LSTM网络。

原文发布于微信公众号 - 深度学习自然语言处理(zenRRan)

原文发表时间:2018-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

从机器学习学python(四) ——numpy矩阵广播及一些技巧

从机器学习学python(四)——numpy矩阵广播及一些技巧 (原创内容,转载请注明来源,谢谢) 在学ng的深度学习微专业时,其中有几节课讲到numpy的一...

4384
来自专栏瓜大三哥

视频压缩编码技术(H.264) 之结构

视频的一场或一帧可用来产生一个编码图像。通常,视频帧可分成两种类型:连续或隔行视频帧。在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。显然,这时场内邻行...

1231
来自专栏机器之心

教程 | 从头开始在Python中开发深度学习字幕生成模型

4154
来自专栏Python数据科学

一款非常棒的特征选择工具:feature-selector

本篇主要介绍一个基础的特征选择工具feature-selector,feature-selector是由Feature Labs的一名数据科学家williamk...

2444
来自专栏AI研习社

干货 | 一篇文章教你用TensorFlow写名著

前言 最近看完了 LSTM 的一些外文资料,主要参考了 Colah 的 blog以及 Andrej Karpathy blog的一些关于 RNN 和 LST...

3955
来自专栏人工智能LeadAI

ResNet原理及其在TF-Slim中的实现

01 摘要 微软的深度残差网络ResNet源于2016年CVPR最佳论文---图像识别中的深度残差学习(Deep Residual Learning for I...

5377
来自专栏人工智能LeadAI

用CNN做句子分类:CNN Sentence Classification (with Theano code)

01 Intro 本篇文章来细说CNN在NLP中的一大应用————句子分类。通过Yoon Kim的论文介绍一个应用,分析代码,并重构代码。 重构后的代码放在gi...

7235
来自专栏机器学习、深度学习

人脸对齐--How far are we from solving the 2D & 3D Face Alignment problem

How far are we from solving the 2D & 3D Face Alignment problem? (and a dataset ...

5699
来自专栏机器学习养成记

决策树(R语言)

决策树是有监督学习算法中的一种。基于属性做一系列的决策,每次决策要么进入下一级决策,要么生成最终结果。决策树可以作为集成算法中的基分类器,并且有最为广泛的应用。...

34111
来自专栏梦里茶室

TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

全连接神经网络 辅助阅读:TensorFlow中文社区教程 - 英文官方教程 代码见:full_connect.py Linear Model 加载lesso...

21110

扫码关注云+社区

领取腾讯云代金券