学习笔记——神经网络与深度学习

今天开始学习邱锡鹏老师的《机器学习与深度学习》
材料:电子版PDF+课件+课后练习
主要当做学习笔记记录一下。

第一部分 机器学习基础

Chapter 1 绪论

1、为了学习一种好的标识,需要构建具有一定深度的模型,并通过学习算法让模型自动学习初更好的特征表示。
深度:指的是原始数据进行非线性特征转换的次数。
2、贡献度分配问题:即一个系统中不同的组件或参数读最终系统输出结果的贡献或影响。->强化学习,每个内部组件并不能直接得到监督学习,需要通过整个模型的最终监督信息(奖励)得到,并具有一定延时性。
3、传统ML:任务切割成多个子模块,每个子模块单独学习。问题:优化目标不能与总体目标一致;存在错误传播问题。
端到端:学习过程中不进行分模块或分阶段训练,直接优化任务总体目标。
4、短期记忆->凝固作用->长期记忆 Hebbian Theory:两个神经元总相关联的收到刺激,他们之间的突触强度增加。
5、网络容量:神经网络塑造复杂函数的能力,与存储在网络中信息的复杂度以及数量相关。
6、机器学习三要素:模型、学习准则和优化算法
why神经网络:神经网络作为一类非线性的机器学习模型,可以更好的实现输入和输出之间的映射。

Chapter 2 机器学习概述

1、机器学习是对能通过经验自动改进的计算机算法的研究。-Tom Mitchell
机器学习就是让计算机从数据中进行自动学习,得到某种知识(或规律)。
机器学习的方法:通过数据来学习
2、机器学习:模型近似真实映射函数或真实条件概率分布。
根据经验假设的函数集合->假设空间氛围线性和非线性模型两种。
广义的非线性模型:多个非线性基函数的线性组合
3、损失函数:非负实数函数,用来量化模型预测和真实标签之间的差异。分类问题常用交叉熵损失函数(负对数似然函数)
4、过拟合的理解:找到两个假设f和f’,在训练集上f损失比f’损失小,但在整个样本空间上f’损失小,则假设f过度拟合训练数据。
过拟合往往由于训练数据少、噪声以及模型能力强等原因造成的。
解决:参数正则化(l1 l2范数)
正则化:所有损害优化的方法都是正则化:
(1)增加优化约束:L1 L2约束、数据增强
(2)干扰优化过程:权重衰减、随机梯度下降、提前停止
5、机器学习中的优化分为:参数优化和超参数优化
常见超参数:聚类算法中的类别个数,梯度下降中的步长、正则化项的系数、神经网络的层数、支持向量机中的核函数等。
6、批量梯度下降:每次迭代计算每个样本的梯度并求和
随机梯度下降:每次迭代只采集一个样本,计算该样本的梯度并更新。
小批量梯度下降:Mini-Batch Gradient Descent是前两者的折中,每次迭代是随机选取一小部分训练样本来计算梯度并更新参数。
区别在于每次迭代的优化目标是对所有样本的平均损失函数还是对单个样本的损失函数。
7、参数估计方法
经验风险最小化-平方损失函数(最小二乘法,要求各个特征之间相互独立)
结构风险最小化-岭回归(对角线元素加入一个常数)
概率分布-最大似然估计/对数似然估计(训练数据较少容易过拟合)
最大后验估计-参数首先服从某先验分布(like高斯分布)-贝叶斯估计(参数的一种区间估计)
8、偏差 方差的理解
偏差:一个模型在不同训练集上的平均性能和最优模型的差异->衡量模型的拟合能力
方差:一个模型在不同训练集上的差异->衡量模型是否容易过拟合(方差一般会随着训练样本的增加而减少)进一步在方差比较小时选择能力强的模型来减小偏差
但实际任务中训练集往往比较有限,最优偏差和最优方差往往无法兼顾。
偏差高:训练集上错误率较高,模型拟合能力不足->增加数据特征、提高模型复杂度、减小正则化系数
方差高:训练集错误率低,验证集错误率高,模型过拟合->降低模型复杂度、加大正则化系数、引入先验(另一种->集成模型,即通过多个高方差模型的平均来降低方差)
9、机器学习算法类型
函数:线性模型&非线性模型
学习准则:统计方法和非统计方法
根据样本提供的信息及反馈方式:监督学习、无监督学习、强化学习
监督学习:回归、分类、结构化学习(输出空间是结构化对象,如序列、树或图等)
过渡:弱监督学习、半监督学习
无监督学习:训练样本无标签、自动学习
强化学习:通过交互调整学习策略
机器学习算法类型10、特征如何学习
传统的机器学习:
特征选择->特征抽取
特征选择:子集搜索(过滤式方法、包裹式方法)
特征抽取:降维
深度学习:根据学习模型端到端
11、一些定理
PAC学习
Probably Approximately Correct,可能近似正确。PAC可学习的算法是指该学习算法能够在多项式时间内从合理数量的训练数据中学习到一个近似正确的系统函数f(x)
Part 1 近似正确-定义一个泛化错误界限
Part 2 可能-反推所需样本数量
没有免费午餐定理
No Free Lunch Theory:对于基于迭代的最优化算法,不存在某种算法所有问题(在有限的搜索空间内)都有效。
奥卡姆剃刀原理
Occam’s Razor:如无必要,勿增实体。
简单的模型泛化能力更好
归纳偏置;对一些学习问题做一些假设,这些假设就是归纳偏置(Inductive Bias)
2020/3/22

