神经网络基础篇五

600 阅读5分钟

感受野

image.png

从5x5的输入数据中拿3x3的小区域进行卷积,假设得到5,5这个值能感受到它前面的输入是3x3,第二次卷积得到值1,能感受到前一层是3x3。

image.png

同理蓝色区域的输入第一次卷积得到蓝色部分值,绿色区域第一次卷积得到绿色部分值。

对于第二次卷积结果1来说,它的感受野就是5x5。

最后这个值是前面原始输入数据中多少个值参与计算得到的,这个就叫感受野。

感受野的作用

这个值的感受野如果只是一个小区域,是不是有点局限?如果这个值的感受野是一个整体,有前景、背景、干扰因素、主体因素,然后进行各种各样的筛选,各种各样的组合得到的结果值,这个特征是不是就觉着挺好的,所以一般情况下,希望感受野越大越好。

堆叠小卷积的优势

如果堆叠3个3x3的卷积层,并且保持滑动窗口步长为1,其感受野就是7x7了,这跟使用一个7x7的卷积核的结果是一样的,那为什么非要堆叠3个小卷积呢或者说这样做有什么优势呢?

假设输入大小都是h * w * c ,并且都使用C个卷积核(得到C个特征图),可以来计算一下,其各自所需的参数:

  • 1个7x7的卷积核所需要的参数=C x (7 x 7 x C) = 49 x C^2
    一个卷积核是7 x 7 x C,C个特征图再乘以C
  • 3个3x3的卷积核所需要的参数= 3 x C x (3 x 3 x C)=27 x C^2
    一个卷积核是3 x 3 x C,C个特征图再乘以C,再乘以3

用小的卷积核所需要的参数更少,训练起来更容易,过拟合风险更低。

递归神经网络

image.png

输入x,给到隐层神经元计算,最终得到输出结果。

当输入的数据是跟时间顺序有关的

image.png

t1时刻有一个特征,t2时刻一个特征,t3时刻....,相当于输入进来一个时间序列,而网络在训练的过程中,是不会考虑时间序列的,因为每一次的输入都是独立的:第一次输入t1,第二次输入t2,t1和t2之间没有关系。但这些数据是有时间相关性的,网络能不能学习到由于时间相关性对结果产生的影响呢?递归神经网络在处理时间序列上是有先天优势的。

递归神经网络中隐层上多了一个圈表示什么意思呢?

比如t1时刻输入x1经过隐层计算得到64个特征,t2时刻输入x2和t1时刻产生的64个特征一起作为输入数据给到隐层做计算即前一个时刻计算出来的中间特征,也会给后一个时刻产生影响。数据之间在时序上产生相关性,而特征是对数据的表达,在特征上也会呈现相关性。

CNN主要用于计算机视觉CV当中,RNN主要用于自然语言处理NLP当中。为什么RNN在自然语言处理当中运用的比较广?因为说的话本身就有先后顺序。当在预测结果的时候,一旦能把中间或前面的结果考虑进来,得到的结果可能更准确一些,这就是RNN网络的基本出发点。

image.png

上图是不同时刻的数据,若没有时间序列或没有很明显的去展示时间序列的特征,可以人为的进行时间序列的切分,比如早上、中午、下午、晚上的股票价格,这样构成了一个时间序列了。

输入x0,得到中间结果h0,h0是t0时刻的中间结果,h1是t1时刻的中间结果,h2是t2时刻的中间结果....,ht是之前所有特征全部综合考虑进来得到的结果。RNN网络一般只考虑最后一个层,前面的结果都当作中间结果而已。

比如一句话:I am Chinese,I love China. 需要先对单词做编码,才能参与矩阵运算。第一步先把输入数据转换成对应的特征向量,并且按照时间顺序从前到后进行一个排列,当得到向量之后,就可以训练模型了。

RNN最大的问题

image.png

RNN只考虑最后一个结果t10000,最后一个结果会把前面所有结果都会考虑进来,而前面的结果不一定重要,可能会产生一些误差,一些错误,使用ht的结果可能就没有那么精确了。而LSTM可以把一些没用的特征过滤掉。

LSTM

image.png

控制参数C决定什么样的信息会被保留,什么样的会被遗忘。C参数会被持续的维护和更新。

门单元是一种让信息选择式通过的方法。

image.png

Sigmiod层输出0到1之间的值,描述每个部分有多少量可以通过。0代表不允许任何量通过,1代表允许任意量通过。

image.png

当前计算完之后,得到一个结果,和前一轮(Ct-1时刻)的计算结果进行比较,看下当前需要丢弃什么信息。

image.png

RNN当中的信息太多了,并不是越多信息对结果越好,只要对结果有用的信息就好了,在RNN基础之上加上一个控制单元,可以控制的当前模型的复杂度,可以进行信息的过滤。