Categories

Calendar

August 2010
M T W T F S S
« Jun    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Generate Recursive Images

上一篇 blog 中我提到了递归图片,还给了一个有趣的例子,这次还说递归图片,再给另一个例子:

不过这次的例子是我自己生成的,而篇 blog 就是要讲如何来生成这样一张递归图片。其实方法很简单,类推一下,多花一些功夫的话,之前给的那个“二次递归”的例子也是可以“轻松”做出来的。 :)

» Continue reading Generate Recursive Images

Beyond Recursion

Quine,或者说可以打印自己源代码的程序,通常被认为是比递归更神奇的东西,我以前也聊过这个话题。这次再提起来,是因为发现了另一个有趣的例子。

真相是,今天早上实验室网络检修,没法上网,而且由于考试周的接近自习室和图书馆都成了人山人海,几乎没有我等“散户”的容身之地,于是无聊中就把昨天下载的一篇传说很有趣的论文翻出来看了——发现果然很有趣。其实就是 Dahua 之前曾经介绍过的今年 CVPR 会议上分发的一篇最有趣的论文 Paper Gestalt。论文主要是讲了如何用 Computer Vision 的方法来自动判别提交到会议的论文的好坏并决定是否 accept,Dahua 的 blog 上已经介绍得很详细了,我在这里也就不多说了。总的来说,推荐去看一看论文原文,现在可以可以下载到了,语言既严谨又诙谐,简直就是给不幸被断网的小朋友的最佳读物啊! :D 看到赫然出现的麦克斯韦方程组的时候,我就乐坏了,当然我认为这篇论文的作者并不是 seriously 真的想要用这个系统来作为以后审稿的辅助工具的,但是这个确实很好玩,更重要的是,我看到作者对这个学术社区现状的反思,当然除了诙谐,还略带一些讽刺的意味。所以呀,学术圈也是有可爱的人以及不无聊的事的! ^_^

» Continue reading Beyond Recursion

浅谈流形学习

总觉得即使是“浅谈”两个字,还是让这个标题有些过大了,更何况我自己也才刚刚接触这么一个领域。不过懒得想其他标题了,想起来要扯一下这个话题,也是因为和朋友聊起我自己最近在做的方向。Manifold Learning 或者仅仅 Manifold 本身通常就听起来颇有些深奥的感觉,不过如果并不是想要进行严格的理论推导的话,也可以从许多直观的例子得到一些感性的认识,正好我也就借这个机会来简单地谈一下这个话题吧,或者说至少是我到目前为止对这它的认识。

这两个词,在谈 Manifold 之前,不妨先说说 Learning ,也就是 Machine Learning 。而说道 Machine Learning 而不提一下 Artificial Intelligence 的话似乎又显得有些不厚道。人说 AI 是一门最悲剧的学科,因为每当它的一个子领域发展得像模像样之后,就立马自立门户,从此和 AI “再无瓜葛”了,而 Machine Learning 大概要算是最新的一个典型吧。这就让人有点奇怪,比如说数学,分门别类总算是够多了吧?可以不管怎么分,大家兄弟姐妹也都还承认自己是叫“数学”的。那 AI 呢?我觉得这里有很大一部分是它自身定位的问题。

» Continue reading 浅谈流形学习

Disable TRAMP on Windows

TRAMP 是 Emacs 的一个很重要的组件,可以用于无缝地处理 ssh 、ftp 等远程文件编辑(甚至远程编译、调试等),还包括本地的 sudo 编辑文件等,总之是一个很强大的组件。今天要写这篇关于禁用 TRAMP 的文章,让我一时觉得真是光阴荏苒。

第一是关于 Emacs ,因为我实际上已经好久没有用 Emacs 了,有时候发现不知为什么好像在有意无意地避开它。不过最近编辑 LaTeX 文件比较多,尝试了很多编辑器,最后还是忆起 Emacs 的 cdlatex.el 最趁手,用其他的编辑器来写 TeX 简直就是体力活,所以即使在 Windows 下,也还是决定再启用 Emacs 。第二是关于 TRAMP ,我曾经是很喜欢这个东西的,因为它确实是很好用,如果在中文 Google 上搜索 Emacs TRAMP 的话,第一条的结果依然还是我很古老的那个 blog 上 4 年前的那篇半翻译半整理的文章

