Deep Learning 简略笔记

Deep Learning笔记概略

 

  1. 基本概念

监督学习:所有输入数据都有确定的对应输出;输入输出位于网络的两端,训练就是不断调整它们之间的网络连接权重

NN:房子特征和房价
左边输入列是一个instance的各个feature值;权重和节点值相乘陆续传播至下一节点;
Hidden layer的节点也可有其intepretable的意义;
NN可处理structured data: tables, and unstructured data: image, audio

CNN(卷积神经网络):图像和类别
用(矩形)卷积核在图像输入上进行卷积操作,滑动,得到下一层输入

RNN(recurrent,循环神经网络):训练语音与输出文本之间的函数
记忆或遗忘之前时间步的信息,以为当前计算过程提供长期记忆

数据量越大,大型复杂神经网络performance越好;
深度学习的突破是activation function:用ReLU(f(x)= max(0,x))替换sigmoid函数,避免爆炸增长和无穷处趋于零的导数

idea-代码-实验-idea

 

  1. logistic Regression

主要用于二元分类问题(0/1),可看成是将两组数据点分离问题;
但仅用线性激活函数,则无法分类非线性边界的数据点,所以会用非线性激活函数替换
logistic regression = linear regression(wx+b) + 外乘sigmoid Z(x)| a(Z)

NN此时任务:确定w和b,最小化truth y 与guess y hat 之间的差异:寻找LOSS/COSS 目标函数最小值
gradient descent 梯度下降找到minimum:find the downhill using derivatives, then walk at a learning rate
一般初期学习率较大(不易停留在局部极小值),后期学习率较小

Forward 传播:由x值计算得到y hat
Backward: 由y hat 和 y得到损失函数,反省传播更新w和b
直到收敛

 

  1. shallow 浅层神经网络:hidden layer较少

Activation functions: sigmoid(分类问题最后一层),tanh:比前者梯度大,训练速度快,ReLU:最常用默认,避免反向传播, leakly ReLU
若无非线性激活函数,无论多少层神经网络都能等价于单层线性运算的神经网络
初始化:使用Rand(0.01),仅需少量方差

 

  1. deep 深度神经网络

NN的参数化容量随层数会有指数化增长,某些问题浅层神经网络要极多的neuron units才能解决
深度网络可将底层简单特征逐层组合成更为复杂多样的特征:CNN(图像各成分),RNN(音素 - 字母单词句子)
Data Hungry! 需要大量训练数据和计算资源,通常向量化计算(cheaper than for loops)
包含大量超参数(hyperparameter):超参数是开始学习过程之前设置的参数,而不是通过训练得到的参数数据

 

  1. 偏差与方差

深度学习所需要的samples远大于经典机器学习模型; training(训练模型), development(测试并通过结果不断优化), test(对模型进行一次最终评估所用的数据集)
经典:6:2:2,深度:98:1:1

高偏差(bias):欠拟合 — 更复杂的网络或选择不同的NN结构
if no high bias ->
高方差(variance):overfit — 添加正则化,或用更多数据进行训练
if not -> done

 

  1. 正则化

解决高方差/过拟合的手段:
L1和L2正则化(权重衰减):感知到具有较高方差输入的x,惩罚大的权重
Dropout:随机丢弃一些neurons,防止对某些feature过拟合;每个神经元在批量训练中以概率1-p随机选择是否去掉,最后进行推断时所有神经元都要保留;
类似一种廉价的Bagging集成近似方法
数据增强:通过人工转换和扰动来增加数据集
提前终止:iterations数量减少 (到errors 增加之前的极小值区)

 

  1. 最优化(optimizing)

执行最优化前,要normalization(归一化),否则一个量级过大,损失函数会是狭长椭圆形;
梯度下降会因为锯齿形很难收敛-- 归一化为圆形(使方差相同),can use a large learning rate
开发集,训练集,测试集的均值与方差相同

梯度爆炸、梯度消失 — choose initial value carefully ; 梯度检验

 

  1. 最优化算法

小批量随机梯度下降:用一个批量的数据更新参数,降低更新参数的方差收敛更稳定,降低一次的计算量
动量策略:加速SGD学习进程、RMSProp、Adam — 之后应用时详细看

 

  1. 超参数(hyperparameter tunning)

