本书是脑神经科学前沿译丛中的一册。神经和认知科学越来越多地成为定量和计算学科,这本书从读者出发,深入浅出地介绍了心理科学中的计算模型。作者通过精心挑选的计算演示,介绍了一系列重要的方法和工具。除了非常实用的计算机编程介绍外,本书还涵盖了神经元的动态系统模型、记忆的神经网络模型、决策的概率模型和思维的数学模型。作者以清晰的语言和简洁的练习为基础,引导读者进入计算方法的世界。这本书将帮助学生和科学家以严谨和精确的方式思考神经和心理机制。
这本书对初学者足够友好。翻开这本书,读者能看到这本书对计算神经建模的基本思想和主要问题作了梳理,随后又带领大家对领域内的主要研究问题一一做了探讨。在实践部分,为了减轻读者的畏难情绪,主要选择Excel这类电子表格软件作为练习工具,同时又介绍了复杂的编程工具,使读者有机会深入学习。
我在尝试获得一点点计算建模能力时,遵循了一条相当标准化的路径。我会试着阅读每一篇标题看上去具有吸引力的文章,然而我通常只能读懂导言和结论,并深信它们就是能让我学会计算建模的敲门砖。但是当我开始阅读方法部分时,就遇到了问题,这里有很多我不理解的术语和公式。为了能读完整个部分,我尝试搜索每一个术语,但这样会导致另外的两个问题:我的学习路径会变得分岔,而且路途变得无穷无尽。我想读懂一篇涉及神经网络的记忆模型文章,可能先阅读某人的MATLAB代码,而我对MATLAB的无知会让我开始关注编程问题,比如MATLAB编程中的向量化计算,而想搞懂它又需要学习线性代数的知识。少数时候,这个学习路径能够被我走通。我意识到向量是很多神经网络算法的核心数学概念。我可以思考如何操纵向量,然后可以理解完成这些操纵的MATLAB代码。最后,我才能理解整篇文章。
不过,我现在尝试去写我当年能够拥有的那本书。这本书定义了常见的数学符号,涵盖了计算编程术语的基础知识,并且有足够多的基本例子,让我在试图将他们应用于大的研究问题前,可以看到这些概念是如何在较小的范围内运作的。然而在任何程度上,都没有任何一本心理学或者神经科学的书做到这一点。但我相信自己可以写出这样一本书,来对一些典型的研究问题做出介绍并引出进一步的研究。
这本书写给谁看的?这本书主要是写给本科生,尤其是心理学本科生看的。因为他们通常对计算模型方法非常感兴趣,但是没有掌握相应的背景知识来阅读专业文献或进行计算实验。
这本书也是为那些像我一样受训较早的科研工作者准备的。当年编写计算机程序需要在卡片上打孔,装在箱子里,最后在计算中心统一执行。现在,计算机技术的发展使我们的桌面计算机有了进行大规模模拟计算的能力,但我们中的许多人仍然处在需要联系技术支持部门来升级我们的Office软件的水平。
这本书同样是写给那些被计算模型方法所吸引,但又本能地排斥它的人。他们可能会排斥文献中的古怪记号和公式。或者,他们觉得并没有时间学习微分方程或者微积分的课程,毕竟这些课程的难度早已名声在外。他们可能会因为编程的艰涩或者编程语言的多样性而备受困扰(万一我选错语言怎么办)。最后,这本书也是为那些认为自己能力不足而排斥计算建模的人所准备的,毕竟很多人认为数学能力是一种天赋。
这本书的目标是什么?这本书的目标是向刚才这些人证明,他们的担忧并无必要。
数学符号并不是障碍,它们只是另一种专业化的术语,用于具体和简洁地表达复杂的思想。使用数学符号并不代表它所表达的东西非常深奥。6 =i 3= 1i,这个表达式看起来似乎很神秘,但实际上它只是想说明1,2,3 这三个数字之和为6。对于书中涉及的每个数学领域,我都会介绍常用的符号和缩写。这样做是为了让你在阅读时更容易理解。这也是为了让大家相信,一旦理解了这些符号,大多数公式的含义其实简洁明了。公式本身可能包含了深刻的见解,但是它的深度并不来源于构成公式的符号。
使用计算机或者编程也不应该成为计算建模的障碍。这本书计划让你通过熟悉计算机和编程术语,来消除这种疑虑。编程或者写代码,和我们在手机上下载应用,在电脑日历程序上安排约会,或者为电子邮件程序设置垃圾邮件过滤器一样简单。我们使用具有界面的程序来做一些事同样是编程。本书中,我们通过使用电子表格程序作为练习,来介绍编程,这样读者就不会感觉编程过程很陌生。同时,我将逐步介绍编程的结构和术语。在我们能够理解使用电子表格程序和写代码之间的共同之处后,读者就会有勇气去尝试传统的编程。编程如同学习一门外语一样,要说一口流利的外语是需要经过不断练习的。本书打算给读者提供大量的实践机会。此外,我还介绍了一些编程语言类型,并展示了大多数语言的相似性。你不可能挑选一个不好的语言来学习,但其实大多数语言所做的事情是相似的,只是语法略有不同。编程语言之间存在差异,但是这些差异对我们的用途来说并不重要。
数学很难,要成为一名数学家更需要多年的潜心研究,但为了特定的目的来使用数学则并不难。我们并不需要成为数学家才能比较不同的话费套餐,随便找张纸计算一下就可以了,根本不需要使用皮亚诺公理(Peanos axiomatization of arithmetic)。同样,虽然微分方程、线性代数等知识可能是数学中较为艰深的内容,但它们也可以因特定的目标被简单应用,我们不需要像数学家那样对待它们。本书对计算神经科学和认知建模中涉及的一些数学领域进行了简要、精练的介绍,并且对于每一个主题,我都提供了用法示例。
总的来说,我希望上述内容能够消除人们认为数学和计算方法已经超出人的正常能力的偏见。恰恰相反,任何有着充分好奇心的大学生,不管他们的背景如何,也不管他们的最后一堂数学课是否在高中就结束了,他们都能完成本书的练习。我确信这一点,是因为我的教学中就使用这些材料,我还没遇到任何一个完全无法掌握这些知识内容的人。虽然这不容易,但不代表完全做不到。正如任何新的或具有挑战性的研究课题一样,关键在于坚持、引导和鼓励。计算模型就像冰壶或者钢琴,能力的增长来源于持之以恒的练习。
本书是如何编写的?为了实现上述目标,本书会循序渐进地介绍研究方法,并力图将它们整合到一条主线上。每个选出的研究问题都会突出一个特定的计算建模主题和数学方法。我会把每个研究问题与神经学或心理学的应用联系起来。在讨论到数学的地方,我会介绍常用的符号和缩写。我会展示最基本的数学思想如何应用于心理学,为我们所用。许多晦涩的数学以及数学家花时间所研究的极具挑战性的分析方法,对于心理学建模通常都是不必要的。我们可以利用计算机的力量来模拟或近似求出我们的答案。本书的练习大多可以在电子表格软件中实现。在一些课程中,我还会演示如何使用传统的计算机语言来实现相同的效果。在电子表格软件中拖动和复制几百行后,学生们往往会更有动力来探索其他方法,并体会到短短几行计算机代码所具有的力量。
本书所选的主题往往别具一格,但是这本书的目标仍然是培养高水平研究所需的技能。我在本书中牺牲深度来获取广度,我更喜欢那些能给初学者以帮助的材料。
如何使用本书?我建议所有的读者都从第1 章开始阅读。在开始使用一种方法前,了解它的目标和局限性是很重要的。即使没有别人的帮助,每个人也能独立读完本书。虽然你可以改变各部分的阅读顺序,但是我认为你还是会发现按照本书书写的顺序阅读会更容易理解。书中有很多练习供你尝试,我还附上了答案,以便你确定自己做的是否正确。来自工科或者计算机专业的学生可以通过本书了解到他们的技术对神经科学和心理学有什么用,而有一定心理学基础的学生,无论是本科生还是研究生,都可以从他们感兴趣的部分开始学习。
如果你是一名教师,打算在自己的教学中使用本书,我认为你可以按照任何顺序来进行。本书每一部分都是相对独立的,有自己的重点和练习。我认为每一个部分都可以单独讲授,并可以扩展本科生的心理学研究方法课程。
关于本书的学习是应该从霍奇金赫胥黎模型和微分方程开始,还是从其他主题开始,有着两种截然相反的观点。一种观点认为,禁忌的术语和微分方程神话般的难度,会使我所期待的学生们望而却步。我理解这种想法,如果教师觉得这部分内容令人不适,确实不适合作为教学的开始。另一种观点,正如我所持的观点,这部分内容恰恰能使学生及早建立起信心。神经元建模作为起始部分可能会有些枯燥,学生可能需要额外的帮助,但是一旦大多数学生遇到了自己熟悉的知识,比如指数函数,并且在整个累积放电模型中都有这些内容,就会极大地鼓舞他们。霍奇金赫胥黎模型也许看上去有些复杂,但是除了累积放电这个概念外,没有任何新的东西。我发现教学的关键点在于节奏。如果每一章都花一周的时间阅读,他们能在四五周内学完霍奇金赫胥黎模型的代码。对于那些不太自信的学生在一个月内用电子表格软件编写复杂的偏微分方程的代码,会给他们极大的鼓舞,而这些方法的发现者甚至获得了诺贝尔奖。学生在未来可能不会使用到计算模型,但他们不再会觉得这种方法是魔法。
根据偏好来排序本书的另一个重要部分是介绍各种编程语言的信息和中间部分。如果所有的工作都局限于电子表格软件的话,这些部分完全可以跳过,读者可以自主安排,教师也可以在必要的时候引导学生阅读适当的部分。
对于每个部分所需要的时间,我通常建议每周花两到三个小时来学习每个章节。我会试图让学生进行课外阅读,然后在上课的时候通过合作完成练习,或者与学生们讨论上周留下的问题的解决方案。
最后的叮嘱。我的首要目标是让本书作为探索重要的研究方法世界的入口。我花了很长的时间和大量的工作才达到如今的水平。我觉得我的理解仍然只是我所期待的世界的一小部分,但它仍然足以让我感受到计算模型的力量和乐趣。当你读完本书后,你并不会马上成为一个数学家,但你会有基础,也会使你有足够的信心,通过额外的努力成为数学家。你将能够自主决定研究是否值得做下去,如果你决定不按照这条路线继续深究,你也可以知道自己其实有能力这样做,而且你将会对研究所需有更深入的理解,如果你和一个计算神经科学研究者一起做研究,你将会是很好的合作者。如果你选择对这些主题中的任何一个进行更多的研究,或者抽出时间和我分享你的研究进展,我会非常高兴。无论何时,我都期待你对本书的反馈。
作者:布利特·安德森(Britt Anderson),加拿大滑铁卢大学心理学教授。译者:李红,中国心理学会前任理事长、华南师范大学心理学教授、博士生导师、长江学者特聘教授,研究领域:认知神经科学、发展心理学。夏骁凯,华南师范大学心理学博士,研究领域:计算神经科学、认知建模。
第1章 心理学中的计算方法的思想和范畴简介
第一部分 神经建模
第2章 什么是微分方程?
第3章 微分方程的数值应用
第4章 插曲:使用循环进行计算
第5章 从动作电位到神经元编程:累积放电
第6章 插曲:使用if 语句计算
第7章 霍奇金和赫胥黎:两位男士和他们的模型
第8章 插曲:函数运算
第二部分 神经网络
第9章 数理基础:向量和矩阵
第10章 插曲:交互式计算
第11章 神经网络概论
第12章 插曲:使用Octave 软件练习德尔塔规则
第13章 自动联想记忆与霍普菲尔德网络
第三部分 概率和心理模型
第14章 什么是概率?
第15章 用随机游走算法做决策
第16章 插曲:用Python 编写心理学实验程序
第四部分 认知建模的逻辑和规则
第17章 布尔逻辑
第18章 插曲:使用函数式语言进行科学计算
第19章 产生式规则与认知
第20章 插曲:简单产生式系统的函数式编程
第21章 ACT-R :一种认知架构
第22章 基于智能体的建模
第23章 结束语