推荐MIT6.034《人工智能》课程

最近,在看了偏技术和技巧的当然同样很不错的Andrew Ng的人工智能课程之后,偶然翻到了MIT的Patrick Henry Winston《人工智能》课程。其中,对于人工智能到底什么的探讨,并且从大量的具体的人工智能系统的背后算法来讨论人工智能是什么的角度,给了我非常深刻的启发:实际上,任何问题的解决,如果我们都明确地找到出来——知识基础、思考方式——是什么,那么,我们都可以找到这些问题、知识和方式的表示,于是,在这个表示的基础上,把问题解决变成一个可操作的问题。这个时候,这个问题的解决,还需要智能吗?那么,哪些问题的解决,是可以这样人工智能化的呢,还是说其实大量现在看起来还不能够人工智能化的问题,实际上仅仅是问题、知识和思考方式还不明确,或者是表示没有找到,而已呢?如果是这样,那么,到底,什么智能是不能人工的那部分智能呢?

这样的思考,甚至给我我在教系统科学导引的时候的一个非常好的例子:任何解决非平庸问题的算法或者说软件系统,其实都是系统——所谓的系统就是一定要找出来尽量少的明确的知识、思考方式的集合,并且明确表示出来问题、知识和方式,于是剩下的事情,只不过是尝试和组合。例如,符号积分算法就是依赖于一个非常有限的知识:20个左右的基本积分公式、12个左右的简单积分变换、12个左右的经验积分变换,加上决策树的思考方式:从起点开始,到终点,每一次都对被积函数做上面的变换或者查公式。仅此而已。实际上,任何一个软件工程的问题,同样需要找到这样的基础知识、基础操作、思考方式,然后构建一个解决某一类问题的完备的系统。

顺便,在讲解目标树决策树的时候Winston强调了,把一个东西明确提出来的威力:“我们给它一个名字,就有了掌控和运用它的力量(When you name it, you have power over it)”。

沿着这个——把问题解决的知识基础(积分公式和变换)和思维方式(决策树)分开并且在知识内部和方式方法内部都找到尽可能少的核心元素来构建一个生成体系的——系统性思考的角度做展开,我发现其深刻的价值远远不止以上这些。我先列出来我扩大了的一张表:

  1. 最好能够成系统的问题。成系统的意思就是其中有少数核心问题,其他的问题可以通过这些核心问题运用系联来生成,或者倒过来其他问题可以通过系联归并到核心的问题。
  2. 成系统的知识基础。成系统的意思就是其中有一些核心知识,其他的知识可以通过这些核心知识,依靠系联来生成。
  3. 运用上面的知识基础来解决上面的问题的思维方式和分析方法,最好也是成系统的,也就是说有联系可生成。
  4. 如何提出这些问题,有没有一般的方法?例如抓住联系来问问题也就是系联性思考,例如批判性思维,例如试验和实践的检验。
  5. 如何得到这些知识?可以通过构设这些知识发现的问题场景来从发现知识的过程中学会这些知识。其中从现实到模型的抽象化过程可能特别的重要。逻辑推理和数学计算可能也是重要的一环。
  6. 如何掌握这些思维方式分析方法?同样从使用这些方式方法来提出和解决问题的过程中来体验和掌握这些方式方法。
  7. 如果以上的问题都有了比较好的回答,是不是存在一个高效率的教和学的方式,例如一个可以性化的学习顺序,以及一个可以个性化的学习问题发现和解决的系统?

在整理了这张表之后,我发现,实际上,前面三条是软件系统或者是问题解决的关键步骤,加上后面的三条则是教和学的关键——教和学不仅要让学习者学会知识和方法,还需要学会创造知识、创造方式方法、创造性地运用知识和方式方法。

实际上,构建学科概念地图,就在梳理和解决前三条,并且最好整理出来一个生成的体系。而从概念地图开始,选择具体的例子来体现学科大图景,实际上,就是关注后面的四条。

这一切的一切,都是为了“教的更少,学得更多”,让学习者建立起来一个生成已有的甚至全新的知识和方式方法的体系,而这样的生成系统的关键就是系统的思想——系统的元素和元素之间的联系,以及具有生成能力的核心的元素。

也就是说,教和学的目标不是知识,知识仅仅是媒介,我们通过这个媒介来习得获取知识的思维方式和分析方法,然后,当我们有了这个学科的研究对象和问题之后,把这些方式方法用到对象和问题上,原则上,可以重新把知识和知识体系发展和构建出来。

这正好就是我所说的,“以学科大图景为目标的”,“以批判性思维和系联性思考为基础的”,“理解型学习”。

后续,继续总结。