训练学习机用来求解Schrodinger方程

机器学习最近实在是火。各个领域都在用和发展。据说神经网络可以拟合任意的函数。于是,我想起来一个神奇的主意:如果把从势函数求解基态波函数的过程看成一个映射(函数)的话,能不能用机器学习来得到一个这个映射的机器呢?这样,我们就可以用现在已经求解出来的Schrodinger方程的解来训练这个学习机,然后用训练出来的学习机来求解新的Schrodinger方程。我把这个问题叫做:Machine learning-based Schrodinger solver(机器学习Schrodinger方程求解器)。

问题的具体化:以一维量子系统的束缚态问题为例,离散化势函数,得到一个矢量。用数值求解方法得到这个系统的离散化的基态波函数,得到另一个矢量。把这样的输入矢量和输出矢量的对输入合适的学习机,训练学习机。检验这个学习机是否能够求解新的Schrodinger方程。

工作大致思路:如果我们仅仅考虑多项式形式的势函数的话,可以比较简单地得到输入矢量(各阶多项式的系数)。然后我们需要一个Schrodinger方程的数值求解器,在自然边界条件(无穷远处渐近为零)下,来得到训练集的输出矢量。接着需要找到合适的学习机来训练。最后,做检验和泛华。

实际意义:这个从势函数到波函数的映射不是线性的,因此,在数值求解的过程中,除非运用微扰论,已知的方程的解不能重用。也就是说,每一个问题需要数值求解一次微分方程或者转化成矩阵以后计算矩阵的最小本征值对应的本征向量。这样的矩阵通常维数是很高的。更一般地来说,如果学习机的表现能够重用已知的解或者能够降低计算的复杂度,那么,这样的方式可以用在其他的微分方程的求解上,甚至密度泛函理论(DFT)的有效波函数上,这样能够提升量子化学计算等这种需要大量计算多例子系统基态能量和波函数的计算任务的效率。

理论意义:这个所谓的映射实际上比较复杂——实际数值计算是求解这个输入的势函数对应的Schrodinger方程的基态解,那么,这么复杂的映射——不是简单地能够看做对输入的势函数矢量某种操作,还能够通过机器学习来得到吗?更加深刻的问题——实际上,这个方程还有其他激发态的解,如果也能得到的话,这里存在量子态的干涉(叠加)现象,难道机器学习连这个东西都能默默学下来。不过,这个问题暂时不讨论。

相似的问题(竟然已经有人在思考相似的问题):http://www.anl.gov/articles/machine-learning-algorithm-aims-accelerate-materials-discovery
http://www.ipam.ucla.edu/programs/long-programs/understanding-many-particle-systems-with-machine-learning

解剖另一只麻雀来看科学思维

最近有个帖子特别火《一个让中国人断子绝孙的公司》。这个帖子和上次的我解剖的那只麻雀“不要买加碘盐”的帖子类似地,或者说更严重地,没逻辑。为了再一次强调独立思考能力和一点点信息获取能力,这些科学素养和科学思维方式,这里我再来解剖一只麻雀。

帖子的主要论点是:孟山都公司企图(主观)或者事实上在(客观)毒害全世界,尤其是中国;于是,我们要起来把它赶出中国去。其论证思路大概如下:农民用的孟山都的农作物种子每年都要买新的,不能自己留种,这是这个公司为了垄断(注意,这个和是否在中国应该没有联系。我没有查证,猜的。如需要,应该可查);孟山都公司的除草剂能够除草而农作物不死,是这家公司特意让除草剂不能杀死某植物,然后把这个植物的基因转到农作物里面,因此,也是阴谋;最近,权威机构认定草甘膦(就是上面那个除草剂?)属于2A类致癌物质,这也是这家公司的阴谋或者不属于主观阴谋,但是肯定是客观上在毒害全世界(这个好像也不是中国与否的问题,除非这个草甘膦的成分在中国的不一样。我也没有查,猜的,应该是一样的,而且权威机构也是国外的机构。所以,也不清楚为什么强调中国);孟山都能够影响美国和中国的决策层,资本和权力机构共谋,所以黑身份,所以要赶出中国去;孟山都的产品受到非洲国家等抵制,附近其他国家收获了农作物而且自己挨饿也不要吃。

为了让这个论据更加好地支持论点,作者开篇做了感情铺垫:第一个场景,农民让“我”用除草剂,“我”很疑惑,怎么就能草死苗不死呢?第二个场景,以前我妈妈都留种,现在留种下一代长不出来,有人在种子上搞鬼。第三个问题,以前亩产很低,现在高很多,怎么可能?第四个问题,农作物虫子不吃,人能吃吗?

