/images/avatar.png

vllbc

KMP

KMP是字符串匹配问题的算法。“字符串A是否为字符串B的子串?如果是的话出现在B的哪些位置?”该问题就是字符串匹配问题,字符串A称为模式串,字符串B称为主串

特征选择

特征选择特征工程里的一个重要问题,其目标是寻找最优特征子集。特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化模型,协助理解数据产生的过程。并且常能听到“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”,由此可见其重要性。但是它几乎很少出现于机器学习书本里面的某一章。然而在机器学习方面的成功很大程度上在于如果使用特征工程。

early-stopping

介绍

早停止(Early Stopping)是 当达到某种或某些条件时,认为模型已经收敛,结束模型训练,保存现有模型的一种手段

如何判断已经收敛?主要看以下几点: - 验证集上的Loss在模型多次迭代后,没有下降 - 验证集上的Loss开始上升。 这时就可以认为模型没有必要训练了,可以停止了,因为训练下去可能就会发生过拟合,所以早停法是一种防止模型过拟合的方法。

warmup

在训练开始的时候,如果学习率太高的话,可能会导致loss来回跳动,会导致无法收敛,因此在训练开始的时候就可以设置一个很小的learning rate,然后随着训练的批次增加,逐渐增大学习率,直到达到原本想要设置的学习率。

标签平滑

神经网络会促使自身往正确标签和错误标签差值最大的方向学习,在训练数据较少,不足以表征所有的样本特征的情况下,会导致网络过拟合。因为onehot本身就是一个稀疏的向量,如果所有无关类别都为0的话,就可能会疏忽某些类别之间的联系。 具体的缺点有: - 真是标签与其它标签之间的关系被忽略了,很多有用的知识学不到了。 - 倾向于让模型更加武断,导致泛化性能差 - 面对有噪声的数据更容易收到影响。

调参技巧

  • 基本原则:快速试错。
  • 小步试错,快速迭代
  • 可以试试无脑的配置
  • 实时打印一些结果
  • 自动调参:网格搜索、random search、贝叶斯优化、
  • 参数初始化
  • 学习率warmup,慢慢增加,然后学习率衰减。

batch_size和lr

大的batchsize收敛到sharp minimum,而小的batchsize收敛到flat minimum,后者具有更好的泛化能力。两者的区别就在于变化的趋势,一个快一个慢,如下图,造成这个现象的主要原因是小的batchsize带来的噪声有助于逃离sharp minimum。

对抗训练

Min-Max公式

$$ {} {(x,y) }U[{r{adv}}L(,x+r_{adv},y)]

$$

  1. 内部max是为了找到worst-case的扰动,也就是攻击,其中, \(L\)为损失函数, \(\mathbb{S}\) 为扰动的范围空间。
  2. 外部min是为了基于该攻击方式,找到最鲁棒的模型参数,也就是防御,其中 \(\mathbb{D}\) 是输入样本的分布。 简单理解就是在输入上进行梯度上升(增大loss),在参数上进行梯度下降(减小loss)

加入扰动后的损失函数

$$ {} -P(y |x+r{adv};)

数据不平衡

数据不均衡

所谓的不平衡指的是不同类别的样本量差异非常大,或者少数样本代表了业务的关键数据(少量样本更重要),需要对少量样本的模式有很好的学习。样本类别分布不平衡主要出现在分类相关的建模问题上。样本类别分布不平衡从数据规模上可以分为大数据分布不平衡和小数据分布不平衡两种。