Soumettre la recherche
Mettre en ligne
Matrix Multiplication in Strassen Algorithm
•
0 j'aime
•
1,604 vues
T
Taku Miyakawa
Suivre
Matrix Multiplication in Strassen Algorithm
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 9
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
Deep Learning JP
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
sleipnir002
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)
Hidetoshi Matsui
形状解析のための楕円フーリエ変換
形状解析のための楕円フーリエ変換
Tsukasa Fukunaga
パターン認識と機械学習 13章 系列データ
パターン認識と機械学習 13章 系列データ
emonosuke
PRML2.1 2.2
PRML2.1 2.2
Takuto Kimura
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
hirokazutanaka
Recommandé
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
Deep Learning JP
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
sleipnir002
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)
Hidetoshi Matsui
形状解析のための楕円フーリエ変換
形状解析のための楕円フーリエ変換
Tsukasa Fukunaga
パターン認識と機械学習 13章 系列データ
パターン認識と機械学習 13章 系列データ
emonosuke
PRML2.1 2.2
PRML2.1 2.2
Takuto Kimura
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
hirokazutanaka
coordinate descent 法について
coordinate descent 法について
京都大学大学院情報学研究科数理工学専攻
PRML勉強会第3回 2章前半 2013/11/28
PRML勉強会第3回 2章前半 2013/11/28
kurotaki_weblab
PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」
Keisuke Sugawara
東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1
hirokazutanaka
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
Hiroshi Shimizu
Stochastic Gradient MCMC
Stochastic Gradient MCMC
Kenta Oono
Prml
Prml
syou6162
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
Takao Yamanaka
PRML輪読#8
PRML輪読#8
matsuolab
RとStanで分散分析
RとStanで分散分析
人斬り 抜刀斎
モンテカルロサンプリング
モンテカルロサンプリング
Kosei ABE
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
Ohsawa Goodfellow
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門
irrrrr
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Teppei Kurita
深層学習 第6章
深層学習 第6章
KCS Keio Computer Society
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
Deep Learning JP
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
Ryosuke Sasaki
PRML 6.4-6.5
PRML 6.4-6.5
正志 坪坂
ディープボルツマンマシン入門
ディープボルツマンマシン入門
Saya Katafuchi
【輪読】Bayesian Optimization of Combinatorial Structures
【輪読】Bayesian Optimization of Combinatorial Structures
Takeru Abe
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
Contenu connexe
Tendances
coordinate descent 法について
coordinate descent 法について
京都大学大学院情報学研究科数理工学専攻
PRML勉強会第3回 2章前半 2013/11/28
PRML勉強会第3回 2章前半 2013/11/28
kurotaki_weblab
PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」
Keisuke Sugawara
東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1
hirokazutanaka
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
Hiroshi Shimizu
Stochastic Gradient MCMC
Stochastic Gradient MCMC
Kenta Oono
Prml
Prml
syou6162
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
Takao Yamanaka
PRML輪読#8
PRML輪読#8
matsuolab
RとStanで分散分析
RとStanで分散分析
人斬り 抜刀斎
モンテカルロサンプリング
モンテカルロサンプリング
Kosei ABE
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
Ohsawa Goodfellow
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門
irrrrr
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Teppei Kurita
深層学習 第6章
深層学習 第6章
KCS Keio Computer Society
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
Deep Learning JP
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
Ryosuke Sasaki
PRML 6.4-6.5
PRML 6.4-6.5
正志 坪坂
ディープボルツマンマシン入門
ディープボルツマンマシン入門
Saya Katafuchi
【輪読】Bayesian Optimization of Combinatorial Structures
【輪読】Bayesian Optimization of Combinatorial Structures
Takeru Abe
Tendances
(20)
coordinate descent 法について
coordinate descent 法について
PRML勉強会第3回 2章前半 2013/11/28
PRML勉強会第3回 2章前半 2013/11/28
PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」
東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
Stochastic Gradient MCMC
Stochastic Gradient MCMC
Prml
Prml
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
PRML輪読#8
PRML輪読#8
RとStanで分散分析
RとStanで分散分析
モンテカルロサンプリング
モンテカルロサンプリング
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
深層学習 第6章
深層学習 第6章
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
PRML 6.4-6.5
PRML 6.4-6.5
ディープボルツマンマシン入門
ディープボルツマンマシン入門
【輪読】Bayesian Optimization of Combinatorial Structures
【輪読】Bayesian Optimization of Combinatorial Structures
En vedette
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Kink の宣伝
Kink の宣伝
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Taku Miyakawa
En vedette
(16)
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Graph Algorithms Part 1
Graph Algorithms Part 1
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Kink の宣伝
Kink の宣伝
Hadoop jobbuilder
Hadoop jobbuilder
擬似乱数生成器の評価
擬似乱数生成器の評価
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
コルーチンの実装について
コルーチンの実装について
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Similaire à Matrix Multiplication in Strassen Algorithm
行列計算アルゴリズム
行列計算アルゴリズム
Takuo Tachibana
Prml 最尤推定からベイズ曲線フィッティング
Prml 最尤推定からベイズ曲線フィッティング
takutori
Cosmology
Cosmology
KENTAROHARA
MMDs10.6-7
MMDs10.6-7
mfumi
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
Akira Asano
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題
Joe Suzuki
C02
C02
anonymousouj
Fourier analysis on symmetric group
Fourier analysis on symmetric group
HanpenRobot
続・わかりやすいパターン認識 9章
続・わかりやすいパターン認識 9章
hakusai
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元
Shogo Muramatsu
Computing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner Basis
Yasu Math
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1
sleepy_yoshi
これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法
kenyanonaka
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
Zansa
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
nitoyon
Prml3.5 エビデンス近似〜
Prml3.5 エビデンス近似〜
Yuki Matsubara
確率微分方程式の基礎
確率微分方程式の基礎
HanpenRobot
NN, CNN, and Image Analysis
NN, CNN, and Image Analysis
Yuki Shimada
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
nonane
Fourier transform
Fourier transform
ShinoharaTakuto
Similaire à Matrix Multiplication in Strassen Algorithm
(20)
行列計算アルゴリズム
行列計算アルゴリズム
Prml 最尤推定からベイズ曲線フィッティング
Prml 最尤推定からベイズ曲線フィッティング
Cosmology
Cosmology
MMDs10.6-7
MMDs10.6-7
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題
C02
C02
Fourier analysis on symmetric group
Fourier analysis on symmetric group
続・わかりやすいパターン認識 9章
続・わかりやすいパターン認識 9章
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元
Computing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner Basis
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1
これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
Prml3.5 エビデンス近似〜
Prml3.5 エビデンス近似〜
確率微分方程式の基礎
確率微分方程式の基礎
NN, CNN, and Image Analysis
NN, CNN, and Image Analysis
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
Fourier transform
Fourier transform
Plus de Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Java Quine Golf
Java Quine Golf
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
Plus de Taku Miyakawa
(6)
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Java Quine Golf
Java Quine Golf
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Matrix Multiplication in Strassen Algorithm
1.
Strassenのアルゴリズム による行列の積の計算 2017-09-19 宮川 拓
2.
概要 n*nの密な正方行列の積が、Θ(n^3)よ りも漸近的に小さな計算量で計算できる びっくり
実装&計測してみた 元ネタ: コルメン等『アルゴリズム・イントロダク ション』第3版, 4.2節 2/9
3.
行列の積をふつうに計算 ふつうに計算 𝐴
= ( 𝑎 𝑖 𝑗 ), 𝐵 = ( 𝑏 𝑖 𝑗 )をn次の正方行列と する。 𝐶 = 𝐴 ∙ 𝐵とすると、その要素 𝑐 𝑖 𝑗 は、 𝑐 𝑖 𝑗 = σ 𝑘=1 𝑛 𝑎 𝑖 𝑘 ∙ 𝑏 𝑘 𝑗 これは素直に下記の3重ループで書ける for i in 1~n for j in 1~n for k in 1~n c [i,j ]+=a[ i,k ]* b [k,j ] 計算量はΘ(n*n*n)=Θ(n^3) 3/9
4.
準備: 分割統治 A,
B, Cを4つずつの(n /2)次正方行列 に分割すると、C=A・Bは 𝐶11 𝐶12 𝐶21 𝐶22 = 𝐴11 𝐴12 𝐴21 𝐴22 ∙ 𝐵11 𝐵12 𝐵21 𝐵22 = 𝐴11 ∙ 𝐵11 + 𝐴12 ∙ 𝐵21 𝐴11 ∙ 𝐵12 + 𝐴12 ∙ 𝐵22 𝐴21 ∙ 𝐵11 + 𝐴22 ∙ 𝐵21 𝐴21 ∙ 𝐵12 + 𝐴22 ∙ 𝐵22 と書き直せる 書き直した式を再帰関数で実装すると、1 回の呼び出しは、半分の次数の部分行列同 士の乗算について、8回関数を呼び出す したがって、その計算量はΘ(n^3) 4/9
5.
Strassenのアルゴリズム こ こ
で 𝑃1 ~ 𝑃7 を 下 記 の よ う に 置 く と 𝑃1 = 𝐴 1 1 ( 𝐵1 2 − 𝐵 2 2 ) 𝑃2 = ( 𝐴 1 1 + 𝐴 1 2 ) 𝐵 2 2 𝑃3 = ( 𝐴 2 1 + 𝐴 2 2 ) 𝐵1 1 𝑃4 = 𝐴 2 2 𝐵 2 1 − 𝐵1 1 𝑃5 = ( 𝐴 1 1 + 𝐴 2 2 ) ( 𝐵1 1 + 𝐵 2 2 ) 𝑃6 = 𝐴 1 2 − 𝐴 2 2 𝐵 2 1 + 𝐵 2 2 𝑃7 = 𝐴 1 1 − 𝐴 2 1 𝐵1 1 + 𝐵1 2 次 が 成 り 立 つ 𝐶1 1 = 𝐴 1 1 ∙ 𝐵1 1 + 𝐴 1 2 ∙ 𝐵 2 1 = 𝑃5 + 𝑃4 − 𝑃2 + 𝑃6 𝐶1 2 = 𝐴 1 1 ∙ 𝐵1 2 + 𝐴 1 2 ∙ 𝐵 2 2 = 𝑃1 + 𝑃2 𝐶2 1 = 𝐴 2 1 ∙ 𝐵1 1 + 𝐴 2 2 ∙ 𝐵 2 1 = 𝑃3 + 𝑃4 𝐶2 2 = 𝐴 2 1 ∙ 𝐵1 2 + 𝐴 2 2 ∙ 𝐵 2 2 = 𝑃5 + 𝑃1 − 𝑃3 − 𝑃7 5/9
6.
Strassenのアルゴリズム 前ページの計算を再帰関数として実装 すると、1回の呼び出しごとに、部分 行列の乗算の呼び出しは7回 nを2倍すると計算量は7倍に増える
したがって、計算量は Θ 𝑛 𝑙𝑜𝑔27 = Θ 𝑛2.8073… 6/9
7.
実装 https://bitbucket.org/miyakawataku/ matrix- multiplication/src/default/matrix.go 7/9
8.
計測 log2(n) 単純 Strassen n-1との比 (単純) n-1との比 (Strassen) 4
22,724 577,688 - - 5 133,972 4,008,528 5.90 6.94 6 1,129,255 28,688,124 8.43 7.16 7 9,924,139 203,509,826 8.79 7.09 8 133,242,248 1,576,870,691 13.43 7.75 9 1,327,584,877 11,072,402,847 9.96 7.02 10 11,892,402,060 86,182,808,153 8.96 7.78 11 106,612,149,065 619,821,838,102 8.96 7.19 12 3,073,269,379,009 5,012,791,249,199 28.83 8.09 実行環境: GCE n1-standard1 CPU: 2.20GHz(x1コア), キャッシュ55MB たぶんXeon E5-2699 v4 キ ャ ッ シ ュ に 乗 ら な く な っ た た め ? 4096*4096*4byte = 64MiB 8/9
9.
総括 素敵なアルゴリズムは、nが小さい時には遅い。 そして大抵の場合、nは小さい。 素敵なアルゴリズムの計算量の式には、大きな 定数項が掛かっている。 nが頻繁に大きくなることが分かっていない限り、 素敵にしてはならない。 ― Rob Pike
“Notes on Programming in C” 9/9
Télécharger maintenant