为什么【在家办公比上班还累】?

野原广志在家工作的一天

《在家里工作的爸爸哦》

小新爸爸在家工作哦_1
赖床
小新爸爸在家工作哦_2
吃早饭
小新爸爸在家工作哦_3
立志今天要在家好好工作
小新爸爸在家工作哦_4
帮野原美伢洗衣服
小新爸爸在家工作哦_5
延缓工作开始时间
小新爸爸在家工作哦_6
照顾小葵
小新爸爸在家工作哦_7
更换工作地点
小新爸爸在家工作哦_8
帮野原美伢收棉被
小新爸爸在家工作哦_9
帮野原美伢收快递
小新爸爸在家工作哦_10
帮小新送东西
小新爸爸在家工作哦_11
结果一天下来只写了三个字

看到这里想必大家也知道为什么在家里工作效率低了。从《蜡笔小新》这个纪实版动画可以分析得知大致有以下几个原因:

  1. 工作与生活的时间界限感不强,导致工作的开始时间不明确;
  2. 被家里的琐事频繁打断:例如洗衣服,照顾小孩,收快递,送东西等;
  3. 自制力不强:容易被电视,电脑,游戏等好玩的东西所吸引。

因此,野原广志在家一天工作的产出几乎是零。

解决这类问题的思路有以下几个:

1. 划清工作和生活的界限:找一个单独的房间,不被打扰,专心致志地工作。让自己从工作切换到生活的成本增加,而不是处于可以随意地切换工作与生活的状态。如果找不到相应的房间,就找一个桌子,日常生活不要坐到桌子前。但是一旦坐到了桌子前,就表示进入了工作状态。就表示不能够轻易地被打扰,要尽快开始一天的工作。

工作桌子
工作台

2. 使用日历表:根据自身情况,制定基于自己工作和生活状态的日历表,使用 Google Calendar 或者其他计时工具,把自己一天的日程安排下来,让自己在固定的时间内做固定的事情,不要被其他事情所打扰。

例如下图,就是笔者在上班的时候的日程安排:

日程表_1
日程表

3. 制定详细的工作计划:包括制定每天需要输出的工作内容,无论是写了多少企划书,写了多少页 PPT,写了多少代码,完成了多少个功能点,都需要有非常明确的指标。只有制定了明确的目标,才能够督促自己完成任务。

工作计划
计划

4. 规划固定时间:吃饭,睡觉,娱乐等固定的时间先划分好,不到万不得已,不能随便改变生活规律,一旦改变生活规律,要想纠正回正常状态就会非常的困难。

日程安排
规律的时间安排

5. 区分工作内容:提前区分哪些是需要团队协作的项目,哪些是靠自己就能够独立完成的项目。对于需要团队协作的项目,尽量提前安排好时间,毕竟跨地域沟通需要一定的成本,需要对方也在线,把时间和人提前安排好会明显优于临时安排。对于那些靠自己就能够独立完成的项目而言,只需要保证工作的时候不被打扰,专心致志地做完即可。

团队
团队协作

职场人士在家工作确实可以体验自由职业者谋生或者博士生做科研的状态,确实也可以做到自行安排自己的时间,但是要做时间的主人,而不是做时间的奴隶。

 

素数之美

素数的定义

素数是在中小学课本里面就会出现的数学概念,它指的是只能够被 1 和它本身整除的正整数。在正整数中,2, 3, 5, 7, 11 等都是素数。同时,每一个正整数(不小于 2)都可以写成多个素数的乘积,例如 35 = 5 * 7, 10 = 2 * 5。从素数的定义可以看出,判断一个数是否是素数是需要通过“乘法”的。而在数学的研究历程中,数学家们同样也关心由素数之间的加法所产生的奇妙结论。

100以内素数表
100 以内的素数表

哥德巴赫猜想(Goldbach’s Conjecture)

随着徐迟的报告文学《哥德巴赫猜想》的问世,哥德巴赫猜想在国内早已家喻户晓。其中,哥德巴赫猜想包括两个部分:

  1. [Theorem] 每一个大于 7 的奇数都可以写成三个素数之和;
  2. [Conjecture] 每一个大于 6 的偶数都可以写成两个素数之和。
Goldbach_手稿_1
哥德巴赫的手稿

从猜想的陈述来看,如果第 2 部分是正确的,那么可以根据公式 n = (n-3) +3 直接得到第 1 部分是正确的,因此第 2 部分被称为强哥德巴赫猜想,第 1 部分被称为弱哥德巴赫猜想。其中哥德巴赫猜想的第 1 部分已经被彻底解决,而哥德巴赫猜想的第 2 部分目前最好的结果被称为陈氏定理( Chen’s Theorem)。用数学的语言来说,这两个定理的陈述分别是:

[Theorem (Vinogradov)] 假设 N 是一个奇数,令 r(N) = \sum_{p_{1}+p_{2}+p_{3}=N}1 表示关于 N 的计数函数,其中 p_{1}, p_{2}, p_{3} 都是素数。则存在一个一致有界的函数 \Omega(N) \in (c_{1},c_{2})c_{2}>c_{1}>0)对于充分大的奇数 N,有以下式子成立

r(N) = \Omega(N)\cdot \frac{N^{2}}{(\ln(N))^{3}}\cdot\bigg\{1+O\bigg(\frac{\ln\ln(N)}{\ln(N)}\bigg)\bigg\}.

备注:从以上公式可以看出,\lim_{N\rightarrow \infty} r(N) = +\infty. 换句话说,\exists N_{0}, \forall N\geq N_{0}, 弱哥德巴赫猜想成立。

[Theorem (Chen)] 假设 N 是一个偶数,令 r(N)=\sum_{p+n=N}1 表示关于 N 的计数函数,其中 p 是素数,n 表示最多为两个素数的乘积。则当 n 充分大的时候,有以下式子成立:

r(N) >> \Omega(N)\cdot \frac{2N}{(\ln(N))^{2}},

其中 \Omega(N) = \prod_{p>2} \bigg(1-\frac{1}{(p-1)^{2}}\bigg)\prod_{p|N, p>2}\frac{p-1}{p-2}.

备注:

  1. 在哥德巴赫猜想的研究过程中,通常数学家把偶数可表示为 a 个素数的乘积与 b 个素数的乘积之和这个问题,简称为 a + b 问题。所以,陈景润证明的 “1+2” 并不是指 1+2 = 3,而指的是对于每一个充分大的偶数,要么是两个素数之和,要么是一个素数加上两个素数之积。其实可以简单的理解为 p_{1}+p_{2} 或者 p_{1}+p_{2}\cdot p_{3},在这里 p_{1},p_{2},p_{3} 都是素数。从以上公式可以看出,\lim_{N\rightarrow \infty} r(N) = +\infty.
  2. 1920 年,挪威数学家 V.Brun 证明了 “9+9″,开启了数学家研究哥德巴赫猜想之路;1966 年,中国数学家陈景润证明了 “1+2″,把素数的筛法推向了顶峰。

孪生素数猜想(Twin Primes Conjecture)

