YiKe Blog

more is less

深度学习「黑话」解释

最近在和研一学弟学妹交流的时候,发现它们对深度学习中一些非常基础的概念不是很理解,于是我想做一个汇总,大家有认为不太好理解的概念,可以在评论区提出,我会逐渐添加到这篇文章中 端到端(end-to-end,end2end):不需要做其他额外处理,从原始数据输入到任务结果输出,整个训练和预测过程,都是在模型里完成的 收敛:一般指的是某些指标(例如损失、准确率等)不再大幅度波动、震荡。...

SimCSE:对比学习,只需要 Dropout

要说2021年上半年NLP最火的论文,想必非《SimCSE: Simple Contrastive Learning of Sentence Embeddings》莫属。SimCSE的全称是Simple Contrastive Sentence Embedding Sentence Embedding Sentence Embedding一直是NLP领域的一个热门问题,主要是因为其应用范...

Contrastive Loss 中参数 τ 的理解

本文转自知乎CVPR2021自监督学习论文: 理解对比损失的性质以及温度系数的作用,在其基础上进行了部分删减以及公式化以达到更好地阅读效果 对比损失(Contrastive Loss)中的参数$\tau$是一个神秘的参数,大部分论文都默认采用较小的值来进行自监督对比学习(例如0.05),但是很少有文章详细讲解参数$\tau$的作用,本文将详解对比损失中的超参数$\tau$,并借此分析对比学...

最强的数据扩增方法竟然是添加标点符号

今天的这篇文章源自于EMNLP 2021 Findings,论文标题为《AEDA: An Easier Data Augmentation Technique for Text Classification》。实际上用一句话即可总结全文:对于文本分类任务来说,在句子中插入一些标点符号是最强的数据扩增方法 AEDA Augmentation 读者看到这肯定会想问:添加哪些标点符号?加多少?...

梯度累积

我们在训练神经网络的时候,超参数batch_size的大小会对模型最终效果产生很大的影响,通常的经验是,batch_size越小效果越差;batch_size越大模型越稳定。理想很丰满,现实很骨感,很多时候不是你想增大batch_size就能增大的,受限于显存大小等因素,我们的batch_size往往只能设置为2或4,否则就会出现”CUDA OUT OF MEMORY”(OOM)报错。如何在...

词向量的维度大概多少才够?

词向量的维度大概多少才够?先说结论,苏剑林大佬给出的估算结果是 \[n > 8.33 \log N \tag{1}\] 更简约的话可以直接记$n > 8\log N$,其中$N$是词表的大小,$n$是词向量的维度。当$n$超过这个阈值时,就说明模型有足够的容量容纳这$N$个词(当然$n$越大过拟合风险也越大)。这样一来,当$N=100000$时,得到的$n$大约是96,所以对...

WEISSI 正则

L2正则的表现通常没有理论上说的那么好,很多时候加了可能还有负作用。最近的一篇文章《Improve Generalization and Robustness of Neural Networks via Weight Scale Shifting Invariant Regularizations》从”权重尺度偏移”这个角度分析了L2正则的弊端,并提出了新的WEISSI正则项。本文将指出常...

L2正则化的一些思考

L约束与泛化 扰动敏感 记输入为$x$,输出为$y$,模型为$f$,模型参数为$\theta$,记为: $ y = f_{\theta}(x)\tag{1} $ 很多时候,我们希望得到一个”稳健”的模型。何为稳健?一般来说有两种含义,一是对于参数扰动的稳定性,比如模型变成了$f_{\theta + \Delta \theta}(x)$后是否还能达到相近的效果?而且还要考虑模型最终是否...

从loss的硬截断软化到FocalLoss

对于二分类模型,我们总希望模型能够给正样本输出1,负样本输出0,但限于模型的拟合能力等问题,一般来说做不到这一点。而事实上在预测中,我们也是认为大于0.5的就是正样本了,小于0.5的就是负样本。这样就意味着,我们可以“有选择”地更新模型,比如,设定一个阈值为0.6,那么模型对某个正样本的输出大于0.6,我就不根据这个样本来更新模型了,模型对某个负样本的输出小于0.4,我也不根据这个样本来更新...

Attention复杂度

实现 这里主要是针对苏神所提出的方法进行实现,但是由于笔者本人水平有限,因此最终实现的代码当中其实存在一些问题,主要是: 从测试结果来看,改进后的计算速度并没有提升 无法做到求和为1 代码实现主要是针对BERT的PyTorch实现这篇文章的代码,更具体的说,其实仅修改了ScaledDotProductAttention这个函数,因此下面只放出这部分代码 1 2 3 4 5...