wpe7.jpg (11495 bytes)

我的征尘是星辰大海。。。
The dirt and dust from my pilgrimage forms oceans of stars...

-------当记忆的篇章变得零碎,当追忆的图片变得模糊,我们只能求助于数字存储的永恒的回忆,

作者:黄教授

The Computer And The Brain

    我的健康状况不允许我继续下去,(也许是一个借口,可是我实在是太难受了)在三十几度的烈日下步行十几二十公里不吃午饭的确是非常的累,但是相比折磨我的 疼痛来说似乎更好受一些。所以,我的头脑热度很高,所以,我会写下这些

呓语,这不代表我的个人观点,这仅仅代表了我在某一时空点上的头脑状态。

终于来到了外文书店,实际上我已经很少看书了,能够看得进去的书已经变成了报纸和杂志,大多数女人类似地只能有很短暂的注意期,(就是 bigbang theory里Sheldin 评价 Penny的意思)所以,女人只能看一些时装杂志,美其名曰感性。

其实大多数男人也是如此,过了三十五岁后繁殖后代的任务完成后,从生物学的角度来说,已经完成了生命的意义,继续生存的理由越来越少,从 自然平衡的角度来说,生物的寿命长短取决于这些物种完成繁殖任务后对于群体的消耗产出比,

有些物种比如人类在社会化高度发展的前提下,经验传递成为知识积累与传递的唯一媒介(在印刷术普及以前,这里的普及指的是二十世纪就是年 代后期,因为从来书本都是非常昂贵与笨重的,很多人连阅读的基本能力都没有就不用说传承

人类知识体系了,书本的作者也是如此,大多数时候除了专业书籍的出版由专业领域评价,大多数的书籍都是出版商的所谓经验与直觉,我不知道 是不是出版商决定了我们社会的知识体系的发展,至少在某些社会里,政治因素决定了知识

传播的取舍,比如毛泽东的书被反反复复印刷了几千万本,不知道其中有多少是有用的只是和一个人思想的独白?) 所以,有很多人整天在怀疑自己存在的价值,当然在他们为了繁殖目的而进行的所谓副产品的享受的时候是没有这个问题的,但是

当你的荷尔蒙水平下降到不再主动进行的时候,你是否开始怀疑自己存在的意义?对于大多数动物后代只需要繁殖不需要抚养,但是人类的所谓的 智能大部分来源于后天社会化的培养,所以,你还是有所谓的抚养的义务,于是人们找到了生存的

意义与快乐。

我从第一眼看到这本书就决定买下它,并且发誓要去阅读它,这个原因是不言而喻的<计算机与人脑>这样的决定人类命运的小册子 我直到今天才有机会阅读实在是一种耻辱,但是,我的解释是在几年或者十年前我是没有理解他的基础的。在书店里

浑身上下渗出的析出了氯化钠的汗液的情况下我憧憬着洗过热水澡躺在床上享受阅读的快感,仿佛中学时代学的一篇课文里一个电车售票员用自己 微波的工资想购买一本进步小说而犹豫不决最后被鲁迅大方的奉送的喜悦,当然我现在能够理解鲁迅

的书不送也没有多少人买,那些都是翻译版很贵的无用的书,(扯远了)总之,我花了36元买下了他,在经过了二十公里的跋涉后总算有了一个 补偿。(我原本希望烈日与中午绝食能够消灭我的中度脂肪肝,看来我需要每天如此才行,不过我需要

抗紫外线的防晒霜,因为我不但头脑被烧坏了,皮肤也快晒伤了)

这本书是计算机之父冯诺依曼在临终前未完成的讲稿,只有两章,可是应该是对人类的发展起到了决定性的作用,编辑说这是所谓的 “决定系列”,当然我也不知道如果没有冯诺依曼我们的计算机是否会有另一种架构,学操作系统时候教授反复灌输

我们说计算机发展了半个多世纪却没有超越当年冯诺依曼的体系,难道说计算机界除了冯诺依曼再没有天才开创另一个新篇章?如果这个不是偶然 现象就说明了必然,我们没有选择,仅仅是冯大师先知先觉帮我们看到了,不存在“决定”,因为我们