超参数预先定义,可以直接提升模型的性能 — 常见为手动调参
重要性:learning rate, hidden units, minibatch size, momentum turn, layers, learning rate decay
多种超参数搜索方法:

 

  1. 结构化学习过程

按过程结构设定我们的机器学习系统:设定目标(性能,度量) — 分割数据集 — 构建模型并训练
评价度量、运行时间、准确度

 

  1. 误差分析

完成训练后通过分析误差来源改进性能,发现错误的dataset标注、不正确的损失函数

 

  1. 训练集、开发集与测试集

修正不同集合间正确率的差别:欠拟合/过拟合

 

  1. 其他学习方法(监督学习之外)

迁移学习
多任务学习
端到端的学习

 

  1. 卷积神经网络

计算机视觉任务涉及数据点体量特别大,使用CNN可以极大减小参数量
工作原理是用检测特定特征的过滤器扫描整张图像,进行特征提取,并逐渐组成更复杂的特征
filter卷积核每次移动一个单位扫描 —> 数据点、尺寸减小的“特征图”

卷积核filter对应的检测特征可以从其参数分布判断
hard code filters/ better: treat the filter as parameters to learn

Padding: 在filter缩小后的图像周围添加0的边缘,使卷积后得到的特征图大小和原图像相同
Stride: 两次卷积操作之间的步长大小(前为1)
6 x 6 x 3(channel) image,3 filters(Each on one channel)
结果为多个通道值的叠加:每点值为sum of all filters

深度卷积神经网络:
架构主要以卷积层(convolution)和池化层(pooling,减少特征图尺寸,加速运算)的多级堆叠,最后是全连接层执行分类
pooling: f=2(filter 2x2),步长 =2,find the max value in filter section

 

  1. 经典卷积神经网络

LetNet 5:手写分类;Height/weitht go down, channels go up为什么???; average pool; sigmoid
AlexNet:图像分类;比LetNet大;ReLU
VGG-16:图像分类;深度较大

 

  1. 特殊卷积神经网络

ResNet:引入残差连接(residual net),解决梯度消失和爆炸问题,可以训练非常深的网络
Network in Network:使用1x1 convolution,可使运算变成全连接网络的形式,减少通道数 全连接softmax分类?
??
Inception Network:使用多种尺寸的卷积核并行操作,捕捉多种规模特征,但计算量太大,可以使用1x1convolution减少通道数

 

  1. 实践建议

使用开源实现:从0开始实现很困难,利用别人的实现来探索
数据增强:原图像各种转换,变化,增加探索数据集
迁移学习:当前任务训练数据太少时,可以使用别人充分训练过的模型用少量数据微调获得好的性能
表现良好的诀窍:ensembling: 取多个NN模型输出的平均;将图像裁剪成多个副本分别测试,将测试结果取平均

 

  1. 目标检测算法

用边界框检测图像中物体的位置:特征坐标向量,物体定位、识别
Faster R-CNN、R-FCN和SSD 三种目标检测模型
+文中解释的其他方法:

 

  1. 人脸识别

两大类应用:人脸验证(二分分类)和人脸识别(多人分类)
One shot learning:only one sample in your database,学习相似性函数
Siamese Network: 如利用同一个人两个网络的输出,减少这两个输出的差别,增大不同人两个输出的差别 — with triplet function

 

  1. Neural Style Transfer风格迁移

学习一副图的风格来修改另一幅图像

 

  1. 循环神经网络RNN基础

sequence problem analysis: music, translation, text, video action
name entry recognition: ,how to represent word — create a vecter vocabulary
Makov chain??

RNN:same w and b are used in all time steps,同时具备非线性单元的堆叠
能从序列和时序数据中学习特征和长期依赖关系,选择和决策参考了上一次的状态
单元之间至少有一个连接形成有向循环? Hidden nodes直接也增加了互联

善于处理语言建模问题(sequence probability),但有严重梯度消失问题
LSTM
GRU
用门控机制保留或遗忘前面时间步的信息,提供给当前计算过程

 

  1. NLP

将词的特征表示出来: 词汇库投射到一个200维或300维的向量,各值(features)表示词的语义特征
The features are learned, not really starightforward
Word embeddings: to learn the similarity,词义相近的词在空间中距离比较相近

GloVe词向量是常见的词向量学习方法

 

  1. 序列到序列(Sequence to sequence)

 

posted @ 2018-07-18 14:47  alexfz  阅读(145)  评论(0编辑  收藏  举报