2020/3/24

Chapter 3 线性模型

1、线性分类模型:如Logistic回归,Softmax回归,感知器和SVM 区别在于损失函数不同
Logistic回归:预测值为标签的对数几率 C = 2
Softmax回归:多类的Logistic回归 C = N ->对all权重向量减去一个同样的向量v是不改变输出的 ,因此sofymac常需要正则化来约束其参数
感知器:Perceptron权重、偏置、激活函数->输出为±1 需要保证在训练集线性可分的情况下 感知器可在有限次数迭代后收敛;而且虽然线性可分但训练出来不能保证其泛化性;感知器对样本顺序也比较敏感,每次迭代顺序不一样找到的超平面也往往不一样;排在后面的错误样本对最终权重影响更大->improved:参数平均
SVM:做二分类,寻找一个超平面使margin最大,核函数:将样本从原始空间映射到更高维空间,解决原特征空间线性不可分的问题
2、所谓“线性分类模型”指其决策边界是线性超平面
3、多分类处理思路
在这里插入图片描述4、分类处理的是离散的类别标签,线性分类模型一般是一个线性判别函数+非线性激活函数
在这里插入图片描述

Chapter 4 前馈神经网络

1.分布式并行处理:Parallel Distributed Processing,PDP.信息表示是分布式的(非局部的);记忆和知识是存储在单元之间的连接上;通过逐渐改变单元之间的连接强度来学习新的知识
2.MP神经元:激活函数f为0或1的阶跃函数
现代神经元:激活函数通常要求是连续可导的函数
3.激活函数:激活函数在神经元中是非常重要的,可以增强网络的标识能力和学习能力,激活函数需要具备以下几点性质:
(1)连续并可导的非线性函数,允许少数点上不可导,可导的激活函数可直接利用数值优化的方法来学习网络参数;
(2)激活函数极其导数要尽可能的简单,有利于提高网络计算效率
(3)激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性
4.ReLU:线性修正单元,采用ReLu的神经元只需要进行加、乘和比较的操作,计算上更加高效。而且具有生物上的解释性:如单侧抑制,宽兴奋边界。Dying ReLU Problem问题->变种:Leaky ReLU,Parametric ReLU,ELU
Softplus函数:Rectifier的平滑版本,其导数刚好是Logistic函数
在这里插入图片描述
Swish函数:自门控激活函数,->1门开;->0 门关
在这里插入图片描述高斯误差线性单元:GELU,Gaussian Error Linear依然是通过门控机制来调成输出的激活函数,引入呈高斯分布的累积分布函数
在这里插入图片描述小结:
在这里插入图片描述
5.网络结构:常用的神经网络有前馈网络,记忆网络,图网络
前馈网络:网络中的信息朝一个方向传播,没有反向的信息传播,如全连接前馈网络、卷积神经网络等。这种网络结构简单易于实现
记忆网络:也称反馈网络,网络中的神经元不仅可以接受其他神经元的信息也可以接受自己的历史信息,因此神经元具有记忆功能。记忆网络包括循环神经网络、Hopfield网络、玻尔兹曼机、受限玻尔兹曼机等。这种网络具有更强的计算与记忆能力。
记忆增强神经网络:引入外部记忆单元和读写状态来保存网络中的一些中间状态
前馈网络和记忆网络的输入都可以表示为向量或输入序列,实际应用中更多数据是图的结构:知识图谱、社交网络、分子网络等。
图网络:定义在图结构上的神经网络,每个节点都由一个或一组神经元构成的,节点之间的连接可以是有向的也可以是无向的,每个节点可以接受来自相邻接点或自身的信息。
实例:图卷积网络、图注意力网络、消息传递网络等。
在这里插入图片描述6.反向传播:BackPropagation,第l层的一个神经元的误差项是所有与该神经元相连的第l+1层的神经元的误差项的权重和,然后再乘上该神经元激活函数的梯度
7.自动梯度计算:数值微分、符号微分和自动微分
数值为分:用数值方法来计算函数的导数,涉及到舍入误差(delta过小)和截断误差(delta过大)
符号微分:对输入的表达式通过迭代或递归使用一些事先定义的规则进行转换,直至不能再继续使用变换规则时停止计算。但存在编译时间常、需要专门语言,不好调试
自动微分:符号微分处理的对象是数学表达式,自动微分处理对象是原始程序代码按链式法则微分
符号位分在编译阶段先构造一个复合函数的计算图,通过符号计算得到导数的表达式,在程序运行截断才带入变量的具体数值
自动微分:无需事先编译,在程序运行阶段边计算边记录计算图,计算图上的局部梯度直接带入数值进行计算

