5 Jun

重温SSM(二):HiPPO的一些遗留问题

书接上文,在上一篇文章《重温SSM(一):线性系统和HiPPO矩阵》中,我们详细讨论了HiPPO逼近框架其HiPPO矩阵的推导,其原理是通过正交函数基来动态地逼近一个实时更新的函数,其投影系数的动力学正好是一个线性系统,而如果以正交多项式为基,那么线性系统的核心矩阵我们可以解析地求解出来,该矩阵就称为HiPPO矩阵。

当然,上一篇文章侧重于HiPPO矩阵的推导,并没有对它的性质做进一步分析,此外诸如“如何离散化以应用于实际数据”、“除了多项式基外其他基是否也可以解析求解”等问题也没有详细讨论到。接下来我们将补充探讨相关问题。

离散格式

假设读者已经阅读并理解上一篇文章的内容,那么这里我们就不再进行过多的铺垫。在上一篇文章中,我们推导出了两类线性ODE系统,分别是:
\begin{align}
&\text{HiPPO-LegT:}\quad x'(t) = Ax(t) + Bu(t) \label{eq:legt-ode}\\[5pt]
&\text{HiPPO-LegS:}\quad x'(t) = \frac{A}{t}x(t) + \frac{B}{t}u(t) \label{eq:legs-ode}\end{align}
其中$A,B$是与时间$t$无关的常数矩阵,HiPPO矩阵主要指矩阵$A$。在这一节中,我们讨论这两个ODE的离散化。

点击阅读全文...

30 May

在前一文《最小熵原理(二):“当机立断”之词库构建》中,我们以最小熵原理为出发点进行了一系列的数学推导,最终得到$(2.15)$和$(2.17)$式,它告诉我们两个互信息比较大的元素我们应该将它们合并起来,这有利于降低“学习难度”。于是利用这一原理,我们通过邻字互信息来实现了词库的无监督生成。

由字到词、由词到词组,考察的是相邻的元素能不能合并成一个好“套路”。可是套路为什么非得要相邻的呢?当然不一定相邻,我们学习语言的时候,不仅仅会学习到词语、词组,还要学习到“固定搭配”,也就是说词语怎么运用才是合理的,这是语法的体现,是本文所要探究的,希望最终能达到一定的无监督句法分析的效果。

由于这次我们考虑的是跨邻词的语言关联,因此我给它起个名字为“飞象过河”,正是

“套路宝典”第二式——“飞象过河”

语言结构

对于大多数人来说,并不会真正知道什么是语法,他们脑海里就只有一些“固定搭配”、“定式”,或者更正式一点可以叫“模版”。大多数情况下,我们是根据模版来说出合理的话来。而不同的人的说话模版可能有所不同,这就是个人的说话风格,甚至是“口头禅”。

点击阅读全文...

11 Jan

你可能不需要BERT-flow:一个线性变换媲美BERT-flow

BERT-flow来自论文《On the Sentence Embeddings from Pre-trained Language Models》,中了EMNLP 2020,主要是用flow模型校正了BERT出来的句向量的分布,从而使得计算出来的cos相似度更为合理一些。由于笔者定时刷Arixv的习惯,早在它放到Arxiv时笔者就看到了它,但并没有什么兴趣,想不到前段时间小火了一把,短时间内公众号、知乎等地出现了不少的解读,相信读者们多多少少都被它刷屏了一下。

从实验结果来看,BERT-flow确实是达到了一个新SOTA,但对于这一结果,笔者的第一感觉是:不大对劲!当然,不是说结果有问题,而是根据笔者的理解,flow模型不大可能发挥关键作用。带着这个直觉,笔者做了一些分析,果不其然,笔者发现尽管BERT-flow的思路没有问题,但只要一个线性变换就可以达到相近的效果,flow模型并不是十分关键。

余弦相似度的假设

一般来说,我们语义相似度比较或检索,都是给每个句子算出一个句向量来,然后算它们的夹角余弦来比较或者排序。那么,我们有没有思考过这样的一个问题:余弦相似度对所输入的向量提出了什么假设呢?或者说,满足什么条件的向量用余弦相似度做比较效果会更好呢?

点击阅读全文...

17 Apr

上一篇文章《生成扩散模型漫谈(二十二):信噪比与大图生成(上)》中,我们介绍了通过对齐低分辨率的信噪比来改进noise schedule,从而改善直接在像素空间训练的高分辨率图像生成(大图生成)的扩散模型效果。而这篇文章的主角同样是信噪比和大图生成,但做到了更加让人惊叹的事情——直接将训练好低分辨率图像的扩散模型用于高分辨率图像生成,不用额外的训练,并且效果和推理成本都媲美直接训练的大图模型!

这个工作出自最近的论文《Upsample Guidance: Scale Up Diffusion Models without Training》,它巧妙地将低分辨率模型上采样作为引导信号,并结合了CNN对纹理细节的平移不变性,成功实现了免训练高分辨率图像生成。

思想探讨

我们知道,扩散模型的训练目标是去噪(Denoise,也是DDPM的第一个D)。按我们的直觉,去噪这个任务应该是分辨率无关的,换句话说,理想情况下低分辨率图像训练的去噪模型应该也能用于高分辨率图像去噪,从而低分辨率的扩散模型应该也能直接用于高分辨率图像生成。

点击阅读全文...

26 Nov

《环球科学》:超越费曼图

虽然文章的大部分内容我都还无法弄懂,但是这里边讲述的振奋人心的内容让我决定把它转载过来。文章说,将大自然的各种力统一起来,或许没有物理学家原来所想的那么困难。