» Continue reading Disable TRAMP on Windows

关于同行互审

搞科研学术的,对于大部分人来说,发论文就是必不可少的了。可是这个发论文不像平时上课交作业一样,有个老师或者至少是助教来帮你批改,特别是对于一些本身就已经是该领域的领军人物了的人,根本不存在比他们“更高层次”的人来做这种审核。这是一个没法避免的事实,所以学术界几乎都采用同行互审的方式。

其实学术界似乎远没有想象中的那么简单和纯粹,所以我在想是不是什么东西发展到这样一个规模之后必然会有一些诸如潜规则之类的东西出现?总之先不说这个,说 peer review ,其实太具体的东西我也还没有仔细了解过,不过大致的结构还是可以理解的,也就是会有一些比较有声望的人会被选作一个(比如)conference 的评委,然后投到这个会议的论文就(随机地,可能会有一些先验,比如相关研究方向等)分配给各个 reviewer 去审,中间有一些细节可能会有所不同,比如如果自己也投了这个会议的论文的话是不是就不能同时做 reviewer 了,以及 review 到最终决定的过程是否有和原作者之间的 feedback 互动等,但是整体上通常都是如此。不过通常也被划分陈两种比较大的变种,或者说,实际上是三种:

  1. author 公开,reviewer 不公开:也就是最普通的方式了,reviewer 知道自己在审谁的 paper ,但是 author 不知道被谁审了。
  2. author 不公开,reviewer 也不公开:也就是盲审,现在在很多会议上都实行这样的方式。
  3. author 公开,reviewer 也公开:全部公开,似乎不是特别常见,但是也有一些试行

我想应该第一种是以前最普遍的吧,但是后来人们发现了一个问题,就是如果你是一个很牛的人的话,你的论文或者你挂了名字的论文通常就几乎“百发百中”,一方面可能是大家看到你的名号都不得不给面子,另一方面是一看到你的名号,肯定就会以一种不同的态度(比如,一种仰慕的神色)去读你的论文,相比之下,那些名不见经传的作者通常就比较惨了。

» Continue reading 关于同行互审

如何生成随机数(上)

快三个月没有写日志了,大概是我开始认真写 blog 来第一次,也是因为发生了一些预料之外的事情,中断了许久,到后来又一直非常非常忙,不过我终于又爬上来冒个泡了,表明我还活着。 :)

第二点要澄清的是,我这里并不是要讲“伪随机”、“真随机”这样的问题,而是关于如何生成服从某个概率分布的随机数(或者说 sample)的问题。比如,你想要从一个服从正态分布的随机变量得到 100 个样本,那么肯定抽到接近其均值的样本的概率要大许多,从而导致抽到的样本很多是集中在那附近的。当然,要解决这个问题,我们通常都假设我们已经有了一个生成 0 到 1 之间均匀分布的随机数的工具,就好像 random.org 给我们的结果那样,事实上许多时候我们也并不太关心它们是真随机数还是伪随机数,看起来差不多就行了。 :p

现在再回到我们的问题,看起来似乎是很简单的,按照概率分布的话,只要在概率密度大的地方多抽一些样本不就行了吗?可是具体要怎么做呢?要真动起手来,似乎有不是那么直观了。实际上,这个问题曾经也是困扰了我很久,最近又被人问起,那我们不妨在这里一起来总结一下。为了避免一下子就陷入抽象的公式推导,那就还是从一个简单的具体例子出发好了,假设我们要抽样的概率分布其概率密度函数为 p(x) = \frac{1}{9}x^2 ,并且被限制在区间 [0, 3] 上,如右上图所示。

» Continue reading 如何生成随机数(上)

CV 课程 Project:简单验证码的识别

验证码的识别可以说是一个非常困难的问题,更何况现在有一些验证码让人来辨认都有些不容易,当然正如我标题里说的,我这里讨论的是一种简单的验证码,具体来说就是经过旋转、缩放之后再加上一些随机线条作为干扰而得到的图片,如右图所示。其实这个问题最开始是 MSTC 第四届趣味程序设计竞赛中的一道题,这个学期上了一门《计算机视觉》课,最后要求交一个 Project ,老师给了一些题目,也可以自己想主题,于是我就定了这个主题。

由于最近各种 deadline ,我也没空把详细过程再用 blog 的方式写一遍了,如果感兴趣可以直接看我的 Report 文档以及完整的代码