我稍微google了一下背景。类似的帖子一直有,而且很多很多人信,甚至影响了决策和农作物种植。最近又兴起的原因是,确实一个还算正式的国际机构把草甘膦列入2A类致癌物质。然后,我就去看了一下这个类别里面都是什么,其他更厉害的都是什么。没有找一手文献,仅仅看网络帖子我发现咸鱼和酒在更严重的级别(原则上,也应该找一手资料的,但是,好像论辩双方都没有疑义)。不过,这个是知识方面的信息。按照我的目的和习惯,这个方面,我不会作为攻击和分析的点。这里也是仅仅当做这个帖子兴起的背景,不作为我的论据。

现在,我们回到逻辑。

袁隆平杂交稻也不能留种(几百年前孟德尔就用豌豆杂交实验告诉我们了,杂交的东西的下一代可能性状不保,会返祖。不过,这是知识,不能作为我的论据。算了,忽略这个),也大大提高了亩产。我们也要把袁隆平赶出去?这个袁隆平的贡献,不能算太专门的知识,应该大多数人都了解的。于是,亩产高,不能留种,不能成为阴谋论的论据。万一作者真的觉得,也该把袁隆平和杂交稻赶出去呢?那我只好说没见过这么傻的。但是,好吧,这个类比性的反驳证据,我们不算好了。

在关于不能留种和亩产高很多的论述中,作者之所以用这两个东西做论据,背后还隐含了这样的逻辑链条:这个和以前我熟悉的农作物种植完全不一样了,不一样(而且白白好这么多,怎么可能白捡这么大的好处呢,肯定有相应的不好的地方),就是有问题。这是什么逻辑?人类科学和技术的发展使得我们得到了大量的好处,白白得的(很多时候,我们中国人付出了环境代价。但是,那不是必须的代价,可以鱼和熊掌兼得的)。要是白白得到的都不能用,那么汽车铁路不能用,得用牛车,或者相比于人抬,牛车的好处也是白白得到的,也不能用。社会的改变(不一样了)就一定是坏事?那只好让作者住山顶洞了。

再来说除草剂的阴谋:留着某个植物不杀,然后把这个植物转入农作物。就算孟山都是这样设计的,除了对生态问题的担心——杂草的集合如果太大可能影响生态平衡,又怎样呢?这是一个很好的科学方法啊。例如,我们想消灭一种特殊种类的蚊子,我们可以寻找一种药物直接针对这样的蚊子。我们也可以让其他种类的蚊子——假设有好的蚊子——种上疫苗,都对我们这种药物免疫,然后把这个药物投放给所有蚊子啊。这有什么问题吗?当然,如果孟山都公司在商业上这么运作的话,有垄断的嫌疑。但是,跟人类,尤其是中国的人类,有什么关系呢?这样就是在消灭人类,尤其是消灭中国人?中间的逻辑是如何过来的?

再说这个草甘膦的阴谋。上面已经提到,如果我们假设在中国的草甘膦和国外的没有区别(注意:这个也是作者的假设,因为那家权威机构检测的是国外的草甘膦,说致癌),那么,为什么说这家公司针对中国,让中国人断子绝孙了呢?当然,如果作者的逻辑足够好,在这里,他/她可以这样反驳我:你看,孟山都在毒害全世界,中国也是全世界的一部分,所以,也在让中国断子绝孙啊。要是这样,我就继续抠字眼下去:哪里断子绝孙了,说的是致癌,得癌症的可能性,就算有了癌症之后,肯定不能有子孙吗?更何况之前呢?

所以,这个标题已经到了,完完全全没有逻辑的地步了。就算那个致癌是很高的危险性,哪里中国了?哪里断子绝孙了?更何况排在酒和咸鱼的后面(说了不能拿知识和智力压人,只能用逻辑。实在不好忍住啊)。

那么,这个断子绝孙的结论从哪里来的呢?我再稍微查了查。有一个大概这样的说法:你看以前的农作物可以长出下一代,不用再次购买种子不可,现在的种子不能生育下一代。于是,人吃了这些作物,慢慢地,也就不能生育下一代了。这个难道是吃什么长什么的逻辑的延续?作者,我能不能也不要脸一下,你可能(或者你家这一支人)吃石头或者浆糊吃多了,慢慢地脑袋就按照石头或者浆糊一样长了,并且遗传下来了?

至于用非洲兄弟们的国家拒绝吃孟山都的农作物来佐证,呵呵,你为什么不支持和呼吁一下人家的少女割礼呢?你怎么不想想不用草甘膦之后,其他除草剂的危害呢?其他除草剂都是列在无敌无害系列的?或者想想农民增加的劳动力负担?或者想想产量降低以后多少人活不下去,上不了网?当然,这些还是算了,说好了不能用智力和知识来碾压的。

