梯度下降的类型
有三种流行的梯度下降类型,主要区别在于它们使用的数据量:
- 批量梯度下降(Batch gradient descent)
批量梯度下降,也称为 vanilla 梯度下降,计算训练数据集中每个示例的误差,但只有在评估所有训练示例后,模型才会更新。整个过程就像一个循环,称为训练时期。
批量梯度下降的一些优点是计算效率高,它产生稳定的误差梯度和稳定的收敛。一些缺点是稳定的误差梯度有时会导致模型无法达到的最佳收敛状态。它还要求整个训练数据集都在内存中并且可供算法使用。 - 随机梯度下降(stochastic gradient descent)
相比之下,随机梯度下降 (SGD) 会针对数据集中的每个训练示例执行此操作,这意味着它会逐一更新每个训练示例的参数。根据问题的不同,这可以使 SGD 比批量梯度下降更快。一个优势是频繁的更新使我们能够获得非常详细的改进率。
然而,频繁更新在计算上比批量梯度下降方法更昂贵。此外,这些更新的频率会导致噪声梯度,这可能会导致错误率跳跃而不是缓慢下降。 - 小批量梯度下降(Mini-batch gradient descent)
小批量梯度下降是首选方法,因为它结合了 SGD 和批量梯度下降的概念。它只是将训练数据集拆分为小批量,并为每个批次执行更新。这在随机梯度下降的鲁棒性和批量梯度下降的效率之间创造了平衡。
常见的小批量大小范围在 50 到 256 之间,但与任何其他机器学习技术一样,没有明确的规则,因为它因不同的应用程序而异。这是训练神经网络时的首选算法,也是深度学习中最常见的梯度下降类型。
迁移学习
解释一
迁移学习(Transfer learning) 顾名思义就是就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习(starting from scratch,tabula rasa)。迁移学习的粗略介绍
博主目前的理解是迁移学习就是将训练好的泛化能力比较强的模型(比如ImageNet训练好的模型)作为自己模型的预训练模型,在这个模型上进行训练。
- 迁移学习时候只能用和预训练模型一样的模型吗? 不是看下面解释
解释二
原文链接:
一、 迁移学习的概念
迁移学习(Transfer learning) 顾名思义就是把已训练好的模型(预训练模型)参数迁移到新的模型来帮助新模型训练。
迁移学习是一种思想,而不是一种方法。具体而言是将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中。
根据问题不同、领域之间的数据分布假设不同,会有不同的方法。
二、 迁移学习的好处
1、更高的起点:在微调之前,模型的初始性能更高;
2、更高的斜率:训练过程中,模型提升的速率更快;(梯度下降得快)
3、更高的渐进:训练结束后,得到的模型收敛更好。
三、 迁移学习的手段
重点来了:实现迁移学习有以下三种手段:(博主没有太理解1,2之间的区别)
1、Transfer Learning:冻结预训练模型的全部卷积层,只训练自己定制的全连接层。
2、Extract Feature Vector:先计算出预训练模型的卷积层对所有训练和测试数据的特征向量,然后抛开预训练模型,只训练自己定制的简配版全连接网络。
3、Fine-tuning:冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层,因为这些层保留了大量底层信息,泛化能力强)甚至不冻结任何网络层,训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。
Batch Normalization
梯度流,梯度消失,梯度爆炸
梯度下降
- 梯度指向函数增大的方向,所以要减去梯度乘以学习率
- 梯度下降优化算法
1.Adagrad(参考李宏毅老师机器学习)
- 将学习率除以过去以及这次所有偏导数的均方根
- Adagrad 的主要好处之一是它消除了手动调整学习率的需要。大多数实现使用默认值 0.01
并保留它。 - Adagrad 的主要弱点是它在分母中累积平方梯度:由于每个添加项都是正数,因此在训练过程中累积的总和不断增长。这反过来会导致学习率缩小并最终变得无限小,此时算法不再能够获取额外的知识。以下算法旨在解决此缺陷
- 这样调整学习率的好处???
博主理解(借用知乎图) - 注:上面公式图中g为向量,除以的是该分量历史梯度的均方根,和其他分量没关系
所以对于梯度大的(b)分量(常更新参数参数学习),之前梯度的均方根也大,除以大的学习率变小得更快
反之(w)梯度小,(不常更新的的参数)学习率下降慢
所以如上图所示,降低了b的学习率整体下降的更快
CSPNet
正则化
- 目的:防止过拟合
- 对每一层的mini-batch进行正则化,使每一层输入的每个特征均值为0, 方差为1, 保证即使网络权重改变,每层的输入分布是相同的,网络每层之间的学习是相互独立的,加快网络收敛速度,但是只有正则化会降低模型表达能力,所以引入r, b,恢复数据表达能力
DBSCAN聚类算法
直接密度可达,密度可达,密度连接
DBSCAN 需要两个参数:ε (eps) 和形成高密度区域所需要的最少点数 (minPts),它由一个任意未被访问的点开始,然后探索这个点的 ε-邻域,如果 ε-邻域里有足够的点,则建立一个新的聚类,否则这个点被标签为杂音。注意这个点之后可能被发现在其它点的 ε-邻域里,而该 ε-邻域可能有足够的点,届时这个点会被加入该聚类中。
如果一个点位于一个聚类的密集区域里,它的 ε-邻域里的点也属于该聚类,当这些新的点被加进聚类后,如果它(们)也在密集区域里,它(们)的 ε-邻域里的点也会被加进聚类里。这个过程将一直重复,直至不能再加进更多的点为止,这样,一个密度连结的聚类被完整地找出来。然后,一个未曾被访问的点将被探索,从而发现一个新的聚类或杂音。