| 前段时间忙得头昏脑涨,然后又被蘑菇打了个岔,今天接着侃阿狗。 我在《五》里面提到了启发式运算(heuristic)这个概念,后来觉着不过瘾,于是又在《六》里面做了更详细的阐述。不过呢,好像还是没有说清楚,因为大拿出来了,且看韩姥姥的跟帖: “小小纠正。严格说,heuristic 不是 trial-and-error。heuristic 是在搜索最优答案的过程中,引入一个 heuristic function (启发式函数?不知这样翻译对不对)。搜索算法在面对选择时,先用这个函数估算一下各个选择的优化值,然后,选一个最好的。注意,当前最好的,不一定下一 步就最好。所以,所有可能选择的路径,还都是存着的,为下一步用。 可想而知,这个 heuristic function 非常重要。搞不好就会误导。而且,许多实际应用中,不可能用纯数学公式来设计出完美的 heuristic function。这就是为什么我们需要neural network。” 看懂了么?还是不懂?没关系,因为聪明伶俐的阿福也没看懂。我觉得难懂的地方,就是这个“heuristic function”,因为谁也说不清这究竟是个什么东西。其实我在查资料时也见过这个概念,但是觉得没法说清楚,所以就干脆不说了。 首先要说明的是,heuristic这个词原意有撞大运(trial-and-error)的意思,但用在计算机技术搜寻策略上,就不再是完全撞大运了,而是有既定的方针和策略。比如说我前面提到的,在搜寻计算机病毒的时候,采取的是查找典型的一再重复的行为,就是所谓的pattern。而这方针和策略的制定,跟以前的经验有关,说到底,就是各村有各村的高招,地雷的秘密,可不能随便告诉你。方针和策略有了,再在现有的可能中搜寻最优化的解决途径,然后再顺着这条路走下去,这就是我对“heuristic function”的理解了。你要还是不懂,只能说我水平不够哈,没法把这个问题解释清楚。 不过也没关系,看看再说一个故事能不能说明问题。我在《五》还提到了图灵(Alan Mathison Turing),接着飞行员在跟帖中说了一大通图灵。其实我是没敢多说图灵的事,因为这个题目太大,要是说开去,不知道什么时候才能绕回来。好在炉匠师傅在最近的一篇日志里(见炉匠《瓮中之脑——普特南的哲学与科学》),也提到了广义图灵测验(Turing Test),有兴趣的可以到炉匠那里去看。我在回飞行员的帖中提到了电影《The Imitation Game》,又有同学说对这个电影很失望,不过我倒是觉着电影拍得很好,顺便就借着这个电影说几句。 不敢剧透太多,只能说这部电影说的故事,就是图灵在二次大战中,破解德国的密码机Enigma的故事。关于Enigma,炉匠师傅另外一篇日志《炉匠:科普一下网络绑票背后的技术(二) 》中有详细介绍,我就不费口舌了。图灵发明了一个破解Enigma的机器,叫做Christopher。当然Christopher的运算方法,也是用蛮力穷极所有可能。但那时候还没有电子计算机,Christopher是机械的,运算能力有限,所以哐当哐当算了一天下来,到了半夜12点,还没有结果呢,新的密码就出来了,前面的工作就白费了。第二天又是从头再来,但是Enigma的变化太多,Christopher根本就算不过来,所以他们毫无进展,直到有一天意识到有些东西是固定的,于是问题就解决了。图灵找到的这条线索,也可以说是heuristic,这就是经验和智慧的结果,当然这不是一个heuristic function。 由此顺便发挥一下。如今写科研基金申请报告,都要求有特别的假设(specific hypothesis)。要是没有,人家在评审的时候说你是大海捞针,还有一个特定的词,叫做“捞鱼巡游”(fishing expedition),意思就是你这只瞎猫,不定哪天哪时能碰上一只死老鼠呢。一般得了这种评语,基本上就不用想得到基金了。密码上的可能在大多数情况下毕竟还是有限的,所以蛮力计算也还能用。在科研上要是思路不对,想得到预想的结果是不可能的。图灵后来破解密码,也是找到了正确的思路,问题也就迎刃而解了。 然后呢,姥姥又说了“而且,许多实际应用中,不可能用纯数学公式来设计出完美的 heuristic function。这就是为什么我们需要neural network。”为什么不能用纯数学公式来设计出完美的heuristic function?因为有好些地方并不是一一对应的关系,而是模糊的关系,用neural network可以解决这个问题。 我觉得还有一个很重要的原因,就是前面提到的,在设计heuristic function的时候,有很大一部分是凭过去的经验。人有学习和记忆的能力,人的智慧和经验是代代积累相传。而蛮力(brute force)运算,则是每次都从头再来,浪费了太多运算能量和时间。而神经网络,是可以由学习和记忆功能,这样就可以积累经验,而不必每次都从头算起。 不过神经网络,又是一个大题目,下回再说吧。 |
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.