/images/avatar.png

vllbc

EDA

NLP中的EDA

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

同义词替换

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

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};)

数据不平衡

数据不均衡

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

OOV问题

面试中经常被问到的一个问题就是out of vocabulary,可能是因为当前数据集中出现了提前准备好的单词表中没有的word,也可能是因为test中出现了train中没有的word。 ## 解决办法: 1. 直接Ignore 2. 将token分配为[unk] 3. 增大词表 4. 检查拼写 5. BPE算法或word piece 面试时可以展开说一下具体的算法过程,不再赘述。