0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习中矩阵乘法计算速度再次突破

算法与数据结构 来源:量子位 作者:量子位 2021-06-24 17:36 次阅读

n阶矩阵乘法最优解的时间复杂度再次被突破,达到了

f6d190d4-d48d-11eb-9e57-12bb97331649.jpg

按定义直接算的话,时间复杂度是O(n³)。

光这么说可能不太直观,从图上可以看出,n足够大时优化后的算法就开始表现出明显优势。

矩阵乘法在深度学习中有着广泛的应用,像卷积神经网络(CNN)中最耗时间的卷积计算,就经常被映射成矩阵乘法。

虽然在具体实现上还有很多障碍,但矩阵相乘底层算法的优化,至少在理论上为深度学习节省时间提供了可能性。

而科学家们努力的目标,是使n阶矩阵乘法的时间复杂度尽可能接近理论上的最快速度O(n²)。

本次研究共同作者是一对师徒。

Josh Alman目前是哈佛大学的博士后研究员,主要研究方向是算法设计和复杂度理论。

Virginia Vassilevska Williams是他在MIT读博士期间的导师,研究方向是组合数学和图论在计算领域的应用。

Strassen:用加法替代乘法

矩阵乘法的时间复杂度直到1969年才第一次被Volker Strassen降至O(n³)以下。

看过《算法导论》的同学应该很熟悉Strassen算法。

以2阶矩阵相乘为例,总共需要进行2³=8次乘法,而2ⁿ的高阶矩阵相乘可以用分块法不断迭代细分解成若干个2阶子矩阵相乘。

Strassen巧妙的通过构造7个中间变量,用增加14次加法为代价省去了一次乘法。

对于

f75b808c-d48d-11eb-9e57-12bb97331649.png

定义

f7d831a4-d48d-11eb-9e57-12bb97331649.png

则有

f7e2a40e-d48d-11eb-9e57-12bb97331649.png

像这样,在M₁-M₇的计算中只有7次乘法操作。
由于矩阵乘法计算中乘法的复杂度是O(n³),而加法的复杂度只有O(n²),n越大时此方法的收益就越大。

且分块后每个子矩阵相乘都可以省去一次乘法操作,最终把时间复杂度降低到

f7edd1d0-d48d-11eb-9e57-12bb97331649.jpg

这么绕的算法到底怎么想出来的?可惜Strassen在论文中并没有说明这一点。

Strassen算法在实际应用时受到很大限制,如运行时会创建大量的临时变量,在n不够大时反倒更耗费时间。

还有只适用于稠密矩阵,针对稀疏矩阵有更快的专门算法。

但最重要的是,Strassen的办法让学界意识到,原来矩阵乘法问题还有优化空间啊!

激光法:用张量替代矩阵

20世纪70年代末期,科学家们找到了解决问题的新思路,将矩阵计算转换为张量计算。

1981年,Schonhage将此方法优化到

f88eb62c-d48d-11eb-9e57-12bb97331649.jpg

后,Strassen把这个方法命名为“激光法(Laser Method)”,因为和正交偏振激光有相似之处。

在后来的几十年中,矩阵乘法的每次优化都来自激光法的优化,即如何更有效的把矩阵问题转换成张量问题。

Alman和Williams的优化算法只比14年LeGall的

f8aa33a2-d48d-11eb-9e57-12bb97331649.jpg

减少了

f8baf98a-d48d-11eb-9e57-12bb97331649.jpg

从历次优化的幅度来看,似乎已逼近激光法的极限。

能算得更快了吗?

激光法很少在实际中应用,因为它只在n足够大,大到现代计算机硬件几乎无法处理的时候才能提供优势。

这样的算法被称作“银河算法(Galatic Algorithm)”。

在业界使用最多的还是通过分块法和并行处理控制矩阵的规模。当n不大时,再通过循环展开,内存布局优化等办法针对直觉算法的优化。

还有一点,现实中由于浮点数精度的限制,Strassen法和激光法在计算大规模矩阵时都会产生不小的误差。

矩阵乘法的加速,看来还没那么容易。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4769

    浏览量

    100685
  • 深度学习
    +关注

    关注

    73

    文章

    5497

    浏览量

    121092

