深度学习网络组件
RNN
循环神经网络(recurrent neural network)
主要思想: 即将整个序列划分成多个时间步,将每一个时间步的信息依次输入模型,同时将模型输出的结果传给下一个时间步。
说人话: 将一句话,划分为一个个的字或者词;然后将这句话拆分的字,一个个的按照顺序输入进行计,从第一个字开始计算的结果加入到第二个字的计算中,依次类推,最后一个字计算完成时,我们认为它包含了前面所有字的特征信息。
举例: "你个扑该!" 就会拆分成五份,先将"你"进行计算,得到结果,然后加入"个",进行计算;最后计算完成"!"时,得到的值,我们认为已经包含前面整句话的特征语义了。
公式讲解
RNN的计算公式如下图:
释义:
1.tanh是
激活函数
2.其中x是输入的值,t代表次数或者步数
3.h代表计算值,t-1代表前一次,即代表
前一个输入的字符的计算值
4.所以公式中可以
进行计算的权重参数即为:b、W、U
计算示意图讲解
如果输入的256维,要求输出为128维,我们分析各个部分的维度情况
1.由于将句子进行拆分了,所以
每一个X
肯定是:1x2562.因为输出要求128维,所以
U肯定是
:256x1283.
h要
能够和计算值相加,所以是:1x1284.w要和h能够相乘得到128维结果,所以
w
:128x1285.
b
要能够相加,则b: 1x128通过上述的逻辑,我们就能够清楚的知道,模型的内部有多少可训练的权重参数
CNN
卷积神经网络(Convolutional Neural Network)
主要思想: 和CNN类似,对于图片或是视频类的数据,更多的是像素点,我们通过设定卷积核的大小,作为一个特征提取词,每次通过上下移动一步,将范围内的像素特征进行提取。
计算示意
如图:第一步
第二步:
释义
1.上面的图片中,黄色部分
就是我们的卷积核
2.绿色就是我们的图片像素点位,转为数字表达的信息
3.红色就是我们
提取处理的特征,池化的结果
4.其中黄色部分
,每个点位相乘的下标数据,就是我们模型需要计算的权重
,这个权重和图谱的对应点位进行相乘,结果相加就是我们提取的值
注意:
上面介绍的是一种普通的卷积方法,卷积还要膨胀卷积等
注意2:卷积同样可以用于NLP,再NLP中卷积的移动方向只有上下两个
Normalization(归一化层)
释义: 对于神经网络模型,我们需要经过多层的计算,那么某一层的某个参数过大或者过小都会导致梯度的膨胀和消失
;为了避免这个问题,我们使用Normalization将某一层的神经网络输出,给收缩到一个范围内
,避免上述的问题
公式:
释义:
1.公式1表示对任意一层的输出进行求平均
2.公式2求该输出的方差
3.公式3通过方差、均值,可以将输出值分布收缩到一个小的范围
4.公式4中:
β和γ需要学习的参数,Y才是归一化层的输出
;目的是为了减少归一化所造成的数据中特征的损失
Normalization常见两种方式
如图:
释义:
1.左右两种normalization主要是对
输出的向量的求平均和方差的方向不同
,一个是batch样本之间;一个是样本内进行2.batch normalization主要
用于CV任务
中,因为是归一化在样本间,图像我们考虑两张类似的图片存在一些相似性和关系3.layer normalization主要是
用于NLP
任务中,求的是样本间的,因为我们认为,语言的差异较大,两句话间相似性小
注意:归一化层不是只有上述的操作,还有其他的类型,目的都一致,约束
Dropout层
作用: 减少过拟合
逻辑: 按照指定的概率,随机丢弃一些神经元,每一个神经元都按照这个概率去判断一下,要不要丢弃,即将对应位置值设为0
;其余元素乘以1/(1-p)进行放大
案例说明: 有一个向量[1,2,3,4,5,6],经过p=0.5的dropout层,得到的结果可能为:[0,4,0,0,0,12]。
理解说明
1.强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,消除减弱了神经元节点间的联合适应性,增强了泛化能力
2.可以看做是一种模型平均,由于每次随机忽略的隐层节点都不同,这样就使每次训练的网络都是不一样的,每次训练都可以单做一个"新"的模型
类比说明: 养了一群娃;目的是能够在社会上叱咤风云,为了避免在训练阶段,即读书阶段成为书呆子,让他们每个人都去跳崖,这个跳崖的死亡率(p)我们可以设置;嘎掉的娃,我们就把他们的高考成绩打0分;没有噶掉的就把分数进行1/(1-p)放大,奖励;这样就避免,其中某个孩子王的影响了,每一个娃都会是强者。