在上千年的素数研究历程中,除了哥德巴赫猜想,孪生素数(Twin Primes)的研究也是数论中的一个重要课题。所谓孪生素数就是相差为 2 的两个素数,例如 (3,5), (5,7), (11,13),\cdots 等等。因此,就有人提出猜想:孪生素数有无穷多对。换句话说,如果用 p_{n} 表示第 n 个素数,那么孪生素数猜想就是 \liminf_{n\rightarrow +\infty}(p_{n+1}-p_{n})=2. 除了孪生素数本身之外,也有学者猜测,对于所有的正整数 k\geq 1, 形如 (p,p+2k) 的素数对同样有无穷多对。于是,在网上就有人对于有限的素数对进行了计算,让大家更好地看到素数之间的分布情况。

Twin_Prime_2
孪生素数及其推广

下面是部分关于素数间距(小间距,Small Gaps)的结论:

  1. 1940 年,Paul Erdos 证明 \exists c>0 使得 \liminf_{n\rightarrow\infty} \frac{p_{n+1}-p_{n}}{\ln(p_{n})}<c.
  2. 2005 年,Daniel Goldston,Janos Pintz 和 Cem Yildirim 证明 \liminf_{n\rightarrow\infty}\frac{p_{n+1}-p_{n}}{\ln(p_{n})}=0.
  3. 2007 年,上述结果被改进为 \liminf_{n\rightarrow\infty}\frac{p_{n+1}-p_{n}}{\sqrt{\ln(p_{n})}\cdot (\ln\ln(p_{n}))^{2}}=0.
  4. 2013 年,张益唐证明了 \liminf_{n\rightarrow\infty}(p_{n+1}-p_{n}) < 7 * 10^{7},随后这个结果被改进到 246。

除了素数之间的小间距之外,素数之间的大间距(Big Gaps)同样也有很多结论:

  1. 1931 年,Erik Westzynthius 证明 \limsup_{n\rightarrow\infty}\frac{p_{n+1}-p_{n}}{\ln(p_{n})} =\infty.
  2. 2014 年,Kevin Ford, Ben Green, Sergei Konyagin, Terence Tao 和 James Maynard 证明 p_{n+1}-p_{n}>c\cdot \frac{\ln(n)\cdot \ln\ln(n) \cdot \ln\ln\ln\ln(n)}{\ln\ln\ln(n)} 对于某个 c>0 和无穷个 n 成立。

素数定理

在研究素数的过程中,研究素数的分布规律就是这一切的关键所在。其中,素数定理则是描述素数分布的一个重要结论。类似的,关于孪生素数的分布也有一个上界的估计。

[素数定理] 假设 \pi(x) 表示不大于 x 的所有素数的个数,那么 \lim_{x\rightarrow \infty}\pi(x)/(x/\ln(x)) = 1.

[孪生素数个数的上界] 假设 \pi_{2}(x) 表示不大于 x 的所有孪生素数个数,那么存在常数 C>0 使得 \pi_{2}(x)\leq C\cdot x/(\ln(x))^{2}.

备注:从这两个定理可以粗糙地刻画出素数与孪生素数在实数轴的分布情况,并且可以看出孪生素数相对于素数则是少很多的。因为 \lim_{x\rightarrow+\infty}\pi_{2}(x)/\pi(x)=0.

prime_theorem
素数定理
Twin_Prime_Number_1
孪生素数的个数

素数的性质

在中小学的竞赛部分,大家总能够接触到一个关于素数的定理。

[Theorem (Euclid)] 素数有无穷多个。

证明:假设素数是有限个,不妨设为 p_{1},\cdots, p_{n},那么 N = \prod_{i=1}^{n}p_{i}+1 就是合数,但是它却不能被所有的素数 p_{1},\cdots,p_{n} 整除,所以导致矛盾。因此素数是无穷多个。证明完毕。

除此之外,在大学里面学习级数的时候,通常都会研究调和级数(Harmonic Series)的性质。所谓调和级数指的就是所有正整数的倒数和,形如:

S(x) = \sum_{1\leq n\leq x} \frac{1}{n}.

从定积分与级数的关系可以得到 \lim_{x\rightarrow +\infty}S(x) = +\infty 并且 S(x)  = \ln(x) + O(1). 也就是说,所有正整数的倒数和是发散的。

利用这种思路,其实可以分析所有素数的倒数和,也就是说 \sum_{p \text{ prime}} \frac{1}{p}. 通过欧拉公式可以得到:

\sum_{n=1}^{\infty}\frac{1}{n} = \prod_{p\text{ prime}}\bigg(1+\frac{1}{p}+\frac{1}{p^{2}}+\cdots\bigg)= \prod_{p\text{ prime}} \frac{1}{1-\frac{1}{p}},

两边取对数可以得到 \ln\bigg(\sum_{n=1}^{\infty}\frac{1}{n}\bigg) = \sum_{p\text{ prime}} -\ln\bigg(1-\frac{1}{p}\bigg),

由于 -\ln(1-x) = x + O(x^{2}),并且 \sum_{n=1}^{\infty}\frac{1}{n}=+\infty, \sum_{n=1}^{\infty}\frac{1}{n^{2}}=\frac{\pi^{2}}{6}, 可以得到

\ln\bigg(\sum_{n=1}^{\infty}\frac{1}{n} \bigg)= \sum_{p\text{ prime}}\frac{1}{p} + O\bigg(\sum_{p\text{ prime}}\frac{1}{p^{2}}\bigg).

等式的左边是发散的,右侧的第二项是收敛的,因此右侧的第一项(素数的倒数和)是发散的。进一步地,可以得到两个结论:

  1. \sum_{p\text{ prime}, p\leq x} \frac{1}{p} = \ln\ln(x) + O(1);
  2. \prod_{p\text{ prime}, p\leq x}\bigg(1-\frac{1}{p}\bigg)^{-1} = c\cdot\ln(x)+o(1), 这里,c>0 是一个常数。

至此,我们得到了两个级数的定理:

  1. [Theorem] 所有正整数的倒数和是发散的;
  2. [Theorem] 所有素数的倒数和是发散的。

从第 2 个结论同样可以得到素数是无穷多个。于是,就有数学家猜测如果孪生素数的倒数和是发散的,那么孪生素数同样也是无穷多对。但是在 1915 年,数学家 Brun 证明了,孪生素数的倒数和是收敛的,这个收敛的数字也被称为 Brun 常数。

[Theorem] 所有孪生素数的倒数和是收敛的。

证明:通过孪生素数个数的上界公式,可以得到存在 C>0 使得对于充分大的 x,有

\pi_{2}(x) \leq C\cdot \frac{x}{(\ln(x))^{2}}