原文标题:矩阵乘法计算速度再次突破极限,我炼丹能更快了吗?| 哈佛、MIT

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GPU在深度学习的应用 GPUs在图形设计的作用

    。 GPU的并行计算能力 GPU最初被设计用于处理图形和图像的渲染,其核心优势在于能够同时处理成千上万的像素点。这种并行处理能力使得GPU非常适合执行深度学习的大规模
    的头像 发表于 11-19 10:55 407次阅读

    NPU在深度学习的应用

    设计的硬件加速器,它在深度学习的应用日益广泛。 1. NPU的基本概念 NPU是一种专门针对深度学习算法优化的处理器,它与传统的CPU和G
    的头像 发表于 11-14 15:17 465次阅读

    pcie在深度学习的应用

    深度学习模型通常需要大量的数据和强大的计算能力来训练。传统的CPU计算资源有限,难以满足深度学习
    的头像 发表于 11-13 10:39 368次阅读

    GPU深度学习应用案例

    GPU在深度学习的应用广泛且重要,以下是一些GPU深度学习应用案例: 一、图像识别 图像识别是深度
    的头像 发表于 10-27 11:13 373次阅读

    在CM32M433R MCU上调用riscv_sqrt_f32()函数的计算速度比直接调用sqrtf()要慢,为什么?

    在CM32M433R MCU上调用riscv_sqrt_f32()函数的计算速度比直接调用sqrtf()要慢, 计算一次riscv_sqrt_f32大概54 cycles;sqrtf()大概29 cycles,FPU宏已打开,求助是什么问题。
    发表于 07-24 06:12

    深度学习反卷积的原理和应用

    深度学习的广阔领域中,反卷积(Deconvolution,也称作Transposed Convolution)作为一种重要的图像上采样技术,扮演着至关重要的角色。特别是在计算机视觉任务
    的头像 发表于 07-14 10:22 1540次阅读

    深度学习的时间序列分类方法

    的发展,基于深度学习的TSC方法逐渐展现出其强大的自动特征提取和分类能力。本文将从多个角度对深度学习在时间序列分类的应用进行综述,探讨常用
    的头像 发表于 07-09 15:54 857次阅读

    深度学习的无监督学习方法综述

    应用往往难以实现。因此,无监督学习深度学习扮演着越来越重要的角色。本文旨在综述深度
    的头像 发表于 07-09 10:50 651次阅读

    深度学习在工业机器视觉检测的应用

    随着深度学习技术的快速发展,其在工业机器视觉检测的应用日益广泛,并展现出巨大的潜力。工业机器视觉检测是工业自动化领域的重要组成部分,通过图像处理和计算机视觉技术,实现对产品表面缺陷、
    的头像 发表于 07-08 10:40 1035次阅读

    深度学习的模型权重

    深度学习这一充满无限可能性的领域中,模型权重(Weights)作为其核心组成部分,扮演着至关重要的角色。它们不仅是模型学习的基石,更是模型智能的源泉。本文将从模型权重的定义、作用、优化、管理以及应用等多个方面,深入探讨
    的头像 发表于 07-04 11:49 1164次阅读

    深度学习计算机视觉领域的应用

    随着人工智能技术的飞速发展,深度学习作为其中的核心技术之一,已经在计算机视觉领域取得了显著的成果。计算机视觉,作为计算机科学的一个重要分支,
    的头像 发表于 07-01 11:38 763次阅读

    深度学习编译工具链的核心——图优化

    等,需要调整优化网络中使用的算子或算子组合,这就是深度学习编译工具链的核心——图优化。图优化是指对深度学习模型的
    的头像 发表于 05-16 14:24 902次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>编译工具链<b class='flag-5'>中</b>的核心——图优化

    深度解析深度学习下的语义SLAM

    随着深度学习技术的兴起,计算机视觉的许多传统领域都取得了突破性进展,例如目标的检测、识别和分类等领域。近年来,研究人员开始在视觉SLAM算法
    发表于 04-23 17:18 1281次阅读
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>学习</b>下的语义SLAM

    FPGA在深度学习应用或将取代GPU

    的根本原因,它与 深度神经网络 有一个共同之处:都需要进行大量矩阵运算。 显卡可以并行执行矩阵运算,极大地加快计算速度。图形处理器可以把训练神经网络的时间从几天、几周缩短到几小时、
    发表于 03-21 15:19

    为什么深度学习的效果更好?

    导读深度学习是机器学习的一个子集,已成为人工智能领域的一项变革性技术,在从计算机视觉、自然语言处理到自动驾驶汽车等广泛的应用取得了显著的成
    的头像 发表于 03-09 08:26 614次阅读
    为什么<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的效果更好?