» Continue reading CV 课程 Project:简单验证码的识别

荐书:《女士品茶》

这本书的全名为《女士品茶:20世纪统计怎样变革了科学》,英文原名为 The Lady Tasting Tea: How Statistics Revolutionized Science in the Twentieth Century 。从副标题已经可以看出来它讲的内容是什么了,而从主标题也可以看出这应该会是一本很有趣的书。事实也确实如此。

我最近发现这本书之后它就几乎占满了我所有的空余时间,本来准备看完以后再来推荐,但是现在看到一半已经实在是忍不住了。总的来说这是一本好书,我最开始发现它也是在 newsmth 的统计版上看到有人推荐,而且书的作者 David Salsburg 本身也是牛人,我们会发现并不是所有的科学家都是那种自己思维极度活跃跟正常人根本无法沟通的,其实有许多牛人写的科普类读物是非常易懂并且非常有趣的,并且这些看似随意的文字描述的背后其实有着坚实的理论基础,完全的外行人会觉得这是一本有趣的书,另一方面,在该领域有很深造诣的人,又会从字里行间读到其背后隐藏掉的复杂数学,可以看作对自己所学知识的一次整理。

当然我是属于前一类读者,虽然有听说过 Pearson 、Fisher 之类的名字,但是对于统计学的产生和发展以及一些更深层次的应用和理论并不是特别了解。所以我就完全把它当作一本休闲读物来看了——确实是非常有趣的。此外,我觉得等以后自己对这个领域有了更多的一些了解之后再回来看一遍这个书,估计又能尝到另一番味道呢。如果容许我剧透一下的话,里面会有各种 8g 趣闻,比如但凡学过“数理统计”这门课的人应该都知道有一个叫做“t 分布”的东西,如果不是特别死板的老师的话,通常会告诉大家叫 t 分布这个名字是因为发表该分别的家伙以 student 署名,不过如果你想知道这个以 student 署名的家伙到底是谁,以及为何要这样匿名来发表,就需要看这本书了。

» Continue reading 荐书:《女士品茶》

Proggit 圣诞套餐

大家圣诞快乐!

看论文看到崩溃之后,去 Proggit 逛了一圈,发现那边也很热闹,一连看到几个有趣的帖子,于是决定推荐几个:

…is there anything Emacs CANNOT do?
“Emacs is an OS” 的说法其实早就不陌生了,虽然大多数时候我会选择坚决捍卫这句话,但是其实自己也是把他当作一句有趣的玩笑来看待的。进入这个 thread ,看到有人说 Emacs 目前还不能编辑视频——这是理所当然的啊,我也这么觉得,不过下面立即有人给了这样一个链接:Acturally… ,自己点过去看吧,我决定再把 Emacs 打开来拜一拜! :D
» Continue reading Proggit 圣诞套餐

解决 Matlab MEX 编译时 GCC 版本的问题

在 Matlab 里使用 mex 来编译 C/C++ 代码失败,这个问题算是困扰了我好几个月了,主要是我的环境比较恶劣:系统是 Arch Linux ,感觉这个系统比较喜欢追求最新版本,比较无视老版本软件的兼容性问题吧。再加上系统是 64 位的,出现各种兼容性问题似乎也觉得是理所当然的,然后像 Matlab 这样的软件通常使用较老版本的 GCC ,而 GCC 更新的时候又做了一些大改动,总之结果是我每次试图编译的时候都得到类似这样的错误:

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.4.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libgmpxx.so.4)

因为 GCC 新版本里把 GLIBCXX_3.4.11 这个符号去掉了,所以挂掉了。搞得我每次需要运行 mex 编译的代码都要放到另外一台 Windows 机器上跑。也 Google 了很多次都没有找到解决方案。今天一怒之下用了最暴力的方法:/opt/matlab/sys/os/glnxa64/libstdc++.so.6 其实是指向该目录下的另一个文件 libstdc++.so.6.0.9 的软连接,我将他改成指向系统里的新版本的 libstdc++:/usr/lib/libstdc++.so.6.0.13 ,结果问题解决了。那个目录下还有一个 README ,说了这几个文件是从 GCC distribution 里拷贝过来的。于是这样用新版本覆盖应该不会有太大的问题吧? :p 至少目前还没有出什么问题的。