深度神经网络
一、多层感知机及深度神经网络(DNN)
感知机preceptron,基于感知机的模型是一个具有若干输入和一个输出的模型,对n个输入信号,通过带权重的链接,进行传递,将总的输入与阈值比较,通过激活函数处理产生输出。
通过简单线性关系得到输出结果,输出结果通过激活函数进行表示
从感知机到深度学习模型
1-多个处理层或复杂结构
深度学习相比感知机模型加入了多个隐藏层,增强模型的表达能力与复杂度
2-多重非线性变化
相比感知机模型,深度学习模型引入更多激活函数,对每一层输出的线性结果激活,实现结果的多重非线性化
3-高层抽象
对数据的高层抽象与高强度的表达能力使模型适用于多分类任务,输出层可以输出多个结果,可以应用于分类回归,降维,聚类等其他机器学习领域
深度学习定义:深度学习是机器学习的分支,它试图使用包含复杂结构或者由多重非线性变换构成的多个处理层的数据进行高层抽象
模型概念与参数
DNN又称为多层感知机(MLP),内部神经网络层可以分为三类:输入层,隐藏层,输出层。
从局部来说,DNN与单个感知机相同,每层都是通过变换一个线性关系和激活函数,并且层与层之间是全连接的,也就是说第i层的任意神经元一定和第i+1层的任意神经元连接。
有关参数
线性关系系数
偏倚
前向传播
利用若干个权重系数w,偏倚向量b和输入值向量进行一系列线性运算和激活运算,从输入层开始,一层层地向后计算,一直运算到输出层,得到输出结果为止。
反向传播梯度优化
反向梯度优化推导:sigmod激活函数求导
反向传播梯度优化推导:单层推导
反向传播梯度优化推导:单层多神经元推导
反向传播梯度优化推导:多层链式法则
激活函数与正则化
激活函数公式
正则化方法:
集成学习
L1/L2正则化
增强数据集
dropout正则化
案例
一些优化策略:
样本抽样与校正
异常样本检验
特征去重
adalasso自适应算法,自动选择正则化信息
特征组合
为什么选择离散特征
大部分离散特征可直接加入,提出,无需任何计算处理
系数向量内积高效,计算结果方便存储,易于扩展
广义线性模型引入离散变量与变量组合,提升非线性表达的能力
离散变量提升模型稳定性,降低噪音的干扰
二、CNN理论
1.简介
内涵:cnn卷积神经网络,对局部信息及其依赖关系的叠加编码处理机制,最早应用于信号系统,将时域的卷积运算变换到频域 相乘运算,进而对信号进行更加便捷的处理,如保留高质量信号等。
在深度学习领域,卷积擅长处理具有局部内在关联的网格,图像,时序,文本等数据。
优势:
参数共享机制;连接的稀疏性;局部关联信息特征提取
应用:
图片分类,检索
目标定位检测
目标分割
时序分析
文本模式分析等
2.基本原理-结构
卷积神经网络CNN是一种专门用来处理具有类似网格及结构的神经网络,例如时间序列与图像数据。
由三个部分组成:卷积层(提取图像特征)、池化层(降维,防止过拟合)、全连接层(输出结果)
卷积层(特征提取)
这个过程我们可以理解成使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。
CNN主要就是通过一个个的filter,不断提取特征,从局部特征到总体的特征,从而进行图像识别等等功能。CNN的原理就是通过大量数据让机器自己去学习filter中的参数,设计出有效的filter。
卷积层在进行特征提取的过程中可以帮助数据降维,但是它的主要目的是提取重要特征
池化层(数据降维,避免过拟合)
池化层简单来说就是下采样,他可以大大降低数据的维度。
下图中可以看到,原始图片是20x20的对齐进行下采样,采样窗口是10x10,最终其下采样成为一个2x2的大小的特征图。池化层相比卷积层可以更有效的降低维度,这么做不但可以大大减少计算量,还可以有效避免过拟合
全连接层(输出结果)
经过卷积层和池化层处理过的数据输入全连接层,得到最终想要的结果
经过卷积层和池化层降维过的数据,全连接层才能“跑得动”,必然数据量太大,计算成本太高,效率低下。
池化层则是通过取最大值或平均值有效地压缩特征图,降维并减少计算量
3.基本原理-主要参数
kernel_size核的大小
padding填白的宽度
stride步长
步长为1时,padding = (kernel_size-1)/2
4.残差卷积
ResNet
为了能够让增加网络深度时不会出现梯度弥散问题,当输入x通过卷积-ReLU之后,产生的结果设为F(x)将其与原始输入x添加。对于传统cnn的输出相比,残差网络是将卷积输出与输入相加,相当于对输入x计算了一个微小变化,这样得到的输出H(x)就是x与变化的叠加,现在传到前一层梯度就多了一个x的梯度,来自深层的梯度能直接畅通无阻地通过去到上一层,使得浅层的网络层参数等得到有效的训练
DenseNet
ResNet的一个优点是可以直接将梯度从后层传向前层,然而,自身与经过转换得到的输出是通过求和的形式来连接的,这可能使网络中信息的传播受到影响,对次提出另一个DenseNet的网络结构,Dense block模块:网络的每一层都直接与其前面层相连,实现特征的重复利用,bottleneck,在3x3的卷积之间加入1x1的卷积,减少参数量,过渡层,在每两个dense block之间加入过渡层,进一步减少特征图的数量,提升模型的紧凑程度。
目前应用比较多的思想之一:动态卷积核
卷积的一大优势:权值共享(所有位置使用相同的卷积核来提取具体特征——减少参数量,提高计算效率,增强平移不变性)
但是在动态变化的环境中,如多时间序列时序数据,共享权值存在较大问题
——因此在这种动态变化的环境当中可以考虑使用动态卷积核。
动态卷积核:试图根据输入的不同数据动态调整卷积核的权重,形状或其他特征,从而使卷积操作更加灵活,适应性更强
过程:
利用两个1x1的卷积核提取每个位置的特征(改变通道数)
使用pytorch的unfold操作实现权值矩阵与原输入矩阵的切分,并根据输入的变化动态调整卷积核的选择
最后实现动态卷积,每个时刻的卷积核都是根据当前输入的特征动态生成的,形成了动态卷积核,逐元素卷积以生成最终的输出特征
5.CNN在nlp应用实例
通用知识推断模型
模型评估
三、RNN理论
1.基础概念
rnn是一类用于处理序列数据的神经网络
首先我们需要明确什么是序列数据:时间序列数据是指在不同时间点收集到的数据,这类数据反映了某一事物,现象等随时间的变化状态或程度,这是时间序列的定义,当然也可以不是时间,比如文字序列。但是序列数据有一个特点——后面的数据与前面的数据有关系
rnn是神经网络中的一种,类似的还有深度神经网络DNN,卷积神经网络CNN,生成对抗网络GAN等等。
RNN对具有序列特征的数据非常有效,它能挖掘数据中的时序信息以及语义信息,利用RNN的这种能力,使深度学习模型在解决语音识别,语音模型,机器翻译以及时序分析等nlp领域的问题时有所突破
循环核
循环核:参数时间共享,循环层提取时间信息
ht:记忆体当前时刻存储的状态信息
xt:当前时刻的输入特征
ht-1:记忆体上一时刻存储的状态信息
yt:当前时刻循环核的输出特征
循环核按时间步展开
按时间步展开,就是把循环核按照时间轴的方向展开,每个时刻记忆体的状态被刷新,记忆体周围的参数矩阵是巨鼎不变的,要训练优化的就是这些参数矩阵,训练完成之后使用效果最好的参数矩阵执行前向传播,输出预测结果。
循环神经网络就是借助循环核提取时间特征后,送入全连接网络实现连续数据的预测。
记忆体
循环核按照时间步展开后,可以发现,循环核是由多个记忆体构成的,记忆体是循环神经网络储存历史状态信息的自爱他,每个记忆体都可以设定相应的个数,这个个数决定了记忆体存储历史状态信息的能力,记忆体个数越多,训练效果越好,但是由于记忆体的个数决定了参数矩阵的维度,因此记忆体个数越多,所需要训练的参数量越多,所消耗的资源雨大,训练时间越长,所以需要酌情评估,记忆体的个数决定了ht的维度,进一步决定了举证中权值的维度
yt是循环核的输出特征
循环计算层
每个循环核构成一层循环计算层,循环计算层的层数是向输出方向增长的
梯度消失原因
RNN中参数共享,所有时间步使用相同的权重矩阵
背景概述,使用MSE作为损失函数
使用随机梯度下降更新参数
反向传播,在RNN中反向传播会跨越时间步,在每个时间步计算出对应的梯度,最终得到各个权重和偏置的梯度信息。
链式法则,每一步的梯度会传递给上一层的梯度,依此类推,直至输入层。
梯度消失问题:随着时间序列长度的加长,梯度会不断减小,最终导致网络无法有效学习,也就是说,越远离当前时刻的梯度,它们的影响越小。梯度消失的主要原因是RNN中的递归结构,当进行梯度反向传播的时候,梯度会随着时间步的增加而逐渐减小,尤其是有多个时间步的序列中,梯度会在每一层被乘以较小的数值,最终导致梯度变得很小。Wx和Ws会收到时间步长的影响。
四、GRU和LSTM理论
1.GRU
gru网络只有两个门分别是更新门和重置门,也就是图中的Zt和Rt的计算。
更新门控制隐藏状态新旧信息的融合程度
重置门控制旧状态对生成新状态的贡献度(旧状态的哪些信息对新状态有贡献)
与LSTM不同,GRU减少了门控单元结构数量,简化了门结构的连接方式,提高了模型训练的速度和准确性。
2.基础模型原理
尽管RNN对深度学习做出了很大的贡献,但其也有一定的不足之处,当计算图变得非常深的时候,神经网络优化算法面临的另一个难题就是长期依赖问题,由于变深的结构使得模型丧失了学习到先前信息的能力,让优化变得极其困难。
矩阵的特征值大于1会导致梯度爆炸,而矩阵的特征值小于1会导致梯度消失
引入长短期记忆基于生成通过时间的路径,使其中导数既不消失也不爆炸。
引入自循环的巧妙构思,以产生梯度长时间持续流动的路径是长短期记忆网络LSTM模型的核心贡献,其中一个关键的扩展是使自循环的权重视上下文而定,而不是固定的。
门控此自循环(由另一个隐藏单元控制)的权重,累积的时间尺度可以动态地改变,在这种情况下,即使是具有固定参数的LSTM,累积的时间尺度也可以因输入序列的改变而改变,因为时间常数是模型本身的输出。
LSTM除了外部的RNN循环之外,还具有内部的自循环,因此LSTM不是简单的输入和循环单元的仿射变换之后施加一个逐元素的非线性,与普通循环网络相似,每个单元由相同的输入和输出,但是也有更多的参数和控制信息流动的门控单元系统。
3.LSTM
在传统的RNN的基础上增加了一个细胞状态,细胞状态也作为输入和输出,细胞状态在上面传播,隐层状态在下面传播。
遗忘门
遗忘门控制自环权重。
根据sigmod函数的输出控制是不保留信息,保留部分信息还是保留全部信息。删除不需要的信息
外部输入门
tan将内容归一化到-1和1,可以看做新的输入带来的信息,另一个是it和遗忘门的结构一致,可以看做新的信息保留哪些部分
在遗忘门中,过往信息有选择的遗忘或保留,右边也是同理,新的信息有选择的遗忘或保留,最后将这两部分的信息加起来,就是新的状态Ct了
sigmod决定哪些信息需要保留,tanh生成输出值
将新信息写入记忆单元
输出门
Ot用sigmod函数,表示输出哪些内容,Ct通过tanh缩放后与Ot相乘,得到一个timestep的输出。
如何提取信息并输出