咱就说逻辑。论据到论点之间距离非常大。第一,论据中基本不体现中国的特殊性,论点中强调中国。作者的基本目的就是标题党,轰动一下。你要是这么说也好点啊:让我们把孟山都赶出地球,赶出银河系,它是在消灭银河系的未来啊。至少,逻辑上,通啊。

第二,论据中没有人生育的任何信息,论点中有断子绝孙,除非用吃什么补什么来补充论证。可是,用什么来论证吃什么补什么呢?除非作者家族从今天起吃浆糊,吃上几年或者你百年,脑子都成了浆糊。也不对,凭啥像过去以后就在脑子里呢?需要检验是不是多少年之后,全身都成了浆糊,才行。

第三,论据到论点的逻辑中还隐含着老的过去的就是好的,好处不能白白得到的思想。为什么呢?我为什么要问为什么呢?作者就没想讲逻辑啊。为什么我们不回去茹毛饮血住山洞啊,作者的这一支的某个时期的一个先人问这个先人的后辈。社会变化太快了,都能在网络上发表自己的见解了,我还是回山洞里画画壁画好了。

按照惯例,我这个分析帖子不涉及草甘膦是否真的危害很大,转基因作物是否真的安全的问题。我仅仅要求,作者们,你们讲点逻辑好不好?读者们,你们讲点逻辑好不好?不要标题党,不要人云亦云,独立思考,构建逻辑,多问为什么。

联系到平面几何教什么。
首先,证明的每一步需要用一个已经证明的定理来建立两个步骤之间的联系。
其次,证明过程可以需要运用各种构造性(例如辅助线,例如看成某个其他东西)证明或者反证法。
再次,从少数公理(公理本身从现实来,不过这个不属于平面几何而是科学领域)开始然后通过逻辑推理建立理论体系的这样的抽象化理论化方法。
最后,才是几何学的具体知识。

这些东西学好了,逻辑和思维方式自然就好了。再加上科学讲究证据理论联系实际的理念,多问几个问什么的习惯,科学思维就有了。科学知识忽略不计。当然,在真正学习的时候,这些几何和科学里面的重点,都要通过合适的例子来体现。

有心的老师们,按照这个思路,整理一下平面几何?

git服务器上已经建立的项目列表和本地目录,ssh端口修改

由于学校控制22端口,所以修改了ssh端口为7712(因此,直接访问机器的命令行需要改为:ssh git.systemsci.org -p 7712)。ssh服务器端修改端口号的办法是:修改/etc/ssh/sshd_config文件,在Port 22下面,添加Port 7712(注意不要去掉22端口,万一去掉7712端口有没有配置好,那你就登录不了这个机器了)。同时在/etc/ssh/ssh_config里面同样的地方也添加Port 7712。

在客户端可以在~/.ssh/下新建一个config文件(如果你是图形界面,则直接修改ssh图形客户端配置就可以),文件内容为:

Host YOUR_HOST
User YOUR_USER_NAME
Port YOUR_NEW_PORT

这一步对于git找到相应的端口非常重要。

这个文档的以下部分记录git服务器,git.systemsci.org上面管理的项目。关于git安装和使用见下文。
如果你已经通过~/.ssh/下新建一个config文件来识别端口号,则下面的命令中的端口号都可以去掉。如果你没有做这一步,则下面的命令中都加上端口号。当然如果是默认22的配置,则不用添加端口号。

  1. IO文档
    1. 服务器端在/home/git/IO.git
    2. 本地保存在Research/Input-Output/下面,跟踪对象是所有的.tex文件。