8.静态计算图:编译时构建计算图,图构建好后程序运行时不能改变(TF Theano)
优点:构建时可以优化,并行能力强
缺点:灵活性差
动态计算图:在程序运行时动态构建计算图(Pytorch DyNet Chainer)
优点:灵活性高
缺点:不容易优化,当不同输入的网络结构不一致时难以并行计算
9.人工神经网络:主要由大量神经元以及神经元之间的邮箱连接构成,考虑3方面因素:
神经元的激活规则(一般为非线性函数)
网络的拓扑结构(不同神经元之间的连接关系)
学习算法
深度学习三步走:定义网络->损失函数->优化
2020/3/28

2020/3/31

Chapter5 卷积神经网络

1.全连接前馈神经网络存在的问题:参数太多;局部不变性特征不好提取(如尺度缩放、平移、旋转)
2.卷积神经网络:卷积层、汇聚层和全连接层交叉堆叠而形成的前馈神经网络,使用反向传播算法进行训练
特性:局部连接、权重共享、汇聚(池化)
局部连接:卷积层中的每一个神经元都只和下一层中某个局部窗口内的神经元相连,构成一个局部连接网络
权值共享:作为参数的滤波器对于某一层所有的神经元都是相同的,可以理解为一个滤波器只捕捉输入数据中的一种特定的局部特征,因此如果需要提取多种特征就需要使用多个不同的滤波器。
汇聚层:过大的采样区域会急剧减少神经元的数量,也会造成过多的信息损失
3.卷积经常作为特征提取的有效方法,一幅图像经过卷积操作后得到的结果称为特征映射(Feature Map)
卷积计算过程中需要进行卷积核翻转->具体实现上一般以互相关(Cross-Correlation)操作来代替卷积,从而减少一些不不要的操作或开销。
4.互相关:不翻转卷积
互相关卷积:
在这里插入图片描述也可理解为 图像是否进行翻转?
在这里插入图片描述
5.反向传播
汇聚层:(池化)最大池化:误差会传递到上一层对应区域中最大值所对应的神经元,而该区域其他神经元的误差项均为0
均值池化:误差项中的每个值会被平均分配到上一层对应区域中的所有神经元上。
6.经典卷积神经网络:复习了一下LeNet,GoogLeNet,ResNet
GoogLeNet图好棒啊!
GoogLeNet
7.卷积的其他类型
转置卷积:卷积的前向计算和反向传播就是一种转置关系
微步卷积:步长s<1的转置卷积也被称为微步卷积。用以实现上采样操作,大幅提高特征维数。
为了实现微步卷积可以在输入特征之间插入0来间接的使步长变小。
空洞卷积:通过给卷积核插入空洞来变相增加其大小
增加输出单元感受野的3种方式:(1)增加卷积核的大小(2)增加层数,两层3x3的卷积可近似为一层5x5的效果(3)在卷积之前进行汇聚操作(但会带来信息丢失)

2020/4/10

Chapter 6 循环神经网络

1.循环神经网络:RNN是一类局域短期记忆能力的神经网络,神经元不但可以接受其他神经元的信息也能接受自身的信息,形成具有环路的网络结构。主要用于语音识别、语言模型以及自然语言生成等任务上。
参数学习:随时间反向传播算法
会引入 长程依赖问题:梯度消失or梯度爆炸->门控机制9GRU LSTM等)
另外两种更广义的神经网络:递归神经网络和图网络
2.如何给网络增加记忆能力?
前馈网络:静态网络,不具备记忆能力
增加短期记忆能力:延时神经网络、有外部输入的非线性回归模型、循环神经网络
延时神经网络:额外的延时单元存储网络的历史信息(输入、输出、隐层状态等)
自回归模型:AutoRegressive Model,AR.来自于统计学上常用的一类时间序列模型,用一个变量的历史信息来预测自己。
有外部输入的非线性回归模型:NARX 在每一个时刻都有一个外部输入产生一个输出,同时通过一个延时器记录最近几次的外部输入和输出。
循环神经网络:RNN通过使用自带反馈的神经元来处理任意长度的时间序列。通过本时间步的输入和上一时间步的状态共同决定本时间步的输出。隐藏层的活性值一般叫做状态或隐层状态(Hidden State).
在这里插入图片描述
结构如下图所示:
在这里插入图片描述
3.简单循环网络
仅有一个隐藏层。如果把每个时刻的状态都看作前馈神经网络的一层,循环神经网络可看做在时间维度上权值共享的神经网络。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
RNN的通用近似定理:一个完全连接的循环网络是任何非线性动力系统的近似器。
图灵完备:Turing Completeness是指一种数据操作规则,比如一种计算机的编程语言可以实现图灵机的所有功能,解决所有计算问题(C++,Java,Python)。所有的图灵机都可以被一个由使用Sigmoid型激活函数的神经元构成的全连接循环网络来进行模拟。
4.RNN可以应用的3类机器学习任务:序列到类别模式、同步的序列到序列模式、异步的序列到序列模式。
序列到类别:输入为序列输出为该序列的类别。
同步的序列到序列:每一时刻都有输入和输出,输入序列和输出序列的长度相同,主要用于序列标注任务/词性标注,每一个单词都需要标注其对应的词性标签。
异步的序列到序列:也成为编码器-解码器模型,输入和输出不需要有严格的对应关系,也不需要保持相同的长度。感觉用于文本翻译?

