26 Feb

有限Vs无限:无穷电荷板的场|平行板电容

学过高中物理的同学都会知道,在经典力学和静电学理论中,万有引力和库仑力有着类似的性质,它们都与距离平方成反比。现在我从引力角度向大家提出一个问题:

一块密度均匀的无限大的平面板,它所产生的引力场是否均匀的?也就是说,板外任意一点的等质量物体受到的引力是否相同?

对于静电力也可以提出类似的问题,只要把引力换成库仑力,把质量换成电荷即可。只要类比有限的情况,我们就会得出结论:场一定是不均匀的!因为力与距离平方成反比,距离不同,受力就不等。果真如此吗?

点击阅读全文...

6 May

变分自编码器(五):VAE + BN = 更好的VAE

本文我们继续之前的变分自编码器系列,分析一下如何防止NLP中的VAE模型出现“KL散度消失(KL Vanishing)”现象。本文受到参考文献是ACL 2020的论文《A Batch Normalized Inference Network Keeps the KL Vanishing Away》的启发,并自行做了进一步的完善。

值得一提的是,本文最后得到的方案还是颇为简洁的——只需往编码输出加入BN(Batch Normalization),然后加个简单的scale——但确实很有效,因此值得正在研究相关问题的读者一试。同时,相关结论也适用于一般的VAE模型(包括CV的),如果按照笔者的看法,它甚至可以作为VAE模型的“标配”。

最后,要提醒读者这算是一篇VAE的进阶论文,所以请读者对VAE有一定了解后再来阅读本文。

VAE简单回顾

这里我们简单回顾一下VAE模型,并且讨论一下VAE在NLP中所遇到的困难。关于VAE的更详细介绍,请读者参考笔者的旧作《变分自编码器(一):原来是这么一回事》《变分自编码器(二):从贝叶斯观点出发》等。

VAE的训练流程

VAE的训练流程大概可以图示为

VAE训练流程图示

VAE训练流程图示

点击阅读全文...

7 Jan

基于遗忘假设的平滑公式

统计是通过大量样本来估计真实分布的过程,通常与统计相伴出现的一个词是“平滑”,即对统计结果打折扣的处理过程。平滑的思想来源于:如果样本空间非常大,那么统计的结果是稀疏的,这样由于各种偶然因素的存在,导致了小的统计结果不可靠,如频数为1的结果可能只是偶然的结果,其频率并不一定近似于$1/N$,频数为0的不一定就不会出现。这样我们就需要对统计结果进行平滑,使得结论更为可靠。

平滑的方法有很多,这里介绍一种基于遗忘假设的平滑公式。假设的任务为:我们要从一批语料中,统计每个字的字频。我们模仿人脑遗忘的过程,假设这个字出现一次,我们脑里的记忆量就增加1,但是如果一个周期内(先不管这个周期多大),这个字都没有出现,那么脑里的记忆量就变为原来的$\beta$比例。假设字是周期性出现的,那么记忆量$A_n$就满足如下递推公式
$$A_{n+1} = \beta A_n + 1$$

点击阅读全文...

14 Oct

训练集、验证集和测试集的意义

在有监督的机器学习中,经常会说到训练集(train)、验证集(validation)和测试集(test),这三个集合的区分可能会让人糊涂,特别是,有些读者搞不清楚验证集和测试集有什么区别。

划分

如果我们自己已经有了一个大的标注数据集,想要完成一个有监督模型的测试,那么通常使用均匀随机抽样的方式,将数据集划分为训练集、验证集、测试集,这三个集合不能有交集,常见的比例是8:1:1,当然比例是人为的。从这个角度来看,三个集合都是同分布的。

点击阅读全文...

10 Apr

分享一次专业领域词汇的无监督挖掘

去年 Data Fountain 曾举办了一个“电力专业领域词汇挖掘”的比赛,该比赛有意思的地方在于它是一个“无监督”的比赛,也就是说它考验的是从大量的语料中无监督挖掘专业词汇的能力。

这个显然确实是工业界比较有价值的一个能力,又想着我之前也在无监督新词发现中做过一定的研究,加之“无监督比赛”的新颖性,所以当时毫不犹豫地参加了,然而最终排名并不靠前~

不管怎样,还是分享一下我自己的做法,这是一个真正意义上的无监督做法,也许会对部分读者有些参考价值。

基准对比

首先,新词发现部分,用到了我自己写的库nlp zero,基本思路是先分别对“比赛所给语料”、“自己爬的一部分百科百科语料”做新词发现,然后两者进行对比,就能找到一批“比赛所给语料”的特征词。

点击阅读全文...

5 Dec

万能的seq2seq:基于seq2seq的阅读理解问答

今天给bert4keras新增加了一个例子:阅读理解式问答(task_reading_comprehension_by_seq2seq.py),语料跟之前一样,都是用WebQA和SogouQA,最终的得分在0.77左右(单模型,没精调)。

用seq2seq做阅读理解的模型图示

用seq2seq做阅读理解的模型图示

方法简述

由于这次主要目的是给bert4keras增加demo,因此效率就不是主要关心的目标了。这次的目标主要是通用性和易用性,所以用了最万能的方案——seq2seq来实现做阅读理解。

用seq2seq做的话,基本不用怎么关心模型设计,只要把篇章和问题拼接起来,然后预测答案就行了。此外,seq2seq的方案还自然地包括了判断篇章有无答案的方法,以及自然地导出一种多篇章投票的思路。总而言之,不考虑效率的话,seq2seq做阅读理解是一种相当优雅的方案。

这次实现seq2seq还是用UNILM的方案,如果还不了解的读者,可以先阅读《从语言模型到Seq2Seq:Transformer如戏,全靠Mask》了解相应内容。

点击阅读全文...

26 Dec

“非自回归”也不差:基于MLM的阅读理解问答

前段时间写了《万能的seq2seq:基于seq2seq的阅读理解问答》,探索了以最通用的seq2seq的方式来做阅读理解式问答,并且取得相当不错的成绩(单模型0.77,超过参加比赛时精调的最佳模型)。这篇文章我们继续做这个任务,不过换一个思路,直接基于MLM模型来做,最终成绩基本一致,但能提高预测速度。

用MLM做阅读理解的模型图示(其中[M]表示[MASK]标记)

用MLM做阅读理解的模型图示(其中[M]表示[MASK]标记)

点击阅读全文...

6 Nov

那个屠榜的T5模型,现在可以在中文上玩玩了

不知道大家对Google去年的屠榜之作T5还有没有印象?就是那个打着“万事皆可Seq2Seq”的旗号、最大搞了110亿参数、一举刷新了GLUE、SuperGLUE等多个NLP榜单的模型,而且过去一年了,T5仍然是SuperGLUE榜单上的第一,目前还稳妥地拉开着第二名2%的差距。然而,对于中文界的朋友来说,T5可能没有什么存在感,原因很简单:没有中文版T5可用。不过这个现状要改变了,因为Google最近放出了多国语言版的T5(mT5),里边当然是包含了中文语言。虽然不是纯正的中文版,但也能凑合着用一下。

“万事皆可Seq2Seq”的T5

“万事皆可Seq2Seq”的T5

本文将会对T5模型做一个简单的回顾与介绍,然后再介绍一下如何在bert4keras中调用mT5模型来做中文任务。作为一个原生的Seq2Seq预训练模型,mT5在文本生成任务上的表现还是相当不错的,非常值得一试。

点击阅读全文...