详细安装过程和使用方法如下:

  1. 在服务器端安装git: sudo apt-get install git-core,并添加git用户(sudo adduser git,注意密码),普通用户不用做这一步
  2. 在服务器端建立一个项目:mkdir IO.git。在这里,整个git目录只用于存储项目。因此,所有的项目直接放在~/git/下面。如果项目还没有在上面的列表上,普通用户需要完成这一步
  3. 在项目目录下面,初始化项目目录结构:git init –bare。这时候指有目录结构,什么具体内容都还没有呢。
  4. 回到本地机器准备加入内容
    1. 生成和上传一个ssh公钥到服务器上(参考如下帖子,需要git用户密码,请跟我联系):

      1. ssh-keygen -t rsa
      2. cat ~/.ssh/id_rsa.pub | ssh git@git.systemsci.org "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
      #这部分完成的事情首先是在本地自己的机器上产生一个id_rsa.pub公钥,然后把这个公钥上传到远程服务器,并且重命名为authorized_keys.

      完成这两步之后试试是否能够免密码访问服务器了。
    2. 已经存在的IO项目目录:把这个目录变成存储项目内容的本地目录(git init )。然后把远程项目拉过来同步到本地目录(git remote add origin ssh://git@git.systemsci.org/home/git/IO.git, git pull origin master)。接着把本地目录的内容加入到需要同步的列表(git add., git commit -m “massage” -a),然后把本地目录的内容推送到远程(git push origin master)
    3. 或者如果还没有这个项目的话,到预期存储IO项目的上一级目录(运行完成下面的目录会产生一个名字叫做IO的子目录)。然后运行:git clone git@git.systemsci.org:/home/git/IO.git,就会把整个服务器上的这个项目的内容完整地复制下来。
    4. 在本机这个项目目录下面编辑文档,并且用git add, commit, push之类的命令同步到服务器上。也可以安装图形客户端。
  5. 注意:最好只把文本文件当作git管理的对象,否则,由于要检查和跟踪变化,git会非常慢

如何做好的学术报告

科学家需要很多种能力,不仅要有找问题的眼光,解决问题的手段,写得一手好文章,还要能够讲得一个个好报告。这里把我自己的做报告的经验总结一下。以后争取拿我自己的一个报告视频,再加一个Ted Talk的视频,来做一个分解赏析。现在,就把各个要注意的点列在下面。

最大最大的原则,让听众明白你的思路,任何时候都可以来问他/她自己和回答这样的问题:这个家伙现在讲干什么呢和下面这些基本的比较大的问题有什么联系?这些基本的大图景问题包括:这个家伙到到底想讨论什么问题,用什么方法,得到了什么结论?这个家伙做这个报告,对我来说,他/她最根本的目的是什麼?对于他/她自己来说根本的目的是什么?

为了实现让听众明白你的思路的目标,在理念上,在语言和报告文档上要尽量做到:减少听众的记忆负担,理清你自己的思路,带领听众的方向感,帮助听众理解和思考。所以,首先要把本次报告的动机和目标明确指出来。就像我在本文的开头写的那一段一样。

技术上,可以通过问问题、做小结和做总结,来提示思路。在技术上,你还可以学会以下的文档制作的秘诀:要有图(每页一张,或者两三页一张,不要多),公式尽量少(不要多于两行),文字不能多于三行(尽量一个个短语,不要一句话)。就算在讲细节的时候,讲清楚动机,时不时地回到和这些主干的联系

所有的这些,实现的基础是:主讲人自己要在主要研究问题,研究方法的思想,计算分析技术,结果,这几个方面分的特别清楚。问题的意义,结果的意义,方法的意义,也要分开。研究工作本身的目标动机价值比细节更容易懂,因此,要优先传达给听众。

此外,可以准备一些额外的放在报告文档末尾的细节页面,在万不得已的情况下,需要的时候可以拿出来帮助解释。在非常有必要的情况下,例如有的公式你避免不了又非常非常长,可以准备打印出来分发的材料。

总结:自己的方向感要清楚,然后要让听众有方向感,随时知道你在做什么,为什么这样做,甚至预期,“下一步,他会干什么呢”。

促進誠實的機制

在最近的Nature發表的工作中,研究者们用一个非常简单的实验讨论了个体的诚实程度和个体所在的国家的上层制度(民主程度、整体逃税率等)的关系,发现联系还挺强。其实验是这样的:给一个色子,按照扔出的数字 (1-5)给钱,扔出6就没钱。但是,具体什么数字由被试上报,不稽查。理论收益应该在2.5,但是大多数国家 的个体的平均值都超过2.5。其中有的国家接近,有的高很多。发现高很多的基本都是腐败政府的国家,很接近的一般都政治清明。
现在,我想把整体氛围、被知道(查而不罚)、稽查(查且罚)加入到他们的实验里面去,来讨论当面对不同程度的同辈压力的时候,是否人会更加诚实。

从大的角度来说,这个Science的工作给出的结论比较悲观——个体和整体社会是相互适应的,那么,如何跳出来这个自适应的圈子呢?这是一个非常重要的问题,尤其大国不能很大程度上依靠外力。现在中国无论做什么事请,你的长辈的建议都是你去看看是不是有熟人或者其他后门。于是,我们把这个工作的背景定位在探索跳出自适应圈子的道路。

研究方法:实验和实验结果的统计分析。具体的实验:Nature原始版本,原始版本基础上加上通报整体收益水平,原始版本上加上旁边站一个影子实验者(完全不说话,不参与实验,就是看着),原始版本上加上旁边站一个记录但是不传记录给实验组织者的同伴,原始版本上加上旁边站一个记录并上传的同伴,原始版本上加上旁边站一个记录并上传的同伴并且有随机缉查惩罚。另外,我很好奇不同专业的学生,例如宗教的学生、哲学的学生、法律的学生在这个Science实验上是否有区别,也可以做着玩玩,看看。

学生所学到的东西(最好有一点相关基础):实验经济学、博弈理论和实验、运用博弈实验平台(oTree)开展实验、统计学用于数据处理。同时还能够体验一下科学家如何来用物理学的理念和技术来处理社会科学的问题。