在这里插入图片描述在这里插入图片描述在这里插入图片描述5.RNN的反向传播
计算梯度有两种方法
随时间反向传播 BPTT,BackPropogation Through Time将RNN看做一个展开的多层前馈网络,其中每一层对应RNN中的每个时刻。这样可以按照前馈网络中的反向传播算法计算梯度,将所有层的参数的梯度相加就是该参数的真实梯度。
在这里插入图片描述实时循环学习算法:RTRL,Real Time Recurrent Learning通过前向传播的方式啦计算梯度。
对比:BPTT计算量小但空间复杂度高;
RTRL不需要梯度回传,适合在线学习和无限序列中。
6.长程依赖问题
在较长的时间间隔中会存在梯度消失和梯度爆炸的问题。
梯度爆炸一般通过权重衰减或梯度截断来避免。
梯度消失是RNN的主要问题,最有效的方法时改变模型。->门控机制
7.基于门控的循环神经网络
引入门控机制来控制信息的累计速度,包括有选择的加入新的记忆、有选择的遗忘之前累积的信息。门控RNN主要有:长短期记忆网络和门控循环单元网络
7.1 长短期记忆网络 LSTM
引入一个新的内部状态(internal state)专门进行线性的循环信息传递,同时(非线性的)输出信息给隐藏层的外部状态,内部状态通过输入门、遗忘门和输出门的计算得出。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述RNN中隐层状态h存储了历史信息,可以看做一种记忆。在简单循环网络中,隐层状态的每个时刻都会被重写,因此可以看做是一种短期记忆(Short Term);在神经网络中国,长期记忆(Long-Term Memory)可以看你做网络参数,隐含了从训练数据中学到的经验,其更新周期要远远慢于短期记忆。
而在LSTM中,记忆单元c可以在某个时刻捕捉到关键信息,并有能力将此关键信息保存一定的时间间隔,这一信息的生命周期要长于短期记忆但又远远短于长期记忆,因此成为长短期记忆(Long Short-Term Memory)
Tips:一般深度网络参数学习时参数初始化的值一般比较小,但是在训练LSTM时过小的值会使得遗忘门的值比较小,这意味着前一时刻大部分的信息丢失了,这样网络就很难捕捉到长距离的依赖信息,并且相邻时间间隔的梯度会非常小导致梯度消失;因此遗忘的参数初始值一般都设的比较大。
LSTM的各种变体
LST网络借助三个门动态控制内部状态应该遗忘多少历史信息,输入多少新信息以及输出多少信息。
无遗忘门的LSTM网络
最早提出的LATM是没有遗忘门的,内部状态更新为:
在这里插入图片描述
记忆单元会不断增大,当输入序列的长度非常大时记忆单元的容量容易饱和,从而大大降低模型性能。
如何理解“容量”?
隐层状态的值会变得越来越大,导致h饱和。h能存储的信息是有限的,随着记忆单元存储的内容越来越多,其丢失的信息也越来越多。
peephole连接
三个门不但依赖于输入x和上一时刻的隐层状态,也依赖于上一时刻的记忆单元c。
在这里插入图片描述耦合输入门和遗忘门
LSTM中输入门和遗忘门有些互补关系,由于两个门比较冗余,为了减少LSTM网络的计算复杂度将两个门合为一个门,内部更新方式为:
在这里插入图片描述7.2 门控循环单元网络
GRU,Gated Recurrent Unit是一种比LSTM网络更加简单的循环神经网络,只引入了更新门来控制当前状态需要从历史状态中保留多少信息(不经过非线性变换)以及需要从候选状态中接受多少信息。更新门一个来控制输入和遗忘之间的平衡
在这里插入图片描述在这里插入图片描述经过tanh激活后再经过重置们来控制计算得到的候选状态的计算是否依赖上一时刻的状态。
在这里插入图片描述
在这里插入图片描述
8.深层循环神经网络
理解循环神经网络的“深”和“浅”:一方面吧循环神经网络展开,长时间间隔的状态之间的路径很长,循环网络可以看做一个非常深的网络;另一方面来说,如果同一时刻网络输入到输出之间的路径来看这个网络是非常浅的。
8.1 堆叠循环神经网络
SRNN,Stacked Recurrent Neural Network即将多个循环网络堆叠起来,也称为循环多层感知器。
第l层的网络的输入是第l-1层网络额输出
SRNN8.2双向循环神经网络
Bidirectional Recurrent Neural Network,Bi-RNN由两层循环神经网络组成,他们输入相同只是信息传递的方向不同。
因为有些任务中一个时刻的输出不但和过去时刻的信息有关,也可和后续时刻的信息有关。
for Example:一个词的词性由它的上下文决定,即包含左右两边的信息。因此可以增加一个按照时间的逆序来传递信息的网络层,来增强网络的能力。
Bi-RNN第一层按时间顺序,第二层按时间逆序,在t时刻的隐层状态计算为:
在这里插入图片描述Bi RNN9.图结构
如果将循环神经网络按时间展开,每个时刻的隐层状态看做一个节点,那么这些节点构成一个链式结构,每个节点t都收到其父节点的消息(Message)更新自己的状态,并传递给子节点。
链式结构是一种特殊的图结构,可以比较容易的将消息传递的思想扩展到任意的图结构上。
9.1 递归神经网络
Recursive Neural Neiwork,RecRNN是循环神经网络在有向无环图上的扩展。递归神经网络的一般结构为树状的层次结构。
在这里插入图片描述RecCNN主要用来建模自然语言句子的语义,根据句子的语法结构(一般为树状结构)来按照句法的组合关系来合成一个句子的语义。
9.2 图神经网络
GNN是将信息传递的思想扩展到图结构数据上的神经网络,因为许多数据是图结构的,如知识图谱、社交网络、分子网络。
比较有名的图网络模型包括:图卷积网络、图注意力网络、消息传递神经网络
在这里插入图片描述10.Summary
RNN主要建模时间序列数据之间的相关性,与(延时神经网络、有外部输入的非线性自回归模型)相比,RNN可以更方便的建模长时间间隔的相关性。
常用的反向传播算法:BPTT
解决梯度消失:LSTM GRU
一个完全连接的RNN可以近似任何非线性动力系统和图灵机。

