划水小结

  1. 训练模型机制的由来
    1. 面对生产生活中的实际问题,我们常用建立模型的思路把它们抽象成各种相对简单的、便于分析和处理的模型,从而能更好地认识问题和解决问题。在计算机的一些工程中,我们常常需要把问题抽象成一个三阶段的模型:input——model——output。input和output都是数据流,我们的任务是优化model。我处理的许多Input都是图片,output则可以是分类的class label,回归的一些参数,或是两者的组合。
    2. 优化model的前提是对model有一个评价的标准,无论是定性的还是定量的。一般工程任务中都是定量的指标,因为这方便比较嘛。有了指标,肯定会有评测的数据集,我们称其为测试集D_{test}。接下来讨论建模。有的任务,比方说统计一下历年哪个月人均GDP产值最高,这可以抽象成求定长数组的最大元素的序号问题,而这个抽象出的模型是可以根据数据的规模\Theta,给出关于\Theta的确定的时空复杂度的算法的,它们的解也是唯一确定的——换句话说,算法的精度和数据的多寡无关。还有一些问题,比方说图片的分类问题、房价预测问题,在对这些问题进行建模的时候,设计的算法往往是根据:(1)历史数据/经验;(2)对该问题的剖析和认识 ,即深度和广度这两个维度的,这时算法的精度与数据的规模就有关系了。CV领域中广泛使用的深度学习方法,由于缺乏足够的可解释性,在我看来更像是一种经验科学;而基于这种经验科学的算法设计,其最终性能往往与数据质量有很大的关系。这些用于支撑算法性能的数据,我们称之为训练集D_{train}
    3. 设想一下,什么样的训练集对于模型来说是高质量的呢?容易想到的一点是,D_{test}=D_{train}。但往往说这样的操作是在作弊,因为测试集和训练集按说都是对我们抽象的问题的解空间的采样,而不代表整个解空间。如果你拿同样的数据集作为训练集和测试集,那么即便你的模型在这个数据集上性能表现非常好,而在解空间的其他区域性能很差,你也不造啊。所以一方面是在构建数据集的时候,希望构建的测试集能尽可能地体现出解空间的特点;另一方面呢,就是训练集和测试集具有相似的分布D_{train}\sim D_{test},使得我们的模型只要能在训练集上达到比较好的指标,就能在测试集上大概率复现这个结果。训练模型时的一个重要假设,就是训练集数据集分布具有相似性;否则的话,可能就要进行domain adaptation,knowledge transformation的操作了。
  2. 最优化问题与loss function
    1. 有了定量的评价指标之后,需要设计一个方案,让模型可以一步到位达到指标的要求,或者稳步地提升指标。如果模型是基于那些需要数据集支撑的算法的话,很可能没法直接求出一个一步到位的模型,而是需要不断迭代模型直至其性能达标。这很容易让人联想到数值分析里面的解析解和数值解:对于一些复杂的求解方程式,以现有条件可能很难给出一个解析解,或者根本给不出解析解;但是我们可以给出一个能控制其误差范围\pm \delta的数值解。数值分析中有很多关于最优化问题的求解技巧,包括设计目标函数,以及各种求解策略。
    2. 我所处理的主要任务是CV领域的分类和检测(分类+位置回归)问题。
      1. 分类任务中常用的损失函数:交叉熵损失函数CE(平方损失函数一般较少用,因为logistic regression+平方损失函数之后,问题非凸
      2. 回归任务重常用的损失函数:均方损失函数MSE,Huber损失(误差很小时取平方的loss)
  3. 学习率问题
    1. 以梯度下降为例来感受不同的学习率\alpha对收敛过程以及模型参数\Theta的影响:\Theta_{t} =\Theta_{t-1} +\alpha {L}'(\Theta_{t-1})
      1. 分段常数衰减
      2. 指数减缓(exponential decay):\alpha=\alpha_{0} e^{-kt}
      3. 余弦退火(cosine anneal):\alpha_{t}=\alpha_{min}^{i}+0.5(\alpha_{max}^{i}-\alpha_{min}^{i})(1+cos(\frac{T_{cur}}{T_{i}}\pi))
      4. 动量(momentum)——考虑前一次迭代对本次迭代的影响:d_{t}=\beta d_{t-1}+\alpha {L}'(\Theta_{t-1}),\Theta_{t} =\Theta_{t-1} +d_{t}
      5. Nesterov——考虑了目标函数二阶导数的信息:d_{t}=\beta d_{t-1}+\alpha {L}'(\Theta-\beta d_{t-1}),\Theta_{t} =\Theta_{t-1} + d_{t}
      6. (gradual) warmup:让模型学习率线性增长,然后回到初设的学习率(相比一开始就是大的learning rate,可以避免模型训练初期学偏了)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值