/images/avatar.png

vllbc

N|

KMP

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

特征选择

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

early-stopping

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

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

过拟合的解决方法

  1. 数据增强,即增加样本,也可以半监督如UDA。
  2. 正则化(Dropout等)
  3. Batch norm。本质是加快训练,让训练更稳定,但也可以缓解过拟合。配合relu也会缓解dead relu问题。
  4. early-stop,在过拟合之前停下来。
  5. 降低模型复杂度,与第2点类似。
  6. 学习率衰减,按照固定的epoch后衰减学习率。
  7. 特征选择,选择主要的特征进行训练,本质也是降低模型复杂度。

EDA

NLP中的EDA

同义词替换,回译,近音字替换,随机插入随机交换随机删除

做法可以是维护一个同义词表,如哈工大的发布的同义词词典。在每次训练的时候,样本有一定的概率对里面的词语进行替换。如”自动驾驶、医疗、能源……一季度融资最多的人工智能公司” -> “自动驾车、医术、能源……一季度融资最多的人工智能公司”。根据经验,有条件的话最好用项目领域的同义词词典,如做医疗的文本,就用医疗的同义词词典,做金融领域的就用金融的同义词词典,而不是用一个通用的字典。

warmup

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

标签平滑

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