感觉RNN多用在自然语言处理领域啊

2020/4/14

Chapter 7 网络优化与正则化

1.神经网络存在的问题:
优化问题:神经网络非凸函数+梯度消失导致的难以优化;深层次的神经网络(DNN)参数较多难以训练
泛化问题:由于神经网络拟合能力强,往往容易在训练集上过拟合导致泛化性不佳
2.网络优化
2.1优化难点
非凸函数优化:会存在许多局部最优点->如何选择吃石化参数和逃离局部最优点
网络结构多样,深层网络参数多
平坦最小值:Flat Minima即损失函数在局部最小解附近通常是一个平坦的区域。平坦最小值通常认为和模型泛化能力有一定关系;当模型收敛到一个平坦的局部最小值时其鲁棒性会更好,即微笑的参数变动不会剧烈影响模型能力;若收敛到的是尖锐的局部最小值鲁棒性会比较差
2.2优化算法-小批量梯度下降
Mini-Batch Gradient Descent每次选取部分训练样本计算偏导数,涉及到批量大小(Batch_size)、学习率、梯度估计的影响。
2.2.1Batch_size:不影响随机梯度的期望但会影响随机梯度的方差->批量大小越大,随机梯度的方差越小,引入的噪声也越小,训练越稳定,此时可以设置较大的学习率;
当批量较小时需要设置较小的学习率,否则模型会不收敛。一般通过线性缩放规则(Linear Scaling Rule).
Epoch和Iteration关系:所有训练集样本更新一遍为一个Epoch回合;每一次小批量更新为一次Ineration单次更新;1个Epoch = (total_nums/batch_size) * Iterations
2.2.2learning_rate:学习率太小收敛慢;学习率太大容易不收敛,目前学习率调整策略包括:学习率衰减、学习率预热、周期性学习率调整以及自适应调整学习率为每个参数设置不同的学习率(AdaGrad,RMSProp,AdaDelta)
学习率衰减:分段衰减、逆时衰减、指数衰减、自然指数衰减、余弦衰减
在这里插入图片描述1.学习率预热:LR Warmup就是在最初几轮迭代时采用比较小的学习率,等梯度下降到一定程度后再恢复到初始学习率。比如逐渐预热的方式:
在这里插入图片描述2.周期性学习率调整:周期性增大学习率的好处是当参数处于平坦最小值附近时增大学习率有助于逃离尖锐最小值;当处于平坦最小值附近增大学习率依然有可能在附近的吸引域(Basin of Attraction)。
因此周期性的增大学习率虽然短期内损害优化过程使得网络收敛变差但从长期来看有助于找到更好的局部最优解。
3.循环学习率也稍有不同,是让学习率在一个区间内周期性的增大和缩小。如三角循环学习率是线性变化的
4.带热重启的随机梯度下降:用热重启的方式代替学习率衰减,学习率每隔一定周期后重新初始化为某个预先设定值然后逐渐衰减。比如在设定的重启周期后用余弦衰减来降低学习率
在这里插入图片描述在这里插入图片描述2.3优化算法-AdaGrad
Adaptive Gradient借鉴L2正则化的思想,每次迭代时自适应的调整每个参数的学习率。如何调整?
Step 1先计算每个参数梯度平方的累计值Gt
Step 2是在梯度的基础上按照这一累计值调整参数更新差值
在这里插入图片描述在这里插入图片描述
Adaptive体现在如果某个参数累计的偏导数较大,那么学习率就相对较小;如果累计偏导数较小,学习率就相对较大。
AdaGrad缺点就是如果经过一定次数的迭代依旧没有找到最优点,此时由于学习率已经非常小,很难继续找到最优点。
2.4优化算法-RMSProp
Step 1:计算每次梯度平方的指数衰减移动平均
Step 2:自适应更新学习率
即Gt的计算方式不同了
在这里插入图片描述在这里插入图片描述2.5 梯度估计修正
Gradient Estimation如何理解、比如在随机梯度下降中每次迭代的梯度和整个训练集上的最优梯度并不一致,具有一定的随机性。梯度估计就是使用最近一段时间内的平均梯度来代替当前时刻的随机梯度作为参数更新的方向,从而提高优化速度。
动量法-用之前累积梯度的加权平均代替真正梯度
Nesterov加速梯度-是动量法的进一步优化
Adam自适应动量估计-梯度加权平均作为更新方向+自适应调整学习率
2.6梯度截断
Gradient Clipping当梯度的摸大于一定阈值时就对梯度进行截断。(以免梯度突然增大,用大梯度更新参数反而会远离最优点)
截断方式:按值截断、按模截断
2.7优化算法小结
在这里插入图片描述在这里插入图片描述3.参数初始化
3.1 初始化方法
预训练初始化:用已经在大规模数据集上训练过的模型参数作为初始值,也叫fine-tuning
随机初始化:3.2详细介绍
固定值初始化:对于一些特殊参数,根据经验用一个固定值来完成初始化。例子:bias=0
3.2随机初始化
随机的生成:从一个固定均值和方差的分布中采样来生成参数的初始值。
分布:高斯分布、均匀分布
3.2.1固定方差:
分布中方差大小的影响:如果参数范围取得太小,一是导致神经元的输出过小,经过多层之后信号就慢慢消失了;二是会使得sigmoid等激活函数失去非线性的能力,激活值每次都是饱和,梯度接近于0->梯度消失
基于以上,使用固定方差的随机初始化一般搭配逐层归一化来使用。
3.2.2方差缩放
方差缩放(Variance Scaling)根据神经元的链接数量来自适应的调整初始化分布的方差。
** Xavier**初始化会将输出信号的方差在经过神经元后放大/缩小一定倍数,使得信号不被过分放大或减弱,尽可能保持每一个神经元的输入和输出的方差一致。
在这里插入图片描述He初始化采用固定区间的均分分布来初始化参数,对权重矩阵中每个参数进行采样,借助采样的随机性。
正交初始化
Orthogonal Initialization将参数矩阵初始化为正交矩阵,具体:(1)用均值为0方差为1的高斯分布初始化一个矩阵(2)将这个矩阵用奇异值分解(SVD)成两个正交矩阵,使得其中之一为权重矩阵。
好处就是由于是正交矩阵,在信息的前向传播和误差的反向传播中都具有范数保持性,从而可以避免在训练时就出现I梯度消失或梯度爆炸的现象。
4.数据预处理
4.1Why we need preprocessing?
尺度不变性:Scale Invariance指的是某算法在缩放全部或部分特征后不影响他的学习和预测,比如线性分类器就是尺度不变的,但最近邻分类器就是尺度敏感的。
当我们计算不同样本之间的欧氏距离时,尺度大的特征就会起主导作用,因此对于尺度敏感的模型需要对样本进行预处理,将各个维度的特征转换到相同的取值区间,并消除不同特征之间的相关性,才能获得比较离线的结果。
归一化:Normalization指的是把数据特征转换到相同尺度上。
常用的归一化方法有:
4.2
最大最小值归一化
Min-Max Normalization将每一个特征的取值范围归一化到[0,1]或[-1,1]之间
标准化
Standardization也叫Z值归一化,将每一个维度都调整为均值0方差1
白化(whitening)-主要用来降低输入数据特征之间的冗余性,输入数据经白化处理后特征之间相关性较低,并且所有特征具有相同的方差。主要通过PCA降维去除各个成分之间的相关性。