没有选择,计算机只有一种模式。真的吗?这本仅有据说四万字的箴言里面就提出了两种计算机模型:“模拟”和 “数字”。怎么理解呢?如果抛开早期计算机实现过程的遮掩来让我们试着理解大师的概念。

实际上我并不太懂,短短的叙述需要反复的理解,尤其我现在才读了第一小节,怎么理解呢?

Mudur曾经给我当头的棒喝,记得当时在讨论计算机图形里面使用物理学来模拟光子的传播来实现global lighting,我从我一贯的认识鄙视物理学是依附在数学身上的模糊观察者,因为在我心目中数学方法的精密与逻辑的严谨和物理学上的经验主义

形成了强烈的对比,在这一前提下我发出了数学是比物理来的精确的自然规律,因为物理怎么看都是一个实验科学(当然实验科学里面比医学生物 学化学药强的太多了,那些领域里妇女还是有机会参与的),对于此Mudur的短暂沉默让我感到压力,

他的说法让我第一次开始理解什么是数学,他说物理学才是客观世界的真实反映,数学只不过是用来描述的一种近似手段。从此以后我才开始理解 一个诺贝尔物理学奖获得者的感言的意义,他说如果他有下辈子他宁愿去做一个实验物理学家而不是

理论物理学家。这段话的意义是什么?他似乎再说当代理论物理学也快走到了他们的尽头,因为物理学始终都是和测量手段紧密相关的,在不同的 人类发展阶段有着不同的测量精度决定了物理学近似公式的可靠度,所以,牛顿时代不可能遇到后来

爱因斯坦的困惑,也不需要为了一大批新的观测现象而衍生一大堆的似是而非的数学工具。我从中学以后就不再看科普读物,偶然有一天看了一眼 发现这二十几年理论物理学,天体物理学生出了很多的理论和发现,爱因斯坦晚年所自己承认的最大

错误又被大家开始重新接受,为了平衡方程人们想出了黑物质,和黑能量,为了解释红移现象人们发明了大爆炸理论,也许过了几十亿年之后人们 观测到了宇宙收缩现象又要修正说大爆炸不是无限膨胀,最终的牛顿式的引力坍塌有导致宇宙周期性

的膨胀与收缩。等等不一而足,问题是我们没有相应的观测手段来证实任何一种猜想(也许有的有,我不想知道,因为他和我们作为生物的生命周 期来说都太遥远了,就连所谓的气候变热我都认为太遥远了,也许几百年之后才会有的沧海桑田和我

无关)。总之,我明白了一个简单的道理,物 理学是为了解释我们观察到的现象而试图建立一套所谓的“公理体系”,在一个理想环境下把各个量纲通过数学公式联系起来的过程。 这个做法的好处是利用了数学逻辑推导的严密与自动从而从

定性研究上升到定量研究。那么所谓的近似工具的数学本身是否有某种客观本质的属性呢?这似乎是一个无意义的问题。

冯诺依曼为什么说有两种计算机呢?一个是模拟的,一个是数字的。定义是什么我都不记得了更不要说理解了。我的感觉就是,我们的数学工具不 足以来描述我们需要研究的对象,冯大师讨论的是人脑,他在回答数学的本质,他认为人脑的神经

网络系统是近似或者说统计意义上的,他还说神经网络是并行计算,我们的计算都是串行的。

我的高烧退了,可以回过头去在慢慢看了。

今天再读了一节才明白所谓的“模拟计算机”或者说“计算机的模拟模式”很简单完全不是 我所想象的,而是真的模拟方式,比如加法器可以使用两个电流值和或者说并联,这个道理就是之前所说的物理世界和数学的紧密联系,因为我们的物理公理体系

