预测复杂的系统一定要用更多的神经元吗?在最新一期的《自然 · 通讯》上,俄亥俄州立大学的研究者给出了否定的答案。他们找到了一种将储备池计算速度最高提升 100 万倍的方法,使用的神经元比原来要少得多。
在数学领域,有一个名叫「动力系统」的概念。这一系统中存在一个固定的规则,描述了几何空间中的一个点随时间的演化情况,例如钟摆晃动、管道中水的流动、湖中每年春季鱼类的数量等。然而,动力系统就像天气一样,是很难预测的,因为初始条件下微小的变化能带动整个系统的长期的巨大的连锁反应,这就是我们所熟知的蝴蝶效应。
为了更好地预测动力系统随时间的演化,相关研究者在本世纪初提出了一种名为「储备池计算(Reservoir computing )」的机器学习算法。这是一种模仿人脑工作方式的计算方法,在预测动力系统演化方面非常有效,研究者也一直在这条路上不断改进。在最新一期的《自然 · 通讯》杂志上,来自美国俄亥俄州立大学的研究者公布了他们在储备池计算研究上的新进展。这些研究者表示,他们找到了一种新方法,将储备池计算的速度提高了 33 到 100 万倍,而所需的计算资源和数据输入却大大减少。他们将这种方法称为「下一代储备池计算」。
论文链接:https://www.nature.com/articles/s41467-021-25801-2这项研究的一作兼通讯作者为俄亥俄州立大学物理系教授 Daniel Gauthier。
共同作者包括克拉克森大学电子与计算机工程系教授 Erik Bollt、俄亥俄州立大学物理学博士 Aaron Griffith 和俄亥俄州立大学物理学博士后研究员 Wendson Barbosa。这项研究还得到了美国国防高级研究计划局(DARPA)的支持。在针对新方法的一次测试中,研究者在台式电脑上只用不到一秒的时间就解决了一个复杂的计算问题。如果使用当前的 SOTA 技术来解决该问题,研究者要用到超级计算机,而且需要更长的时间。储备池计算使用人工神经网络来预测动力系统的演化。研究者将动力系统上的数据输入神经网络中一个由随机连接的人工神经元组成的「储备池」中。该网络产生有用的输出,研究者可以解释该输出并给出反馈,从而建立一个越来越准确的演化预测系统。系统越大、越复杂,期望预测的结果越准确,人工神经网络就越大,完成任务所需的计算资源和时间也就越多。新研究主要作者、美国俄亥俄州立大学物理学教授 Daniel Gauthier 说,这里的问题是,基于人工神经元的储备池是一个黑盒子,科学家们不知道它里面到底发生了什么,只知道它管用。储备池计算核心的人工神经网络建立在数学基础上的,Gauthier 解释说,「我们让数学家看一下这些网络,并告诉我们里面的各种组件到底在多大程度上是必不可少的。」在这项新研究中,Gauthier 和他的同事调查了这个问题,发现整个储备池计算系统可以大大简化,从而显著降低对计算资源的需求,节省大量时间。他们在一个预测任务中测试了此概念,该任务涉及 Edward Lorenz 开发的天气系统,Edward Lorenz 是蝴蝶效应的发现者,被誉为混沌理论之父。在 Lorenz 预测任务中,研究者提出的下一代储备池计算技术明显优于当前的 SOTA 技术。在一台台式机上进行的一个相对简单的模拟中,新系统的速度是当前模型的 33 到 163 倍。但是,当目标是达到 great accuracy 时,下一代储备池计算要快 100 万倍。Gauthier 说,新方法只需要 28 个神经元就能达到原本 4000 个神经元才能达到的准确率。速度提升的一个重要原因在于:与上一代储备池计算相比,新一代储备池计算背后的「大脑」需要的 warmup 和训练要少得多。Warmup 指的是需要作为输入被添加到储备池计算机,从而为其实际任务做好准备的训练数据。「我们的新方法几乎不需要 warm 时间,」Gauthier 表示,「目前,为了 warmup,研究者必须放入 1000、10000 个甚至更多的数据点。这些都是实际工作中不需要的数据。我们只需要输入一两个或三个数据点。」一旦研究人员准备好训练储备池计算机进行预测,下一代系统需要的数据就会少很多。在 Lorenz 预测任务的测试中,研究人员使用 400 个数据点,就得到了与上一代储备池计算机使用 5000 个或更多数据点产生的相同的结果(具体数据点数量取决于所需的准确率)。Gauthier 说:「令人兴奋的是,下一代储备池计算采用了之前就已经非常优秀的技术,大大提高了效率。」他们计划将这项工作扩展到更复杂的计算问题上,比如预测流体动力学。「这是一个极具挑战性的问题。我们想看看,是否可以使用简化的储备池计算模型,以加快解决这个问题的进程。」Gauthier 表示。https://finance.ifeng.com/c/89lPtCkTHjUhttps://news.osu.edu/a-new-way-to-solve-the-hardest-of-the-hard-computer-problems/CUDA编程基础——利用CUDA实现光线追踪
9月23日20:00-21:30,CUDA编程基础系列分享第二期:利用CUDA实现光线追踪。本次分享主要介绍GPU多种存储单元的特点、使用Shared memory的实例、使用Constant memory的实例、编程实例—利用CUDA实现光线追踪等内容。