5.逐层归一化
Layer-wise normalization是将传统机器学习中的数据归一化应用到DNN中,对神经网络中隐藏层的输入进行归一化,从而使得网络更容易训练。(not to all layers而是说可以应用在任何一个中间层)常用的逐层归一化方法:批量归一化、层归一化、权重归一化、局部响应归一化
5.1 批量归一化
Batch-Normalization,BN将输入归一化到标准正态分布,其中标准和方差来自于当前小批量样本集的均值和方差的近似估计
在这里插入图片描述5.2 层归一化
批量归一化是对一个中间层的单个神经元进行归一化操作,因此要求小批量样本的数量不嫩太小,此外如果一个神经元的净输入分布在神经网络中是动态变化的(RNN等)那么久无法应用批量归一化操作。
Layer Normalization不同之处在于是对一个中间层的所有神经元进行归一化。因此均值和方差计算的是某曾所有神经元的均值和方差,就可以应用到RNN中。
BN与LN区别:BN是对训练样本的一个小批量集合,每一行进行归一化,LN是对矩阵的每一列进行归一化
5.3 权重归一化
Weight Normalization是对神经网络的连接权重进行归一化,通过再参数化(Reparameterization)将连接权重分解为长度和方向两种参数。这样做的好处是因为NN中权重经常是共享的,因此权重参数往往比神经元数量要少,开销也更少。
在这里插入图片描述5.4 局部响应归一化
Local Response Normalization,LRN是一种对临近的特征映射进行局部归一化,应用在激活函数之后,还没有减去均值。