成立。假设素数序列 p'_{1}, p_{2}',\cdots, p_{n}',\cdots 使得 p, p+2 都是素数,那么 n = \pi_{2}(p_{n}') \leq C\frac{p_{n}'}{(\ln(p_{n}'))^{2}}\leq C\frac{p_{n}'}{(\ln(n))^{2}},进一步可以得到

\frac{1}{p_{n}'} \leq C\frac{1}{n\cdot (\ln(n))^{2}}

对于充分大的 n 成立。而右侧是收敛的,i.e. \sum_{n=2}^{\infty} \frac{1}{n\cdot(\ln(n))^{2}}<+\infty. 因此,孪生素数的倒数和是收敛的。证明完毕。

备注:由于孪生素数的倒数和是收敛的,因此,通过孪生素数的倒数和来证明孪生素数有无穷多对这条路就被封死了。

在研究孪生素数的过程中,其目的是为了研究素数之间的间距究竟能有多小,也就是分析 \liminf_{n\rightarrow+\infty}(p_{n+1}-p_{n}) 的上界。同样的,也可以研究素数之间的间距究竟有多大,并且可以分析其量级大约是多少,此时就需要研究 \limsup_{n\rightarrow+\infty}(p_{n+1}-p_{n}).

[Theorem] 对于充分大的 x 而言,在 [1,x] 内,素数之间的最小间隔 \min_{p_{n}\leq x} (p_{n}-p_{n-1})\leq (1+o(1))\ln(x); 同时,素数之间的最大间隔 \max_{p_{n}\leq x}(p_{n}-p_{n-1})\geq (1+o(1))\ln(x).

证明:考虑区间 [1,x],通过素数定理可以得到在 [1,x] 区间内的素数大约是 \pi(x) \sim x/\ln(x) 个。于是把该区间 [1,x] 切割成长度为 \ln(x) 的子区间,区间的个数为 x/\ln(x), 通过鸽笼原理 (Pigeonhole Principle) 可以得到此定理的结论。

备注:除此之外,证明相邻素数的间隔没有上限还可以用构造法。考虑 n!+2, n!+3, \cdots, n!+nn 个连续的合数,所以两个相邻的素数必在 [n!+2, n!+n] 这个区间两侧。因此相邻素数的间隔没有上限,i.e. \limsup_{n\rightarrow+\infty}(p_{n+1}-p_{n})=+\infty.

Eratosthenes 筛法(Eratosthenes Sieve Method)

Eratosthenes 筛法是数学家 Eratosthenes 提出的一种筛选素数的方法,其思路比较简单:想要筛选出 [2,n] 中的所有素数,则首先把 [2,n] 中的所有正整数按照从小到大的顺序 2, \cdots, n 来排列,然后按照如下步骤执行:

  1. 读取数列中当前最小的数 2,然后把 2 的倍数全部删除;
  2. 读取数列中当前最小的数 3,然后把 3 的倍数全部删除;
  3. 读取数列中当前最小的数 5,然后把 5 的倍数全部删除;(4 已经被第一步去掉了)
  4. 读取数列中当前最小的数 7,然后把 7 的倍数全部删除;(6 已经被第一步去掉了)
  5. 循环以上步骤直到 [2,n] 中所有的数被读取或者被删除。
其算法复杂度为 O(n\ln(n))
埃拉托色尼筛选法
黄色的数为素数

Brun 筛法(Brun Sieve Method)

在数学界发展出各种筛法,其重要目的之一就是为了解决孪生素数猜想和哥德巴赫猜想。除了 Eratosthenes 筛法之外,数学家 V. Brun 也发现了一种筛法,后人称之为 Brun’s Sieve。其目的就是为了估计孪生素数的上界,进一步得到计算孪生素数的倒数和。其主要结论就是 \pi_{2}(x)\leq C\frac{x}{(\ln(x))^{2}}, 其中 C>0 是一个常数,并且 Brun 通过其筛法可以得到哥德巴赫猜想中的 “9+9″,在哥德巴赫猜想的发展中属于里程碑式的工作。

Question. 研究素数究竟有什么用?

Answer. 为了人类智慧的荣耀。

参考文献:

  1.  Small and Large Gaps Between Primes, Terence Tao, Latinos in the Mathematical Sciences Conference, 2015.
  2.  Bounded Gaps Beween Primes, Yitang Zhang, 2013.
  3.  Additive Number Theory, Melvyn B.Nathanson, GTM 164.
  4.  http://mathworld.wolfram.com/TwinPrimes.html.

在新加坡的这五年—生活篇(四)

在之前的文章里,笔者分别对新加坡留学生的日常生活,人物轶事,过年感受做了回顾。本次将会提到一个重要的话题,那就是电子游戏(Electronic Games)。

对于基础学科的博士生来说,在第一年都会修各种各样的课程,通常来说毕业之前需要修 8 门课,再加上一门听讲座的课程。并且在前两年参加博士生资格考试(Qualify Exam,分为 Writing 和 Oral 两个部分)。一旦博士生通过了博士资格考试,就开始全面进入科研阶段;否则就只能够拿硕士学位离开。众所周知,读书是很多人一起参与的事情,通过考试是可以分出高下的。唯独科研这一件事情,几乎就是自己一个人的战斗。在这一个人的漫漫科研长路中,虽然大部分时间笔者也在奋力向前,努力毕业,但偶尔难免心生疲惫。在疲惫或者想放松的时候,就自然而然地想到了电子游戏(Electronic Games)。

在中学的时候,笔者接触过《帝国时代》(Age of Empires),《暗黑破坏神2》(Diabol 2)等系列游戏;在大学期间,则开始玩《魔兽争霸3》(WarCraft 3),《Dota》;到了博士生的时候,接触到的游戏就更多了,包括但不限于《暗黑破坏神3》(Diabol 3),《炉石传说》(HeartStone),《坦克世界》(World of Tanks),《Fifa 2015》。

WarCraft_1
WarCraft 3

在中学的时候,虽然也接触过《暗黑破坏神 2》,但是由于高考等种种因素,没有认认真真地玩过这款游戏。真正开始玩这款游戏应该是在大四下学期( 2009 年),当时 05级数学系的所有学生都已经从浦口校区搬到了鼓楼校区,男生们都住在筒子楼里面。之所以是筒子楼,意思就是学校的宿舍不够用了,拿家属区的房子来充当宿舍。其实在  2009 年之前,当时还在浦口的时候,暴雪公司就早已对外公布了《暗黑破坏神 3》的一些画面和角色,包括野蛮人的装备配置,闯关场景等诸多画面。但直到 2012 年 5 月份,暴雪公司才正式对外发售这款游戏。在对外发售这款游戏之前,NUS 数学系的很多博士生都沸腾了,纷纷通过各种渠道购买这款游戏,有的人提前在实体店预定,有的人提前在网上购买。笔者当时在暴雪公司的官网上花了 90 SGD 购买这款游戏,包括亚服,美服,欧服三个服务区。虽然博士生的学习十分繁忙,但是 NUS 的暑假总是来得特别早,每个学年基本上 4 月份就完成了教学工作,5 月份的话就已经开始了暑假的生活,直到 7 月底才会结束假期,开始新学年的生活。在种种因素下,除了必要的工作和科研之外,有的博士生就开启了打暗黑 3 的生活。

DiabloIII_2
暗黑破坏神 3

玩 PC 游戏比较依赖电脑的性能,当时虽然花钱购买了游戏,不过当时的电脑是 2008 年的电脑,在鼓楼珠江路购买的 Lenovo 的 IdeaPad Y 530。即使此电脑性能不行,但也满足了《暗黑破坏神 3》这款游戏的最低配置。因此,在身边的同学都纷纷入坑的情况下,笔者也跟着大家开始玩这款游戏。

LenovoidealpadY530
Lenovo IdeaPad Y530

不过到了 2010 年之后,iPhone 开始风靡全球,智能手机开始逐渐走入大家的视野。到了 2011 年 7 月份的时候,笔者决定买一台 iPhone。在新加坡,如果是本地人或者 PR,或者有工作签证的人,购买一台 iPhone 的合约机是非常简单的。每人可以签约一台手机,预购费貌似是 200 SGD 左右,然后每个月大概也就花 50 SGD 左右就可以将其拿到。但是对于持有学生签证的人而言就没有那么方便了,必须要缴纳 800 SGD 的押金,时长两年,才能够把手机拿到手。不过在当时 iPhone 的热潮下,跟着贾博士,尹博士一起去 vivo city 的 StarHub 办理手续。除了钱之外,还需要当时银行来往的信件,因为信件上面有每个人的通讯地址,每个月 StarHub 会通过这个地址给签约人寄送当月的通讯费用。 由于没有带银行来往的信件,三人还往返了一趟学校与 vivo city,跑了两次才将手机拿到手。

iPhone4
iPhone 4

“一入苹果深似海,从此钱财是路人”。苹果的产品确实做得很好,除了 iPhone 4 之外,后续笔者每年都会入手一些苹果的其他产品,包括 iPod Shuffle,itouch,键盘,鼠标,iPad,Mac Air。除了一体机 iMac 没有入手之外,其他的苹果产品均已体验过。当时基于这些产品,在 2013 年的时候把自己的电脑从 Lenovo 换成了 Mac Air,并且在博士生的办公室(Graduate Office 5)搭建了自己的工作环境(自然也可以无缝切换成游戏环境)。

DiabloIII_1
Graduate Office 5

当年在新加坡的时候,师门总共有四个人,分别是大师兄,二师兄,三师兄再加上笔者。其中,大师兄从来不玩任何游戏,二师兄与三师兄在那段时间都会玩《暗黑破坏神 3》。特别地,三师兄是众多博士生中唯一一个能够通过游戏本身回本的。在刚推出的时候,的《暗黑破坏神 3》有拍卖场,很多玩家都会在上面拍卖自己获得的装备,武器,金钱等道具。三师兄又特别擅长研究各种各样的游戏攻略和刷顶级道具,利用拍卖场这一套现工具,三师兄在玩了几个月之后顺利地把自己的装备套现,并且卖到了和游戏本身差不多的价钱。除了博士生同学之外,当年笔者还住在 West Coast Plaza 的 Block 602 #11-28,房东就是 NUS 的讲师,也一起入手了暗黑 3 这款游戏。可见暗黑系列游戏在 80 后一代人心中的地位。

DiabloIII_3
Diabol 3 拍卖场

随着时间的推移,科研任务的逐渐加重,新学期的重新开始,博士生中的暗黑 3 热潮已经逐渐淡去。到了 2014 年,暴雪的另一款游戏引起了我的注意,那就是《炉石传说》。炉石传说与暴雪的其他策略竞技类游戏不一样,它是一款卡牌游戏。根据卡牌的抽取顺序和英雄技能的不同,有着完全不一样的打法和策略。刚入门的时候门槛不高,笔者也能够有一些胜率,但是到了某天晚上,不知道是状态不好还是水平不够,一直在输,总没有克制对手的方法。于是,当天晚上笔者就往炉石传说里面充了钱,购买了很多卡包,当晚就拥有了很多卡牌,后来胜率又逐渐提升。果然,游戏只要充钱就会变得更强。

HeartStone_1
炉石传说

到了 2014 年的下半年,笔者也忙于撰写毕业论文和教学任务。不少当年在一起玩游戏的学长们也已经毕业,即使没有毕业也在努力搞论文。此时也很难凑到一批人像当年一样打暗黑 3。同时,随着智能设备的兴起,电子游戏也已经从以前的 PC 端转到了移动端,包括 iPad 和手机端。在手机端上,其实是没有办法进行复杂的游戏操作的,暗黑 3 这种游戏在 iPad 和手机上几乎是不可行的。在撰写毕业论文的同时,为了舒缓压力,就又挖掘了两款新的游戏,分别是《坦克世界》(World of Tanks)和《Fifa 2015》。

Worldoftanks_2
World of Tanks
Worldoftanks_3
实战

在坦克世界里,相较于各种坦克,笔者更倾向于用反坦克炮,靠灌木丛或者遮掩物躲在一处。一旦队友发现了敌方的踪迹就瞄准,然后就用反坦克炮给予一记重炮。其中,虽然苏系坦克的移动速度一般,但是火力生猛,深受笔者喜爱。

Fifa2015_1
Fifa 2015(1)
Fifa2015_2
Fifa 2015(2)

在本科的时候,笔者就经常和同学们一起玩实况足球,当时流传的一句话就是“无兄弟,不实况”,意思就是实况足球这种游戏确实要与同学一起竞技才能够体现其游戏乐趣。否则玩足球游戏就是以通关为目的,只要赢了或者获得冠军,游戏就已经结束了。当时大约是 2014 年的 12 月,2010 级的博士生要么已经提交了论文,要么正在提交论文的路上,笔者很少有机会与大家玩网络游戏,当时玩得更多的是单机版游戏,或者就与网上不认识的人随便打一下。

在读博士这几年,关于电子竞技或者生活的回忆还是很多的。生活嘛,总要找一点乐趣才能够坚持下去(未完待续)。

在新加坡的这五年—生活篇(三)

在上一篇文章在新加坡的这五年—生活篇(二)中,笔者回顾了那些年在新加坡读书的时候,所遇到的一些有趣的人和事。本篇文章会回顾之前在新加坡的过年轶事。

最近几天正值新春佳节,虽然 2020 年的开局实在是不够顺利,无论是肆意传播的疫情,还是科比的突然离世,都给新的一年带来了不少沉重的色彩。但是新年总要有新的气象,每年都要立一些新的 Flag(虽然 2010 年的 Flag 可能至今都没有完成)。

li_flag

如果是在国内过春节,除了一些特殊的原因之外,那自然是需要回家乡与亲人团聚,坐在一起吃年夜饭,共同看春节联欢晚会。但是对于留学生而言,回国与家人共度春节就显得没有那么方便了。虽然新加坡的工作人士有很多的年假,但是他们的公共假日却少得可怜。很多外国人也很难想象中国人可以有春节黄金周,十一黄金周这种一整周的假期。在新加坡的官网上可以看到,新加坡的公共假日基本上都是一两天,除了中国农历新年放假两天之外,元旦新年,劳动节,新加坡国庆日,圣诞节等诸多假日都只有一天的假期。在这些公共假日里,从宿舍区去办公室是没有校车的,只能靠自己的 11 路走来走去。

SingaporePublicHoliday2020
2020 新加坡的公共假日

新加坡是一个多民族融合而成的国家,虽然农历新年对于中国人来说意义非凡,但是私底下有的老师对于留学生春节期间离开新加坡返回中国过节这件事情是有一定的意见的。毕竟这段时间学校已处于开学阶段,一旦有学生要离开助教(Teaching Assistant)或者助研(Research Assistant)岗位,该学生或者院系就需要找到另外的学生来临时代替他的工作,确实会对教学和科研造成一定的影响。不过这个只是说不建议留学生回国,其实留在新加坡的话留学生们也不需要来办公室,安心在家休假过节即可。对于很多留学生而言,即使不能够回国与家人欢度除夕新年,在新加坡体验异国他乡的春节其实也还算一个不错的选择。新加坡是以华人为主的社会,农历新年在新加坡绝对算得上是一个非常隆重的节日。每到农历新年之际,无论是 Chinatown,圣淘沙,还是每家每户,都是张灯结彩,充满了喜庆的氛围。

SingaporeSentosaCNY_1
2011 年圣淘沙农历新年
SingaporeSentosaCNY_2
2011 年圣淘沙农历新年

从 NUS 每年的学校日历来看,对于身处新加坡的留学生而言,农历新年的时候正好是刚刚开启新的学期的时候。即使回国也只能迅速返回学校,毕竟只有两天的假期。除了少数回国的学生之外,大部分留学生们都会在新加坡自行组织过农历新年的活动。对于学校而言,虽然是正月初一和正月初二放假,其实到了大年三十下午的时候,就已经不再组织教学活动了,因为就算上课也会有不少学生缺席。无论是学校的教职工,还是学生,都会在除夕当天下午准备过年的食物和喜庆的礼品。在正月初一和正月初二这两个特殊的日子里,很多商店,超市,饭店都是不开门的,即使是每天营业时间最长的昇菘超市(shengsiong),也会选择在大年三十的下午 3:00 提前下班,让员工们提前回去过除夕。因此,提前去超市准备过春节的食物和年夜饭就是所有留学生的必做的事情。

NUS_2019_2020_calendar
NUS 的 2019-2020 年度日历

要想从 NUS 的 UTown 或者 PGPR 两个宿舍区去昇菘超市可没有那么容易,除了等待 West Coast Plaza 的穿梭巴士和 NUS Bus,只能够选择步行的方式,从数学系 Block S17 出发,步行穿过工学院(Faculty of Engineering),再翻山穿过 Clementi Woods,最后走到昇菘超市。去时容易,返回困难。去程的时候双手空空荡荡,返程的时候可是大包小包全部装满了食物,饮料和酒水。通常来说,这往返一趟办公室和昇菘超市,需要两个小时左右的时间。不过,作为年夜饭的准备,还是非常值得的。

NUS_clementiwoods_map
Clementi Woods

从 2011 年算起到 2014 年,笔者前前后后在新加坡度过了四个春节,那几年的除夕夜分别是在 West Coast Plaza 的川江号子,UTown,UTown,ChinaTown 的国府珍锅吃的年夜饭。印象最深刻的就是在 2014 年大年三十的时候,吃完年夜饭,回到 PGP 之后打开电脑,写下了这一段话,立下了 2014 年的 Flag:

今年是农历的除夕,也就是大年三十,依旧和PHD们出去吃了顿火锅。不知道是不是最后一次在新加坡过年了。前前后后也过去四年了。第一次是West Coast Plaza的川江号子,第二次是utown宿舍,第三次也是在utown宿舍,第四次是在Chinatown的国府珍锅。不知道明年还有没有机会在新加坡过年了。最希望的就是尼玛交了论文就直接可以考虑毕业了,就不用在新加坡这个地方过年了。

Jan 31, 2014 00:18

于是,为了兑现 2014 年初的 Flag,笔者在 2014 年整整奋发图强了半年,终于在 2014 年 7 月份的时候把论文的主要步骤自行推导出来,在 2014 年下半年开学之后花了两三个月时间把所有步骤整理并且装订成册,在 2015 年 1 月份的时候就在系统上提交了自己的博士论文。

 

 

 

li_flag_2
Flag

每次提到毕业的事情都会觉得心情沮丧,所幸的是最终还是顺利地拿到博士学位。回想起博士生活的点点滴滴,除了科研的过程比较苦逼之外,其他的各种生活还是丰富多彩的。(未完待续)

 

拉格朗日四平方和定理

拉格朗日四平方和定理

每个正整数均可表示为四个整数的平方和。

Every positive integer is the sum of four squares.

例如:

  • 1=1^{2}+0^{2}+0^{2}+0^{2}
  • 2 = 1^{2}+1^{2}+0^{2}+0^{2}
  • 7 = 2^{2}+1^{2}+1^{2}+1^{2}

证明:可以直接验证如下恒等式

(x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+x_{4}^{2})\cdot(y_{1}^{2}+y_{2}^{2}+y_{3}^{2}+y_{4}^{2}) = z_{1}^{2}+z_{2}^{2}+z_{3}^{2}+z_{4}^{2},其中

\begin{cases} z_{1}=x_{1}y_{1}+x_{2}y_{2}+x_{3}y_{3}+x_{4}y_{4} \\ z_{2}=x_{1}y_{2}-x_{2}y_{1}-x_{3}y_{4}+x_{4}y_{3} \\ z_{3}=x_{1}y_{3}-x_{3}y_{1}+x_{2}y_{4}-x_{4}y_{2} \\ z_{4}=x_{1}y_{4}-x_{4}y_{1}-x_{2}y_{3}+x_{3}y_{2}\end{cases}

由于 1 与 2 都明显满足这个定理,那么只需要考虑大于 2 的正整数。而这些正整数都可以分解成素数的乘积,因此,只需要证明该定理对所有的素数成立,则使用以上恒等式就可以得到最终的结论。假设 p 是一个奇素数。

由于 \{a^{2}:a\in\{0,1,\cdots,(p-1)/2\}\} 里面有 (p+1)/2 个不同的同余类,\{-b^{2}-1: b\in \{0,1,\cdots,(p-1)/2\}\} 里面也有 (p+1)/2 个不同的同余类,但是素数 p 的同余类只有 p 个,因此存在正整数 a,b\in \{0,1,\cdots, (p-1)/2\} 满足 a^{2}\equiv -b^{2}-1 (\mod p)。也就是说 a^{2}+b^{2}+1^{2}+0^{2}\equiv 0(\mod p)。令 n\in\mathbb{Z} 满足 np=a^{2}+b^{2}+1,则有 p\leq np\leq 2(p-1)^{2}/4+1<p^{2}。于是,1\leq n<p

因此存在一个 1\leq n<p 使得 np = a^{2}+b^{2}+1^{2}+0^{2} 是四个整数的平方和。于是必定存在一个最小的正整数 m 使得 1\leq m\leq n<p 使得 mp 为四个整数的平方和,不妨设为 mp=x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+x_{4}^{2}

Claim. m=1

proof of the claim. 反证法,假设 1<m\leq n<p 成立。令 y_{i}=x_{i}(\mod m) 对于 i\in\{1,2,3,4\} 成立,并且 -m/2<y_{i}\leq m/2。因此,y_{1}^{2}+y_{2}^{2}+y_{3}^{2}+y_{4}^{2}\equiv(x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+x_{4}^{2})\equiv mp \equiv 0(\mod m)。令 mr = y_{1}^{2}+y_{2}^{2}+y_{3}^{2}+y_{4}^{2}。因此,mr\leq 4(m/2)^{2}=m^{2}

如果 r =m,通过以上不等式得知 r=m 等价于 y_{i}=m/2 对于 i\in\{1,2,3,4\} 都成立。此时,mp = x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+x_{4}^{2}\equiv 4(m/2)^{2} \equiv 0 (\mod m^{2})。因此,pm 的倍数,这与 p 是素数,m>1 矛盾。所以,r<m 成立。i.e. 1\leq r<m\leq n<p 成立。

进一步地,(mp)\cdot(mr) = (x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+x_{4}^{2})\cdot(y_{1}^{2}+y_{2}^{2}+y_{3}^{2}+y_{4}^{2}) = z_{1}^{2}+z_{2}^{2}+z_{3}^{2}+z_{4}^{2},这里的 z_{i} 正如恒定式里面所定义的。由于 y_{i}\equiv x_{i}(\mod m),并且 \sum_{i=1}^{4}x_{i}^{2}\equiv 0(\mod m)。因此,z_{i}\equiv 0(\mod m) 对于 i\in\{1,2,3,4\} 都成立。所以,z_{i}=w_{i}mw_{i}\in\mathbb{Z} 对于 i\in\{1,2,3,4\} 都成立。通过 (mp)\cdot(mr) = \sum_{i=1}^{4}z_{i}^{2} 可以得到 pr=\sum_{i=1}^{4}w_{i}^{2} 成立。但是,1\leq r<m 这与 m 的最小性假设矛盾了。

因此,m=1,Claim 证明完毕。

于是,对于所有的奇素数,都可以表示为四个整数的平方之和。根据之前的分析,可以得到对于所有的正整数,都可以表示为四个整数的平方之和。Lagrange 定理证明完毕。

参考文献

  1. GTM 164, Additive Number Theory, Melvyn B.Nathanson, 1996.

传染病的数学模型

近期,国内的疫情闹得沸沸扬扬,很多省市自治区都出现了流感的患者。回想起之前在学校的时候曾经研究过微分方程和动力系统,于是整理一下相关的数学模型,分享给各位读者。笔者并不是研究这个领域的专家,并且这篇文章只是从微分方程角度出发,分析方程的性质,不一定适用于真实环境,而且真实环境比这个也复杂得多。

关于传染病的数学模型,在许多年前数学界早已做过研究,根据传染病的传播速度不同,空间范围各异,传播途径多样,动力学机理等各种因素,对传染病模型按照传染病的类型划分为 SI,SIR,SIRS,SEIR 模型。如果是按照连续时间来划分,那么这些模型基本上可以划分为常微分方程(Ordinary Differential Equation),偏微分方程(Partial Differential Equation)等多种方程模型;如果是基于离散的时间来划分,那么就是所谓的差分方程(Difference Equation)。

在本文中,将会主要介绍常微分方程中的一些传染病数学模型。在介绍方程之前,首先要介绍一些常用的符号:在时间戳 t 上,可以定义以下几种人群:

  • 易感者(susceptible):用符号 S(t) 来表示;
  • 感染者(infective):用符号 I(t) 来表示;
  • 康复者(Recoverd):用符号 R(t) 来表示;

其次,在时间戳 t 上,总人口是 N(t)=S(t)+I(t)+R(t)。如果暂时不考虑人口增加和死亡的情况,那么 N(t)\equiv N 是一个恒定的常数值。

除此之外,

  • r 表示在单位时间内感染者接触到的易感者人数;
  • 传染率:\beta 表示感染者接触到易感者之后,易感者得病的概率;
  • 康复率:\gamma 表示感染者康复的概率,有可能变成易感者(可再感染),也有可能变成康复者(不再感染)。

在进行下面的分析之前,先讲一个常微分方程的解。

Claim. 假设 x=x(t) 是关于 t 的一个方程,且满足 \frac{dx}{dt} + a_{1}x + a_{2}x^{2}=0x(0)=x_{0},那么它的解是:x(t) = \frac{e^{-a_{1}t}}{\frac{1}{x_{0}}-\frac{a_{2}}{a_{1}}(e^{-a_{1}t}-1)}.

Proof. 证明如下:

通过 \frac{dx}{dt}+a_{1}x+a_{2}x^{2}=0 可以得到 -\frac{d}{dt}\bigg(\frac{1}{x}\bigg) + a_{1}\bigg(\frac{1}{x}\bigg)+a_{2}=0;令 y = 1/x,得到 \frac{dy}{dt}-a_{1}y=a_{2}。所以,\frac{d}{dt}(e^{-a_{1}t}y) = a_{2}e^{-a_{1}t},两边积分可以得到 e^{-a_{1}t}y-y_{0}=\bigg(-\frac{a_{2}}{a_{1}}\bigg)(e^{-a_{1}t}-1),其中 y_{0}=1/x_{0}。求解之后得到:x(t) = e^{-a_{1}t}/\bigg(\frac{1}{x_{0}}-\frac{a_{2}}{a_{1}}(e^{-a_{1}t}-1)\bigg)

SI 模型(Susceptible-Infective Model)

在 SI 模型里面,只考虑了易感者和感染者,并且感染者不能够恢复,此类病症有 HIV 等;

SI_model_1
SI Model

其微分方程就是:

\begin{cases}\frac{dS}{dt} = -\frac{r\beta I}{N} S \\ \frac{dI}{dt}=\frac{r\beta I}{N}S \end{cases}

初始条件就是 S(0)=S_{0}I(0) = I_{0},并且 S(t)+I(t)=N 对于所有的 t\geq 0 都成立。

于是,把 S = N - I 代入第二个微分方程可以得到:\frac{dI}{dt} - r\beta I + \frac{r\beta}{N}I^{2}=0。因此根据前面所提到的常微分方程的解可以得到:

I(t) = \frac{NI_{0}}{I_{0}+(N-I_{0})e^{-r\beta t}}.

这个就是所谓的逻辑回归函数,而在机器学习领域,最简单的逻辑回归函数就是 \sigma(x) = 1/(1+e^{-x}) 这个定义。而 I(t) 只是做了一些坐标轴的平移和压缩而已。由于 \lim_{t\rightarrow +\infty}e^{-t}=0,所以,\lim_{t\rightarrow +\infty}I(t) = N,从而 \lim_{t\rightarrow +\infty}S(t) = 0

通过数值模拟可以进一步知道:

SI_model_graph_1
SI model 的数值模拟(一)

简单来看,在 SI 模型的假设下,全部人群到最后都会被感染。

SIS 模型(Susceptible-Infectious-Susceptible Model)

除了 HIV 这种比较严重的病之外,还有很多小病是可以恢复并且反复感染的,例如日常的感冒,发烧等。在这种情况下,感染者就有一定的几率重新转化成易感者。如下图所示:

SIS_model_1
SIS model

其微分方程就是:

\begin{cases} \frac{dS}{dt} = -r \beta S\frac{I}{N} + \gamma I \\ \frac{dI}{dt}=r\beta S \frac{I}{N} - \gamma I \end{cases},其初始条件就是 S(0)=S_{0}I(0)=I_{0}.

使用同样的方法,把 S=N-I 代入第二个微分方程可以得到:\frac{dI}{dt} - (r\beta - \gamma)I + \frac{r\beta}{N}I^{2}=0. 通过之前的 Claim 可以得到解为:

I(t) = \frac{N(r\beta-\gamma)}{r\beta}/\bigg(\bigg(\frac{N(r\beta-\gamma)}{I_{0}r\beta}-1\bigg)e^{-(r\beta-\gamma)t}+1\bigg).

从而可以得到 \lim_{t\rightarrow +\infty} I(t) = N(r\beta - \gamma)/(r\beta)\lim_{t\rightarrow +\infty} S(t) = (N\gamma)/(r\beta). 这个方程同样也是逻辑回归方程,只是它的渐近线与之前的 SI 模型有所不同。

SIS_model_graph_1
SIS model 的数值模拟(二)

SIR 模型(Susceptible-Infectious-Recovered Model)

有的时候,感染者在康复了之后,就有了抗体,于是后续就不再会获得此类病症,这种时候,考虑 SIS 模型就不合适了,需要考虑 SIR 模型。此类病症有麻疹,腮腺炎,风疹等。

SIR_model_1
SIR model

其微分方程是:\begin{cases} \frac{dS}{dt}=-r\beta S \frac{I}{N} \\ \frac{dI}{dt}=r\beta S\frac{I}{N} - \gamma I \\ \frac{dR}{dt}=\gamma I\end{cases}。其初始条件是 S(0)=S_{0}, I(0)=I_{0}, R(0)=R_{0},并且 S(t), I(t), R(t)\geq 0S(t) +I(t)+R(t)=N 对于所有的 t\geq 0 都成立。

对于这类方程,就不能够得到其解析解了,只能够从它的动力系统开始进行分析,得到解的信息。根据第一个微分方程可以得到:\frac{dS}{dt} = -r\beta S\frac{I}{N}<0,于是 S(t) 是一个严格递减函数。同时,0\leq S(t)\leq N 对于所有的 t\geq 0 都成立,于是存在 S_{\infty}\in[0,\infty] 使得 \lim_{t\rightarrow \infty}S(t)=S_{\infty}.

通过第一个微分方程和第二个微分方程可以得到:\frac{d(S+I)}{dt} = -\gamma I,因此对它两边积分得到 \int_{0}^{T} \frac{d(S+I)}{dt} = -\gamma \int_{0}^{T}I(t)dt. 左侧等于 S(T) + I(T) - S(0) - I(0),上界是 4N,因此令 T\rightarrow \infty 可以得到 \int_{0}^{\infty}I(t) dt\leq 4N/\gamma. 而 I(t)\geq 0 且是连续可微函数,因此 \lim_{t\rightarrow \infty}I(t) = 0。这意味着所有的感染人群都将康复。

由于 S(t) 是严格单调递减函数,因此从第二个微分方程可以得到:当 S(t) = N\gamma/(r\beta) 时,感染人数 I(t) 达到最大值。

SIR_model_graph_1
SIR model 的数值模拟(一)
SIR_model_graph_2
SIR model 的数值模拟(二)

其余模型

在以上的 SI,SIS,SIR 模型中,还可以把死亡因素考虑进去。除此之外,还有 SIRS 模型,SEIR 模型等,在这里就不再做赘述。有兴趣的读者可以参阅相关的参考书籍。

参考文献

  1. Introduction to SEIR Models, Nakul Chitnis, Workshop on Mathematical Models of Climate Variability, Environmental Change and Infectious Diseases, Trieste, Italy, 2017

 

符号计算中的深度学习方法

符号计算

符号计算一直是计算数学的重要领域之一。在开源领域,Python 的 SymPy 就可以支持符号计算。在商业化领域,Maple,Matlab,Mathematica 都能够进行符号计算。它们不仅能够做简单的实数和复数加减乘除,还能够支持数学分析,线性代数,甚至各种各样的大学数学课程。

随着人工智能的进一步发展,深度学习不仅在图像识别,自然语言处理方向上发挥着自身的价值,还在各种各样的领域展示着自己的实用性。在 2019 年底,facebook 两位研究员在 arxiv 上挂出了一篇文章《Deep Learning for Symbolic Mathematics》,在符号计算方向上引入了深度学习的工具。

要想了解符号运算,就要先知道在计算机中,是怎么对数学公式进行表示的。较为常见的表达式形如:

  • 2 + 3 * (5 + 2)
  • 3x^{2}+\cos(2x)+1
  • \frac{\partial^{2}\psi}{\partial x^{2}} - \frac{1}{v^{2}}\frac{\partial^{2}\psi}{\partial t^{2}}

在这里,数学表达式通常都会被表示成树的结构,其中树的内部节点是由算子(operator),函数(function)组成的,叶子节点由数字,变量,函数等组成。例如:

dlsm_figure1.png
图 1

图 1 的三幅图分别对应着上面的三个数学表达式。

在 Python 的 SymPy 工具中,同样可以对数学公式进行展示。其表示方法就是用 sympy.srepr

>>> import sympy
>>> x, y = sympy.symbols("x y")
>>> expr = sympy.sin(x+y) + x**2 + 1/y - 10
>>> sympy.srepr(expr)
"Add(Pow(Symbol('x'), Integer(2)), sin(Add(Symbol('x'), Symbol('y'))), Integer(-10), Pow(Symbol('y'), Integer(-1)))"
>>> expr = sympy.sin(x*y)/2 - x**2 + 1/y
>>> sympy.srepr(expr)
"Add(Mul(Integer(-1), Pow(Symbol('x'), Integer(2))), Mul(Rational(1, 2), sin(Mul(Symbol('x'), Symbol('y')))), Pow(Symbol('y'), Integer(-1)))"
dlsm_figure2.png
图 2

SymPy 的 srepr 函数的输出用树状结构来表示就是形如图 2 这种格式。叶子节点要么是 x,y 这种变量,要么是 -1 和 2 这种整数。对于一元函数而言,例如 sin 函数,就是对应唯一的一个叶子。对于二元函数而言,例如 pow,mul,add,则是对应两个叶子节点。

论文方案

在 Deep Learning for Symbolic Mathematics 这篇论文中,作者们的大致思路是分成以下几步的:

  1. 生成数据;
  2. 训练模型;
  3. 预测结果;

第一步生成数据是为了让深度学习模型是大量的已知样本来做训练;第二步训练模型是用第一步的数据把端到端的深度学习模型进行训练;第三步预测结果是给一个函数或者一个微分方程,使用已经训练好的模型来预测结果,对预测出来的多个结果进行排序,选择最有可能的那个结果作为符号计算的值。

众所周知,深度学习的训练是依赖大量的样本数据的,那么要想用深度学习来解决符号计算的问题,就要解决样本少的问题。在这篇论文中,作者们把精力投入了三个领域,分别是:

  1. 函数的积分;
  2. 一阶常微分方程;
  3. 二阶常微分方程。

在生成数据之前,作者们对数据的范围进行了必要的限制:

  1. 数学表达式最多拥有 15 个内部节点;
  2. L = 11 表示叶子节点的值只有 11 个,分别是变量 x\{-5,-4,-3,-2,-1,1,2,3,4,5\}
  3. p_{1} = 15 表示一元计算只有 15 个,分别是 \exp, \log, \sqrt, \sin, \cos, \tan, \arcsin, \arccos, \arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh
  4. p_{2} = 4 表示二元计算只有四个,分别是 +, -, *, /;

意思就是在这个有限的范围内去生成深度学习所需要的数据集。

积分数据的生成

在微积分里面,积分指的是求导的逆运算,那么形如 (f',f) 的表达式就可以作为深度学习的积分训练数据。生成积分的话其实有多种方法:

第一种方法:前向生成(Forward Generation,简写为 FWD)。主要思路就是在以上的数据范围内随机生成各种各样的方程 f,然后使用 SymPy 或者 Mathematica 等工具来计算函数 f 的积分 F,那么 (f,F) 就可以作为一个训练集。当然,有的时候函数 f 的积分是无法计算出来的,那么这种计算表达式就需要进行放弃,就不能放入训练集。

第二种方法:反向生成(Backward Generation,简写为 BWD)。由于积分是求导的逆运算,可以在以上的数据范围内随机生成各种各样的方程 f,然后计算它们的导数 f',于是 (f',f) 就可以放入积分数据的训练集。

第三种方法:分部积分(Backward generation with integration by parts,简写为 IBP)。根据分部积分的公式,如果 F'=f, G'=g,那么 \int F(x)g(x)dx=F(x)G(x) - \int f(x)G(x)dx。对于两个随机生成的函数 F, G,可以计算出它们的导数 f, g。如果 fG 在训练集合里面,那么就把 Fg 的积分计算出来放入训练集合;反之,如果 Fg 在训练集合里面,那么就把 fG 的积分计算出来放入训练集合。如果 fGFg 都没有在训练集合,并且都无法积分出来,那么就放弃该条数据。

三种方法的比较可以参见表 1,从表 1 可以看出通过分部积分(Integration by parts)所获得的样本表达式相对于前向生成和反向生成都比较长。

dlsm_table1.png
表 1

一阶常微分方程的生成

一阶常微分方程只有该函数的一阶导数,因此在构造函数的时候,作者们用了一个技巧。在随机生成表达式的时候,叶子节点的元素只从 \{x, -5,-4,-3,-2,-1,1,2,3,4,5\} 选择一个,于是随机把其中的一个整数换成变量 c。例如:在 x\log(2/x) 中就把 2 换成 c,于是得到了一个二元函数 f(x,c) = x\log(c/x)。那么就执行以下步骤:

  1. 生成二元函数 f(x,c) = x\log(c/x)
  2. 求解 c,得到 c = xe^{f(x)/x}
  3. x 进行求导得到 0 = e^{f(x)/x}(1+f'(x)-f(x)/x) = 0
  4. 简化后得到 x+xf'(x) - f(x) =0,也就是 x+xy'-y=0

此时,一阶常微分方程的训练数据就是 (x+xy'-y=0, x\log(c/x))

二阶常微分方程不仅可能由该函数的一阶导数,还必须有二阶导数,那么此时就要求导两次:

  1. 生成三元函数 f(x,c_{1},c_{2}) = c_{1}e^{x}+c_{2}e^{-x}
  2. 求解 c_{2} 得到 c_{2} = f(x,c_{1},c_{2}) e^{x}- c_{1}e^{2x}
  3. x 进行求导得到 0 = e^{x}(\partial f(x,c_{1},c_{2})/\partial x + f(x,c_{1},c_{2})) - 2c_{1}e^{2x} = 0
  4. 求解 c_{1} 得到 c_{1} = e^{-x}(\partial f(x,c_{1},c_{2})/\partial x+f(x))/2
  5. x 进行求导得到 0 = e^{-x}(\partial^{2} f(x,c_{1},c_{2})/\partial x^{2} - f(x,c_{1},c_{2}))=0
  6. 简化后得到 \partial^{2} f(x,c_{1},c_{2})/\partial x^{2} - f(x,c_{1},c_{2})=0,也就是 y''-y=0

那么此时的二阶微分方程的训练数据就是 (y''-y=0, c_{1}e^{x}+c_{2}e^{-x})

需要注意的事情就是,在生成数据的时候,一旦无法求出 c_{1}, c_{2} 的表达式,该数据就需要放弃,重新生成新的数据。

数据处理

  1. 数学表达式的简化(expression simplification):例如 x+1+1 可以简化成 x+2\sin^{2}(x)+\cos^{2}(x) 可以简化成 1。
  2. 参数的简化(coefficient simplification):例如 \log(x^{2}) + c\log(x) 可以简化成 c\log(x)
  3. 无效表达式的过滤(invalid expression filter):例如 \sqrt{2}, \log(0) 等。

树状结构的表达式,是使用前缀表达式来写成一个句子的。例如 2+3 就写成 + 2 3,2 + x 就写成 + 2 x。

模型训练

在这里,作者们用了 Transformer 模型,8 attention heads,6 layers,512 个维度,并且发现用更复杂的模型并没有提升其效果。在预测的时候,使用不同的 Beam Size,其准确率是不一样的,在 Beam Size = 50 的时候,效果比较好。参见表 2。

dlsm_table2.png
表 2

在与其他数学软件的比较中, 作者限制了 Mathematica 的运行时间为 30s。

dlsm_table3.png

并且举出了几个现有模型能够计算出来,Mathematica 无法计算的例子。

dlsm_table4.png

在求解的等价性方面,可以根据 Score 逆序排列,然后这个例子的 Top10 都是等价的。

dlsm_table5.png

在使用 SymPy 的过程中,可以获得各种各样的积分表达式如下:

dlsm_table7.png

结论

符号计算在 1960 年代末就已经在研究了,有诸多的符号计算软件,例如 Matlab,Mathematica,Maple,PARI,SAGE 等。在这篇论文中,作者们使用标准的 seq2seq 模型来对生成的数据进行训练,然后获得积分,一阶常微分方程,二阶常微分方程的解。在传统符号计算的基础上,开拓了一种新的思路。

zr9558's Blog