当试图找到最有效的方法时,甚至像矩阵乘法这样抽象的事情也会像游戏一样。这有点像用尽可能少的步骤来解魔方。对于矩阵乘法,即使在相对简单的情况下,每一步都可以有超过10^12个选项。
在过去的50年里,研究人员用了很多方法来解决矩阵乘法问题,所有的方法都是基于计算机搜索和人类直觉的辅助。上个月,人工智能公司DeepMind的一个团队展示了如何从一个新的方向解决这个问题,他们在《自然》杂志的一篇论文中报告说,他们已经成功地训练了一个神经网络,以发现矩阵乘法的新的快速算法。这就好像人工智能找到了一个策略来解决一个极其复杂的魔方。
似乎是为了证明这一点,在《自然》杂志的论文发表三天后,两位奥地利研究人员说明了新方法和旧方法是如何相互补充的。他们使用传统的计算机辅助搜索来进一步改进神经网络发现的一种算法。
结果表明,就像解决魔方的过程一样,通向更好算法的道路将充满曲折。
矩阵乘法矩阵乘法是所有数学中最基本和最普遍的运算之一。要乘一对n × n矩阵,需要将这些元素以特定的组合相乘并相加,以生成第三个n × n矩阵。两个n × n矩阵相乘的标准方法需要进行n^3次乘法运算。
对于具有数千行和列的较大矩阵,这个过程会非常繁琐。但在1969年,数学家沃尔克·斯特拉森发现了一种方法,可以用7步而不是8步的乘法步骤将一对2 × 2矩阵相乘,代价是引入更多的加法步骤。
斯特拉森的算法对于一对2乘2的矩阵显得很繁琐。但它适用于更大的矩阵。这是因为矩阵的元素本身可以是矩阵。例如,一个具有20,000行和20,000列的矩阵可以被重新解构成一个2 × 2矩阵,其中四个元素都是10,000 × 10,000的矩阵。每个矩阵又可以再细分为4个5000 × 5000的矩阵,以此类推。斯特拉森可以应用他的方法在这个嵌套层次结构的每一层乘2 × 2矩阵。随着矩阵大小的增加,通过更少的乘法节省的成本也在增加。
斯特拉森的发现促使人们寻找矩阵乘法的有效算法,并由此激发了两个不同的子领域。其中一个关注的是一个原理问题:如果你想象两个n × n矩阵相乘,让n趋于无穷,在最快的可能算法中,乘法步骤的数量如何随n增长?目前的最佳缩减记录是n^2.3728596。
第二个子领域的矩阵规模较小。在斯特拉森的工作完成后不久,研究人员指出斯特拉森已经达到了一个理论极限:2 × 2矩阵的乘法运算步骤不可能少于7步。但对于所有其他矩阵大小,所需乘法的最小次数仍然是一个悬而未决的问题。针对小矩阵的快速算法可能会产生巨大的影响,因为当合理大小的矩阵相乘时,这种算法的重复迭代可能会击败斯特拉森的算法。
不幸的是,即使对于3 × 3矩阵,可能的算法数量也超过了宇宙中原子的数量。
面对如此庞大的选项,研究人员已经取得了进展,将矩阵乘法转化为一个看起来完全不同的数学问题——一个更容易由计算机处理的问题。可以将两个矩阵相乘的抽象任务表示为一种特定的数学对象:一种称为张量的三维数字数组。然后,研究人员可以将这个张量分解为基本分量的和,称为“秩1”张量;每一个都代表对应矩阵乘法算法的不同步骤。这意味着找到一个有效的乘法算法相当于在一个张量分解中最小化项的数量,项越少,所涉及的步骤越少。
通过这种方式,研究人员发现了新的算法,对于许多小的矩阵,用比标准的n^3乘法步骤更少的时间乘n × n矩阵。但是,那些不仅优于标准算法,而且优于斯特拉森的小矩阵算法的算法仍然是遥不可及的。
算法介绍DeepMind团队通过将张量分解转化为单人游戏来解决这个问题。他们从AlphaGo衍生出的深度学习算法开始,AlphaGo在2016年学会了围棋,足以击败顶尖的人类棋手。
所有的深度学习算法都是围绕着神经网络建立的:人工神经元的网络被分成几层,连接的强度可以变化,代表每一层神经元对下一层神经元的影响程度。这些连接的强度是在训练过程的多次迭代中调整的,在此过程中,神经网络学会将接收到的每个输入转换为帮助算法实现总体目标的输出。
在DeepMind的名为AlphaTensor的新算法中,输入代表通向有效矩阵乘法方案的步骤。神经网络的第一个输入是原始矩阵乘法张量,它的输出是AlphaTensor选择的第一次移动的第1个张量。该算法从初始输入中减去这个秩1张量,生成一个更新的张量,该张量作为新的输入反馈到网络中。这个过程不断重复,直到最终起始张量中的每一个元素都被降为零,这意味着不再有排在第1位的张量要去掉。
在这一点上,神经网络已经发现了一个有效的张量分解,因为它在数学上保证了所有秩1张量的和完全等于起始张量。得到它的步骤可以转换回对应矩阵乘法算法的步骤。
游戏是这样的:AlphaTensor反复地将一个张量分解为一组秩1分量。每次,如果AlphaTensor找到减少步数的方法,它就会获得奖励。但通往胜利的捷径根本不是凭直觉就能找到的。
该团队现在有了一个算法,理论上可以解决他们的问题。他们只需要先训练一下。
新路径
像所有的神经网络一样,AlphaTensor需要大量的数据进行训练,但张量分解是一个众所周知的难题。很少有研究人员可以为网络提供有效分解的例子。相反,他们通过训练算法解决更简单的逆问题来帮助算法开始:将一堆随机生成的秩1张量相加。
布朗大学的计算机科学家迈克尔·利特曼说:
他们正在利用简单的问题为困难的问题生成更多的数据。将这种向后训练过程与强化学习相结合,AlphaTensor在寻找有效分解时产生自己的训练数据,比单独的任何一种训练方法都要有效得多。
DeepMind团队训练AlphaTensor分解代表12 × 12矩阵乘法的张量。它寻找普通实数矩阵相乘的快速算法,也寻找特定于更有约束的算法,称为模2算法。
这是基于两个数字的数学,所以矩阵元素只能是0或1,并且1 + 1 = 0。
研究人员通常从这个更有限但仍然广阔的空间开始,希望这里发现的算法可以适用于实数矩阵。
经过训练,AlphaTensor在几分钟内重新发现了斯特拉森的算法。然后,它针对每种矩阵大小发现了多达数千种新的快速算法。这些算法与标准算法不同,但乘法步骤数相同。
在一些案例中,AlphaTensor甚至打破了现有的记录。它最令人惊讶的发现发生在模2算法中,它发现了一种用47个乘法步骤将4 × 4矩阵相乘的新算法,这比斯特拉森算法两次迭代所需的49个乘法步骤有所改进。它还击败了最著名的5 × 5模2矩阵算法,将所需的乘法次数从以前的98次减少到96次。
但这个新记录仍然落后于91步,而要击败使用5 × 5矩阵的斯特拉森算法需要91步。
这一引人注目的新结果引起了很多注意,一些研究人员对这种基于人工智能的对现状的改进大加赞赏。但并不是所有矩阵乘法领域的人都对此表示肯定。研究人员还强调,破纪录的4 × 4算法的即时应用将受到限制:它不仅只在模2算法中有效,而且在现实生活中,除了速度之外,还有其他重要的考虑因素。
最后的转折相对于成熟的计算机搜索方法,AlphaTensor最大的优势也是它最大的弱点:它不受人类对好的算法的直觉的约束,所以它无法解释自己的选择。这使得研究人员很难从它的成就中学习。
但这缺点没有看上去那么大。AlphaTensor结果公布几天后,奥地利约翰内斯·开普勒大学的数学家曼纽尔·考尔斯和他的研究生报告了又一进展。
当DeepMind的论文发表时,考尔斯正在使用传统的计算机辅助搜索新的乘法算法。他们的方法是通过反复调整现有的算法,希望从中节省更多的步骤。以AlphaTensor的5 × 5模2矩阵算法为起点,他们惊奇地发现,他们的方法在短短几秒钟的计算之后,就将乘法步骤从96步减少到了95步。
AlphaTensor还间接帮助他们进行了另一项改进。在此之前,考尔斯并没有费心去探索4 × 4矩阵的空间,他们认为不可能击败斯特拉森算法的两次迭代。AlphaTensor的结果促使他们重新考虑,在从头开始计算一周后,他们的方法出现了另一个47步算法,与AlphaTensor发现的算法无关。
考尔斯认为这是机器学习在发现新算法方面应用的真正试金石。他指出,寻找快速矩阵乘法算法是一个组合问题,计算机搜索,无论是否有人工辅助,都非常适合。但并不是所有的数学问题都那么容易确定。如果机器学习能够发现一个全新的算法思想,这将是一个游戏规则的改变者。
可以把神经网络用于语言解释描述命题,这样哪怕是不知道原理,也可以训练神经网络自己来干这个事。。
这才是真正的人工智能!
[点赞][点赞][点赞]
太长不看
要说各种突破还得看人家[呲牙笑]
百度搜索“科技”全是华为的信息,我不是要喷华为,但是国人知道什么叫科技吗?
这不是半年前的新闻了吗