撰文∕ 伯尔尼(Zvi Bern)、狄克森(Lance J. Dixon)寇索尔(David A. Kosower)
翻译∕ 高涌泉(台湾大学物理系教授)
提供/ 科学人(Scientific American繁体中文版)

重点提要

物理学家对于粒子碰撞的了解,最近经历了一场宁静革命。知名物理学家费曼所引入的观念对于很多应用而言已到达极限。作者与合作者已经发展出新的方法。

物理学家利用新方法,可以更可靠地描述在大强子对撞机(LHC)那种极端条件下普通粒子的行为,这将帮助实验学家寻找新粒子与新作用力。

新方法还有更为深刻的应用:它让一种于1980年代被物理学家放弃的统一理论有了新生命,重力看起来像是双份的强核力一起作用。

春天某个晴朗的日子,本文作者狄克森从英国伦敦地铁的茂恩都站进入地铁,想前往希斯洛机场。伦敦地铁每天有300万名乘客,他瞧着其中一位陌生人,无聊地想着:这位老兄会从温布尔登站离开地铁的机率有多大?由于此人可能搭上任何一条地铁路线,所以该如何推算这个机率呢?他想了一会,领悟到这个问题其实跟粒子物理学家所面对的麻烦很像,那就是该如何预测现代高能实验中粒子碰撞的后果。

欧洲核子研究组织(CERN)的大强子对撞机(LHC)是这个时代最重要的探索实验;它让质子以近乎光速前进并相撞,然后研究碰撞后的碎片。我们知道建造对撞机及侦测器得用上最尖端的技术,然而较不为人知的是,解释侦测器的发现同样也是极为困难的挑战。乍看之下,它不应该那么困难才对,因为基本粒子的标准模型早已确立,理论学家也一直用此模型来预测实验的结果,而且理论预测所依赖的是著名物理学家费曼(Richard P. Feynman)早在60多年前就发展出来的计算技巧,每位粒子物理学家在研究生阶段都学过费曼的技巧;关于粒子物理的每本科普书、每篇科普文章,也都借用了费曼的概念。

点击阅读全文...

23 Mar

【通知转载】国家天文台信息技术类人才招聘

文章来源:国家天文台

国家天文台LAMOST大科学工程面向全社会招聘信息技术类人才若干名,主要从事数据密集型天文学研究、数据库设计开发、天文应用软件服务开发、数据处理、数据挖掘、数值模拟、高性能计算、算法优化、网站网页设计维护、天文数据整理与管理、网络科普教育等工作。大天区面积多目标光纤光谱天文望远镜(LAMOST)是一项国家重大科学工程项目。该工程项目于2008年底竣工,2009年6月通过国家验收,正处于观测试运行阶段。LAMOST天文望远镜是我国已建成的最大、最先进的天文观测设备,是世界上光谱观测效率最高的望远镜,4米口径5度视场,每次可观测4000个目标,每晚可观测数万个目标,获得数十GB的数据,每年可获得数TB的科学数据。如何处理、分析、管理、发布、挖掘如此海量的数据,就是诚聘的上述人才所要面临的挑战。

点击阅读全文...

27 Jun

Project Euler 454 :五天攻下“擂台”

进入期末了,很多同学都开始复习了,这学期我选的几门课到现在还不是很熟悉,本想也在趁着这段时间好好看看。偏生五天前我在浏览数学研发论坛的编程擂台时看到了这样的一道题目

设对于给定的$L$,方程
$$\frac{1}{x}+\frac{1}{y}=\frac{1}{n}$$
满足$0 < x < y \leq L$的正整数解共有$f(L)$种情况。比如$f(6)=1,f(12)=3,f(1000)=1069$,求$f(10^{12})$。

这道题目的来源是Project Euler的第454题:Diophantine reciprocals III(丢潘图倒数方程),题目简短易懂,但又不失深度,正符合我对理想题目的定义。而且最近在学习Python学习得不亦乐乎,看到这道题目就跃跃欲试。于是乎,我的五天时间就没有了,而且过程中几乎耗尽了我现在懂的所有编程技巧。由于不断地测试运行,我的电脑发热量比平时大了几倍,真是辛苦了我的电脑。最后的代码,自我感觉已经是我目前写的最精彩的代码了。在此与大家共享和共勉~

上述表达式是分式,不利于编程,由于$n=\frac{xy}{x+y}$,于是上述题目也等价于求$(x+y)|xy$(意思是$x+y$整除$xy$)的整数解。

点击阅读全文...

11 Jun

用PyPy提高Python脚本执行效率

《两百万前素数之和与前两百万素数之和》中,我们用Python求了前两百万的素数和以及两百万前的素数和,并且得到了在Python 3.3中的执行时间如下:

两百万前的素数之和:
142913828922
time: 2.4048174478605646

前两百万的素数之和:
31381137530481
time: 46.75734807838953

于是想办法提高python脚本的执行效率,我觉得在算法方面,优化空间已经比较小了,于是考虑执行器上的优化。在搜索的无意间我看到了一个名词——Psyco!这是python的一个外部模块,导入后可以加快.py脚本的执行。网上也有《用 Psyco 让 Python 运行得像 C一样快》、《利用 psyco 让 Python 程序执行更快》之类的文章,说明Psyco确实是一个可行的选择,于是就跃跃欲试了,后来了解到Psyco在2012年已经停止开发,只支持到Python 2.4版本,目前它由 PyPy所接替。于是我就下载了PyPy

点击阅读全文...