Dawn's Blogs

分享技术 记录成长

0%

NLP学习笔记 (7) CNN与RNN

CNN

对于图片而言,通常使用 CNN(卷积神经网络)。

简化全连接神经网络

若使用全连接神经网络,则参数很多,容易过拟合。

对于图片检测而言,也行不需要看整张图片,只需要看到图片的一部分(所以提出 Receptive Field),就可以检测 pattern。CNN 的简化方式就是一个 Receptive Field 对应于一个神经网络单元。典型的 Receptive Field 设置如下:

  • 一个 Receptive Field 包含了图片的所有 channel(深度),长度 × 宽度被称为 kernel size。
  • Receptive Field 移动的距离称为步长(stride)
  • 若 Receptive Field 超出了图片的范围,需要填充(padding)

1657158365832

共享参数

对于图像识别而言,同一个 pattern 的位置可能不同,Receptive Field 用于检测 pattern。

所以对于不同位置的 Receptive Field,可以共享参数(因为尽管这些 Receptive Field 在不同位置,但是它们在检测同一个 pattern)。

1657158755492

Convolutional Layer

Respective Field + 参数共享 = Convolutional Layer(卷积层)。

卷积层中含有很多 filter(一个 filter 相当于一个 Respective Field,filter 中的参数相当于 Respective Field 送入神经网络单元的权重/参数)。

卷积层产生的输出称之为 Feature Map,这可以看作是一个新的图片,图片的 channel 等于 filter 的个数。

池化

池化(Pooling)相当于缩小图片,在人类看来缩小图片,不会影响到 pattern 的检测。

如,Max Pooling:将图片分成多块,提取出每个块中最大的值。

组合起来

在卷积和池化之后,将得到的结果(相比于原始图片小了很多)送入全连接神经网络,就得到了完整的 CNN 网络。

1657160205164

RNN

基本结构

RNN 中,会将上一次输入的产生的东西保存下来,作为本次的一个输入。

分为 Elman Network 和 Jordan Network:

  • Elman Network:保存的是 hiden layer 的值。
  • Jordan Network:保存的是 output 的值。

1657161992754

双向 RNN

RNN 可以是双向的,训练一个正向 RNN 和一个逆向 RNN,将正向和逆向的输出合并起来进行输出。

1657162262353

LSTM

LSTM(Long Short-term Memory)

1657162786833

1657163055876

1657164185170