深度学习
深度学习概述
深度学习是一种通过组合低层特征,形成更加抽象的高层表示(属性类别或特征)的表示学习方法(Wiki)。
表示即特征,“特征+学习”是机器学习核心内容。
机器学习是通向人工智能的重要途径之一。
深度学习是基于深度神经网络(Deep Neural Network, DNN)的表示学习方法,将特征提取与模型学习紧密结合。
神经网络历程
深度学习发展与挑战
- 与日俱增的训练数据
- 与日俱增的模型规模
- 高性能的硬件设施与软件实现
Ø 快速CPU实现
Ø GPU计算
Ø 分布式实现
Ø 模型压缩
Ø 深度网络专用硬件-FPGA、类脑芯片 - 普及性与实用性
Ø 高性能
Ø 高利润
Ø 全球性AI热潮
深度学习基础知识
多层感知机
单层感知器几何直观
多层感知器:从单层到多层的目的是在输入层和输出层之间加入一个或多个隐含层,用弯曲的折线来完成分类
损失函数
概率问题用交叉熵
回归问题用平方误差
激活函数
BP算法—训练多层神经网络
误差反向传播方法
- 基本原理:利用输出后的误差来估计输出层的前一层的误差,再用这个误差估计更前一层的误差,依此逐层反传下去,从而获得所有其它各层的误差估计。
- 核心思想:利用梯度下降法,基于逐层计算的误差估计,对网络各连接权重进行调节。
算法推导—三层感知机
- 输出层-隐含层
- 隐含层-输入层
ps:
随机梯度下降:每次选一个样本或者部分样本进行梯度更新
梯度下降:根据所有样本情况进行梯度更新
伪代码实现
BP算法的训练过程存在不确定性
- 梯度消失和梯度爆炸
- 权值更新过程与激活函数导数有关,进入激活函数饱和区,梯度调节几乎停止 — Relu代替Sigmoid函数
- 为防止梯度爆炸,可通过设置梯度剪切阈值的方法
- 批量标准化(Batch Normalization)
- 局部极小值:非凸问题求解
- 参数初始化:预训练模型
- 自适应调节学习率
- 引入动量的梯度下降
BN层
一种对样本进行正则化的方式。
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.
Internal Covariate Shift:内部协变量偏移,网络中间层在训练过程中数据分布的改变。
对前面一层的输出进行白化或归一化,再输入到下一层。
- 解决内部协方量偏移
- 梯度放缓 -> 大学习率
- 避免梯度消失问题
- 提升模型泛化能力
伪代码
学习率调整
Momentum冲量
标准的SGD算法在极值点附近梯度较小,收敛较慢,可以考虑利用更多的历史迭代信息加快收敛。
过拟合
应对策略
- 适当时刻停止
- 扩增训练样本
- 正则化
- Dropout
典型深度学习模型介绍
自编码器(Autoencoder)
自编码器是一种让目标值等于输入值的无监督学习网络。
- 编码:建立输入层至隐含层的权重 编码 解码
- Code:隐含层的输出,即为数据特征
- 解码:建立隐含层至输出层的权重
可以用于降维表示,通过对网络加入某些限制,便可以获得不同作用的自编码机。
稀疏自编码(Sparse Autoencoder)
去噪自编码(Denoising Autoencoder)
压缩自编码(Contractive Autoencoder)
栈式自编码(Stacked Autoencoder)
栈式自编码神经网络是一个由多层稀疏自编码器组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入,可以逐层贪婪方式进行训练。
卷积神经网络
卷积神经网络是一种前馈神经网络。受启发于“处于较高层次的细胞具有较大的感受野,同时对于刺激模式位置的移动不敏感”。滑窗操作加权值共享就很好的刻画了移动不敏感性。
- 局部连接
- 权值共享(各个位置滑动的时候,filter的权重一样)
- 等变表示(对平移具有等变性)
标准卷积网络中的一个典型层包含三级:
- 卷积 — 非线性变换 — 池化(分辨率会减低,参数会减低,对感受会有增大作用)
- 卷积操作
在输入图像上的二维卷积,卷积输出称为feature map。卷积操作又称滤波,卷积核函数又称滤波器。
- 使用多个卷积核
通常会在同一个卷积层使用多个不同的卷积核以学习图像的不同特征。 当卷积核输入包含多个通道时,可以把卷积核看成是3D的。
- 池化
区域会有一个特征点代替,随着池化层的愈来愈多,愈来愈多的区域都变成一个特征点,会损失位置信息,分类恰恰需要这样。
池化函数使用某一位置的相邻位置的总体统计特征来代替网络在该位置的输出。
常用的池化函数:最大池化、平均池化
- 当输出作出少量平移时,池化能够帮助输入的表示近似不变,即平移不变。
- 减小参数规模,提高统计效率。
- 在全连接层之前采用全局池化,可以保持全连接层节点数量不变,不受输入图像大小的影响。
- 卷积层相对全连接层,其参数少,计算量大
发展方向
应用
递归神经网络
前馈神经网络 vs 反馈神经网络
- 前馈神经网络
Ø 信息向前传递,层内结点之间并不连接,适合于处
理静态数据分析,如回归、分类等任务。 - 反馈神经网络
Ø 全部或者部分神经元可以接受来自其它神经元或自
身的神经网络结构,其拓扑结构可以是网状的,也
可以是具有一定层级的。
Ø 通常将反馈神经网络视为一个动态系统,主要关心
其随时间变化的动态过程。
RNN
- 处理序列问题,如文本,视频
- 包含反馈连接的神经网络,主要指时间循环神经网络
- 将隐状态在自身网络中循环传递,特别适合于处理时序数据,语音、文本、视频
LSTM
LSTM是一种门控循环网络模型,其门控单元为:输入门,输出门,遗忘门。不过LSTM也很难避免长序列的问题,无法从根本上解决。
- 常见的RNN结构
Transformer模型
- 由来
如下图所示,得到b4,RNN需要算完a1-a4的值才可以,RNN无法并行运算,太过耗时,就有人提出用CNN进行计算,虽然CNN能够进行并行运算,可得到较长的上下文关系则需要太多层,太多filter。
- Self-Attention
- 矩阵运算推导
- Multi-head Self attention
head个数是个需要调的参数,多个头的原因是 有可能每个头学到的东西不一样
self attention没有考虑序列位置关系,每一个a都会做self attention。处理方法是添加一个ei的vector,表明位置关系
- Transformer
ps:Layer Norm 给笔data,每个维的μ为0,方差为1。通常搭配RNN使用,
-
另一种Transformer
-
优缺点
- 优点
可以并行计算,速度快
建立直接的长距离依赖 - 缺点
不具有方向与编码位置信息的能力,需要额外的Positional Encoding
时间和空间复杂度过大, O(N^2)