6.超参数优化
6.1常见的超参数有以下3类:
(1)网络结构:神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等
(2)优化参数:包括优化方法、学习率、小批量的样本数量等
(3)正则化系数
对于超参数的配置,比较简单的方法有:网格搜索、随机搜索、贝叶斯优化、动态资源分配和神经架构搜索
6.2超参数优化方法
网格搜索:通过尝试所有超参数的组合来寻找一组合适的超参数配置方法,随后在开发集上测试。
随机搜索:实践上更容易实现
但以上两种都没有利用不同超参数组合之间的相关性。
贝叶斯优化:是一种自适应的超参数优化方法,根据当前已经试验的超参数组合来预测下一个可能带来最大收益的组合。
最常用的是时序模型优化->参看课本
动态资源分配:如果可以在较早阶段就判断出某一组效果比较差,就早期终止这组配置的评估,将更多的资源留给其他配置。目的就是将优先的资源分配给更有可能带来收益的超参数组合。
如一组超参数组合的学习曲线不收敛或瘦脸效果差,就可以使用早停法(Early-Stopping)终止当前训练。
神经架构搜索:Neural Architecture Search,NAS是通过神经网络自动实现网络架构的设计。神经网络的架构可以用一个变长的字符串来描述,而NAS利用一个控制器生成另一个子网络的架构描述。控制器可以由一个循环神经网络来实现,控制器的训练可以通过强化学习来完成,其奖励信号为生成的子网络在开发集上的准确率。

7.网络正则化
除了常规的L1 L2正则化 还有
7.1 提前停止
早停法是用验证集上的错误来代替期望错误,当验证集上的错误率不再下降,就停止迭代。
7.2 丢弃法
丢弃法就是训练过程中随机丢弃一部分神经元(同时丢弃其对应的连接边)来避免过拟合。->这不就是之前调研的pruning
在这里插入图片描述7.3 数据增强
主要应用在图像数据上,用来增加数据量,提高模型鲁棒性来避免过拟合

2020/4/17

Chapter 8注意力机制与外部记忆

1.网络容量:networkcapacity指神经网络中可以存储的信息量,一般神经元的存储容量与神经元的数量以及网络的复杂度成正比。如果要存储的信息越多,神经元数量就要越多或网络月复杂,进而导致神经网络参数成倍增加。
而过深的网络比如在RNN中又会导致信息丢失(远距离依赖问题)
大脑神经系统解决信息过载的两种机制:注意力和记忆机制
迁移到神经网络:
注意力机制:通过自上而下的信息选择机制来过滤掉大量无关信息
记忆机制:引入额外的外部记忆,优化神经网络的记忆结构来提高神经网络存储信息的容量
2.注意力
2.1注意力分类
聚焦式注意力:Focus Attention是自上而下的有意识的注意力,亦成为选择性注意力,会有预定目的、依赖人物、主动有意识的聚焦于某一对象的注意力
基于显著性的注意力:Saliency-Based Attention是自下而上的无意识的注意力,是由外界刺激驱动的主义,不需要主动干预,也和任务无关,如最大汇聚(Max-Pooling),门控机制(Gating)
聚焦式注意力一般会随着环境、情景或任务的不同而选择不同的信息
2.2注意力机制
注意力机制亦称为注意力模型,在计算能力有限的情况下将有限的计算资源用来处理更重要的信息,用于解决信息超载问题。
聚焦式注意力的计算可以分为两步:一是在所有输入信息上计算注意力分布,二是根据注意力分布来计算输入信息的加权平均
在这里插入图片描述软性注意力:选择的信息是所有输入向量在注意力分布下的期望
在这里插入图片描述
硬性注意力:只关注某一个输入向量,一个的选取方式有:
(1)选取概率最高的一个输入向量
(2)通过在注意力分布式上随机采样
硬性注意力的缺点在于通过最大采样或随机采样的方式选择向量使得最终的损失函数与注意力分布之间的函数关系不可导,无法使用反向传播算法进行训练,往往通过强化学习来进行训练
键值对注意力:key计算注意力分布,value计算局和信息
多头注意力:利用多个查询来并行的从输入信息中选择多组信息,但每个注意力关注输入信息的不同部分
以上假设所有输入信息都是同等重要的,是一种扁平结构(flat)
结构化注意力:输入信息本身具有层次结构(文本可分为 词、句子、段落、篇章不同粒度的层次) 因此使用层次化的注意力可以更好的进行信息选择
指针网络:将前文信息选择的2个步骤只用第一步,将注意力分布作为一个软性的指针(pointer)来指出相关信息的位置,比如输入长度N的向量序列 输出的是输入序列的下标
3.自注意力模型
RNN虽然可以建立长距离依赖关系但受限于信息传递的容量以及梯度消失等问题,因此建立长距离依赖关系主要通过:
(1)增加网络层数,通过一个深层网络来获取远距离的信息交互
(2)使用全连接网络,但无法处理变长的输入序列->这是就可以利用注意力机制来“动态”生成不同连接的权重->自注意力模型(Self -Attention Model)or内部注意力模型(Intra-Attention Model)
与FCN相比,连接权重是动态生成的,因此可以处理变长的信息序列。