就是依靠数学公式把量纲联系起来的,那么这些数学公式就在这个模拟模式下发生作用,只要我们的测量手段足够精密,这样的计算机其实比比皆 是。



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
我要回家,结果因为洛杉矶转机的飞机延误就被搁置在那里一天,昨晚飞到oakland,坐火车汽车半夜才回到家。
1。我现在的确越来越倾向于韩寒的很多观点,也许有些本身就是自己的观点,被人家说的更透彻,也许一个人生活社会阅历到一定阶段的必然。现在回想我父母对 于革命的态度应该可以有些理解了,他们对于共产党及其制度的痛恨绝对比我们要深刻的多,在文化大革命时期我很小的时候就整天听他们悄悄地在背后骂江青是小 老婆,可是为什么当初对于6.4的态度却是不赞同呢?当然是因为中国政治运动一旦走向暴民运动只有沦为共产党第二。所以,我赞成你说的中国需要一个甘地, 这个非暴力运动可以被最大多数阶层所接受,包括法统上的统治者。所以,这也是李敖认为现在是中国最好的实施某些民主自由实际措施的时期,因为宪法里都有 了,你只需要统治者兑现就行了,不用推倒重来。
2。deep in C的确是以小见大,很多问题如果不是有很多的实践非常难以接触到,作者好像是被cisco收购过来的公司的一个大牛吧,所以,面试的很多问题都和这里面的类似。当然cisco现在是要向“软件公司”转变,哈哈,没想到吧。
3。其实是一个非常小的细节。
class Singleton{
protected:
static Singleton* single;
public:
static Singleton* createInstance(){
  if (single != NULL){ // here you don't NEED to synchronize and it is 99% of cases
    return single;
  }else{
    //only here you need to do synchronization, and it only happens only once
   ...
  }
};
Singleton* Singleton::single=NULL; //static pointer initialize to NULL and this is done even before the program "main" function is executed.

比较通常的代码
...
static Singleton* createInstance(){
// 我一开始就随手加上同步的代码,没有考虑实际上这个需求仅仅是在1%的情况下才需要,却在99%的情况下运行,这是很大的浪费
//比如使用流行的linux下大家喜爱的lock
MyLock myTempLock;
 if (single == NULL){
  single = new Singleton();
 }
 return single; 
}
你所说的java对于性能开销要求不高那应该是因为应用之所以选择java本身就对于性能要求不高,应该和语言本身关系不大,作为java其实也应该像以 上那样处理,我说这个细节很小因为的确就是一个同步的开销,只是因为C里面一行代码,cpu的指令也许有几百几千的差别。我现在接触的那个部分其实对于性 能要求还不算最严苛,在多媒体处理模块就是非常的苛刻了,因为要达到在非常短的延迟里压缩处理视频信号那么这种问题就显得很突出了。
java的乐观锁的问题我不是很明白,因为照理说写的时候在检查版本号肯定不是原子操作,怎么能够保证同步?难道这里面在使用锁?如果是的话那仅仅是 fine-grain的synchronization就是把一个大的同步细分为更小的同步,不过我想这不大可能,因为使用版本号本身就是为了去除锁,对 吗?也许我理解不对你的乐观锁的定义。
我印象学校里谈论乐观悲观同步思想是这样自的,乐观派认为同步在大部分情况下都不需要,与其一开始就同步还不如,先做了以后在检查是否真的需要,这个检查 就是使用版本号之类的便宜的方法。悲观派正好相反,认为大多数时候同步都是需要的,与其乐观派的偷懒获得的一点点边际效应不如索性每次都老老实实的同步。 我觉得你谈得那个乐观锁肯定是有其特定的上下文的应用,因为你不能盲目的写完了再来检查同步,在C/C++里面这种十有八九系统就crash了后面的检查 也不可能了,比如你的指针直接就指向非法地址了。也许java没有这么严重,但是如果你写的东西不可恢复这个做法也是不行的,除非就是在写的时候有“备 份”或者可以轻易还原(比如就是一个bool值,但这肯定不是普遍的case),但这又是有别的开销了。

4。stackoverflow我一直都是google到的,自己倒是没有专门去看,里面的确有很多的经典问题的解答。

5。我现在在想我也许已经找到了我很多年想要去作的一个方向,那就是图形识 别与机器学习的结合,我的想法是基于这样一个直觉,就是人脑的形成来自于人眼及其相关连的和视觉有关的人脑部分的进化而来的,原因就是人的信息有90%来 自于视觉。那么假如我们有一个最最原始的系统能够把一个图像进行识别的话,任何高级思维的“原材料”比如算法及其相关的数据上下文等等都可以转化为二进制 的图形表达,那么使用同样最原始的图形识别可以达到高级抽象思维的“认知”。那么假如我们有一个基于最最原始的图形的“学习”也可以顺理成章的达到高级的 “学习”。当然我相信绝大多数AI研究者都是把这个当作共识了,根本不屑于在陈述了。
如果以上假设是正确的,那么使用opencv作为一个尝试的平台是一个非常 好的想法了。上次我说过opencv使用了paul voila的三个贡献(三个东西的整合,并不一定就是他原创,本来都有的),就是image integral, feature, adaboost的三个结合,第一个最容易,思想就是如何把2D数据“转化”为1D来快速查找,这个是和第二个feature的选择紧密相关的,2D数据 誓不可能被1D数据代替的,我们需要的仅仅是根据我们的需要快速查找2D数据的特征值(feature),图形积分(image integral)我觉得是一个不错的选择,当然这两者是紧密相关的,选择feature就选择了image integral,这两者核心还是怎样能够快速查找2D数据来“识别”。
因为所有的AI的核心就在于“识别”,而识别决不仅仅是简单的比较,因为智 能之所以是智能就是因为数据量太大,变化太多,无法用一个“单一”的算法来解决,(所以,我有时候认为唯有云计算才可能是人工智能的解决,但是回过头来想 人脑的计算能力都够了,为什么一定要云计算,一定有什么捷径。)说白了就是某种的“模糊识别”,这不仅仅是大数据量的要求,也是“抽象”数据的要求。因为 我们的识别需要一定的容错性,这个是无奈的选择,但又有好处,可以让我们把某些相关连的当作一类,我以为这就是抽象的本质,就是忽略细节的不同。(我很多 时候认为,人如果不忘记就不会抽象,年纪越大,记忆越差,抽象思维反而更好了。自我安慰一下吧)

所以,如果以上假设是对的,那么使用图形积分检查特征值就是一个很好的选 择。这里面当然有可以改进的,比如我始终在想为什么不把图形先“预处理”一下呢?比如压缩实际上就可以帮我们先把不必要的信号过滤掉了,仿佛把信息里的 “熵”值提高了(搞不清是提高还是降低,总之方便我们发现核心的特征值。)因为在寻找特征值这方面很多压缩/编码算法有很深刻的认识,不使用前人的研究成 果是很难让人理解的。(我一直想把图像先进行h264压缩在进行识别,不过后来想这个只是提高,并不是我们最迫切的。)

但是以上都是说的“识别”,更重要的是第三点,“学习”。关于“学习”的定 义我就一直有困难,究竟什么是学习?这个可能我们这辈子也不一定能够真正的理解。但是作为机器学习的一个通用算法,adaboost我觉得是一个很不错的 平台,因为它本质上仅仅是一个通用的框架,可以整合各种各样的学习的算法达到一个“超强的学习算法”。我个人对于adaboost或者任何boost的算 法的看法是,这一系列的justifier,或者说委员会里的各个评委,如果他们的观点有一定的独立性(理想的是完全的独立,但现实是很难的,也许只有部 分是完全独立,但是算法本身可以把他们过滤掉。)那么通过训练赋予他们不同的权值可以达到“取长补短”的效果,于是才能够将一个个单一的算法的效果加强为 一个超级的强悍。如果这个过程能够被称为学习,我们不妨称其为“计算机定义的狭义学习”或者人工学习。名词不重要,关键是这个训练==》检验==》训练= =》检验的循环是一个很好的模式很符合人类的学习过程。(我怎么听自己像是毛泽东在讲认识论实践论?)

但是,原本的adaboost有一个致命的问题就是他的训练学习是一个“静 态”的,就是说训练的数据必须现在就要有,训练完了,新的数据来了没办法添加进来,除非重新从头训练,这个是困扰我的大问题,我搜集了一些paper在讲 解决这个incremental adaboost的算法,但还没有找到我认为好的,或者说我还没有完全理解,感觉也许没有纯粹的完美的解决,(这正如人脑遇到的同样的难题,你不可能拥有 无限的记忆来作“精确的识别”,你只能使用某种模糊或者近似算法)如果,我们只能使用某种模糊近似的算法来解决这个问题,究竟有没有一个通用的办法呢?
对于这个问题,我希望你能给我一些意见。

back.gif (341 bytes)     up.gif (335 bytes)    next.gif (337 bytes)