今天听到一师兄做关于reinforcement neural network的报告,突然很想把以前某个关于机器学习的想法给实现一遍,再说现在机器学习红遍全世界,再不了解一下,感觉跟科研脱节了。

话说十年前,我入数学建模时,就开始跳进了神经网络的坑,那时候学了很多,也做了很多推导和工作,但是那时候限于cpu计算能力,这个方向一直不温不火,自己也在校报水了一点小文章,标题叫《基于RBF网络模型的XXXX系统》,可以说大概有了解,却没有深入,最佩服的自己还是大概11年的时候,跟着学校的研究生做了一点NN的工作,结果还不错,但是那时候完全没有发文章的意识,只是觉得好玩,毕业了,工作了也就丢了。但是大概14还是15年开始,随着gpu加入,这个方向大火,今天已经燎原了,感觉错过了整整100亿。同时在12年,玩了一下比特币,觉得没挖到,就算了,看看今天的价格,感觉自己又错过了100亿。感觉自己天生就是穷的命

今天突然有种想玩一把机器学习的冲动,再一看,基本上机器学习都是用Python写的,毕竟现在核心计算都交给GPU了,用点胶水语言也无所谓了,要是放过去,说用Python做高性能计算是绝对不可想象的。大概五六年前,计算机领域大概流行这样一种模式,小规模验证用脚本语言,大规模计算用C来干,这才几年的光景,感觉这句话过时了。

话说自己接触Python也是本科期间,我本科没事的时候,最爱干的事情就是把图书馆理工科区转一遍,看看有什么好玩的书,所以也大概接触过Python,大概知道是个脚本语言,会写个Hello World。直到读研的时候,才开始用了比较多,用Python做爬虫,特别是Html上结构化的东西,用Beautifulsoup是比较方便的,再后来,用Python写点网络协议方面的东西,最后止步用Python写后端,说实话,读研那会真的是不务正业,天天搞这些乱七八糟东西,果然读博了感觉自己还是同样不务正业。

用Python最头痛的就是环境配置的问题,特别是在集群/超算上,不像个人计算机,你是没有权限改动系统文件夹的,所以基本上都是从头编译运行,自己编译一版Python,但我发现这条路走不太通,Python依赖的环境变量太多,感觉我搞不定,后来我发现组里的小伙伴都在用Anaconda来配Python,感觉自己已经落后了一个时代了。在小伙伴指点下,终于找到Anaconda是怎么用的,感觉超级方便。

https://it.stonybrook.edu/help/kb/installing-software-packages-locally-with-anaconda

安装包直接用conda install,方便程度感觉接近apt-get了。

哎,说实话,我高中毕业那会,关于对计算机专业的看法,我问了一下物理老师,他说,搞计算机的话,你得终身学习,现在想想这句的确不错。但幸运的是,我的专业不是计算机,但是干的计算机活,所以可以放松要求自己啦~~~哈哈哈

下面两个图展示了Anaconda里面Python和系统里面Python的区别

[GCC 7.3.0] Anaconda
[GCC 4.8.2] …Red Hat

不过话说,有一点真的很奇怪,之前学校集群用pbs的时候,gpu的队列空的一塌糊涂,反而用slurm之后,gpu资源紧张了一踏糊涂。现在想跑个程序还得等。哎

虽然吐槽归吐槽,但是石溪的集群还是很不错的,各种package都有,管理员都很好,碰到问题都会很乐意给你解决,使用率相对国内来说还是比较高的。

在图论中,有一类图是比较特殊图,Regular Graph,我不知道正确翻译是什么,且称为正规图吧,这类图有一个很好的性质,就是图中的每一个Vertex,也就是每一个点所接的边是一样的。

例如,立方体就是有四个点,每个点有三条边(也称之为度)的Regular Graph,简称4k3

维基百科的定义如下:

In graph theory, a regular graph is a graph where each vertex has the same number of neighbors; i.e. every vertex has the same degree or valency. A regular directed graph must also satisfy the stronger condition that the indegree and outdegree of each vertex are equal to each other.[1] A regular graph with vertices of degree k is called a k‑regular graph or regular graph of degree k. Also, from the handshaking lemma, a regular graph of odd degree will contain an even number of vertices.

Regular图的示意(来源:http://mathworld.wolfram.com/RegularGraph.html)

现在问题来了,不同点数,不同的度,到底有多少种不同的组合呢,这的确是一个非常有意思的课题

目前可考的,是Jason Kimberley这个人,填了非常多的数字,结果链接如下

http://oeis.org/wiki/User:Jason_Kimberley/A068934

他做出最大结果是

40K36

有8845303172513781271种不同的组合

太佩服这个人了

基于GENREG这个很古老的程序做的,话说我也联系过这个软件的作者,跟他说我们打算在超算上面跑,他也很认真地回复了哈,给了很好的建议。

不过说实话,这种问题非常难做,需要非常多的机时,而且程序中大量的递归,导致很难并行化,所以还是一步一步来吧。

话说genreg貌似下载链接有问题,我来传一份吧

genreg95下载地址