我们理解这些代码,我们知道它们将会如何转化为计算流程,在网络训练完毕以后也能够知道网络的所有权重。
从这个意义上说,我们对网络的结构和其中的运算都有完全的了解。但我们真正希望获得的是一种介于人类思维语言以及计算机运算细节之间的中转语言,我们可以借助这种语言直接构建可以分类 ImageNet 图像或者能够下围棋的神经网络,而不需要经过繁琐、消耗资源的迭代学习过程;可以借助这种语言直接获得网络表现的清晰完整的描述,而不需要通过反复的测试进行经验总结。目前我们还没有找到这样的中转语言,甚至都不确定是否存在这样的语言。
一个值得深入思考的角度是,在机器学习的理论框架下设计的人工智能系统,都是一些「学习系统」,它们在人类编写的学习规则下学习(从数据中提取信息)。这些学习规则的表达非常紧凑,几十、几百行高级编程语言代码(比如 Pytorch 代码)就足以描述。
对于我们广大的机器学习科研和应用人员来说,这种紧凑的表达显然能帮助我们获得一些有价值的理解。这样的紧凑表达也给我们提供了许多便利:我们可以为同一个想法创造许许多多的不同变体,然后用它们解决一大批问题。
既然学习规则可以被紧凑地表达,那么神经网络本身可以被紧凑地表达吗?不见得。近几年随着知识蒸馏和计算复杂度的研究增多,我们对数据和网络的可压缩性的理解也在增加。我们已经知道,在 ImageNet 上训练完毕的网络是无法被压缩到 10 万个独立参数之内的;即便是用来识别 MNIST 数字的网络也无法被压缩为人类可以理解的格式。但同时,能存储超过三万个类别的知识并进行分辨的人类大脑,作为一类十分高级的神经网络,想要在其中找到,或者想要压缩为某种紧凑的表征,也是几乎不可能的事情。
跳出压缩技巧之外,我们其实可以问这样一个问题:在任务中表现出了人类水准的网络,应当是容易压缩的吗?不难得到答案:越是处理复杂任务、能存储并处理越多信息的网络,就越难以压缩。虽然人脑的神经网络和如今的人工神经网络有诸多不同,但是相同点也不少,尤其是极高的可塑性以及难以准确了解网络内的表征。说到底,人脑在具有极强的持续学习能力、有高超的任务解决能力的同时,可解释性并不比人工神经网络好到哪里去,但同时人类在学习和发展方面有诸多理论研究成果和实用技巧,不仅容易理解,也能切实起到帮助改善个人状况、提升个人能力的作用。我们似乎可以说,为神经网络(不论人脑还是人工神经网络)找到人类可以理解的紧凑表达不仅不是唯一的目标,甚至它的作用也不如网络架构、学习规则、发展规律的研究的作用更大。看起来可行的事情到了后才证明此路不通,这样的故事在历史上反复重演。也许以后我们会发现人工神经网络便于实验所以更容易理解,也有可能我们首先证明了人类大脑的强模态性、近似线性和高噪声特性;也有可能我们终都无法完全理解任一种网络。
目前热门的研究大脑的方法已经可以单独研究其中的先天成分;从行为学的角度讲,我们也可以提问学习是如何改变了行动的。