在这里插入图片描述4.人脑中的记忆
长期记忆:神经元之间的连接-神经网络中的权重参数
短期记忆:神经元的活动-神经网络中的隐层状态
联想记忆:Associative Memory是指一种学习和记住不同对象之间关系的能力,计算机上体现为一种可以通过内容匹配的方法进行寻址的信息存储方式(基于内容寻址的存储,CAM)。与此相对的是根据地址进行存储(随机访问存储,RAM)
在这里插入图片描述
5.记忆增强神经网络
Memory Augmented Neural Network,MANN是为了增加网络容量,引入外部辅助记忆单元存储与任务相关的信息,需要时再进行读取。类比于计算机的内存
主要包括:主控制器、外部记忆单元、读取模块、写入模块
外部记忆的引入 可将神经网络的参数与记忆容量分离,即在少量增加网络参数的条件下可以大幅增加网络容量。
下面介绍典型的结构化外部记忆模型
5.1端到端记忆网络
外部记忆单元是只读的,网络可以多次从外部记忆中寻址后读取信息
5.2神经图灵机
Neural Turing Machine主要有控制器和外部记忆两个部件组成,控制器为一个前馈神经网络或一个RNN 外部记忆可读可写

6.基于神经动力学的联想记忆
自联想模型:亦称为自编码器,输入的模式和输出的模式在同一空间
异联想模型:输入模式和输出模式不再统一空间 广义上大部分机器学习问题属于此类

2020/4/24

Chapter 9 无监督学习

1.无监督学习是指从无标签的数据中学习出一些有用的模式,一般直接从原始数据中学习,不借助任何人为标注信息。
典型的无监督学习可分为:
无监督特征学习:从无标签的训练数据中挖掘有效的特征或表示,,一般用于降维、数据可视化或监督学习前期的数据预处理。
概率密度估计:简称魔都估计,根据一组训练样本来估计样本空间的概率密度,可进一步分为参数密度估计和非参数密度估计。参数密度估计是假设数据服从某个已知概率密度函数形式的分布(如高斯分布),然后根据训练样本取估计概率密度函数的参数;非参数密度估计是不假设数据服从某个遗址分布,只利用训练样本对密度进行估计,可以进行任意形状密度的估计。
聚类:将一组样本根据一定的准则划分到不同的簇(cluster)。
无监督学习三要素:模型、学习准则、优化算法
2.无监督学习算法
主成分分析投影将N维特征通过SVD投影到K维空间上完成降维
稀疏编码通过找到一组过完备的基向量+稀疏性限制得到“唯一”的稀疏编码。优点就是大大降低计算量、具有更佳的可解释性、自动实现特征选择用来降低噪声、减轻过拟合。
自编码器我的理解就是经过一个网络,只不过关注的不再是网络的输出,而是网络bottleneck学习到的高效的特征表述,一般是编码-解码网络。
在这里插入图片描述具体类型:
稀疏自编码器
变分自编码器
堆叠自编码器
降噪自编码器

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用,这篇笔记是关于卷积神经网络(CNN)的深度学习理论详解和项目实战的学习笔记。这篇笔记主要介绍了CNN在计算机视觉和图像识别中的应用。 根据引用,在CNN中,Co代表输出通道数(也称为卷积核数量),Ci代表输入通道数,Kh代表卷积核的高度,Kw代表卷积核的宽度。这些参数可以用来定义CNN的结构。 根据引用,你提到想要使用R语言实现一维CNN,并输入一些变量进行二分类。你可以按照想要的数据进行二分类,然后使用R语言编写代码来实现CNN,并添加损失函数的曲线。 希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [深度学习—卷积神经网络(CNN)全笔记,附代码](https://blog.csdn.net/weixin_58176527/article/details/125530000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [深度学习——CNN卷积神经网络个人理解笔记汇总](https://blog.csdn.net/m0_59998867/article/details/123696930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [语言实现一维CNN吗,想输入些变量实现二分类 就是有一些变量,想输入到cnn里算一下进行二分类,这个是想做...](https://download.csdn.net/download/Mrrunsen/88267034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值