テンソルの次元を削減するアルゴリズム
統計学 、 機械学習 、 アルゴリズム において 、 テンソルスケッチは 次元削減 の一種であり、 テンソル 構造を持つ ベクトル に適用すると特に効率的です 。 [1] [2]このようなスケッチは、明示的 カーネル法や ニューラルネットワーク の 双線形 プーリングを 高速化するために使用でき、多くの 数値線形代数 アルゴリズムの基礎となっています 。 [3]
数学的な定義
数学的には、次元削減行列またはスケッチ行列は、 任意のベクトルに対してとなる 行列である。
M
∈
R
k
×
d
{\displaystyle M\in \mathbb {R} ^{k\times d}}
k
<
d
{\displaystyle k<d}
x
∈
R
d
{\displaystyle x\in \mathbb {R} ^{d}}
|
‖
M
x
‖
2
−
‖
x
‖
2
|
<
ε
‖
x
‖
2
{\displaystyle |\|Mx\|_{2}-\|x\|_{2}|<\varepsilon \|x\|_{2}}
高い確率で。言い換えれば、 小さな誤差までベクトルのノルムを保存します。
M
{\displaystyle M}
テンソル スケッチには、となるような ベクトルに対して であれば 、変換を より効率的に計算できるという 追加の特性があります。ここで は 外積 ではなく クロネッカー積 を表しますが、この 2 つは 平坦化 によって関連しています 。
x
=
y
⊗
z
{\displaystyle x=y\otimes z}
y
∈
R
d
1
,
z
∈
R
d
2
{\displaystyle y\in \mathbb {R} ^{d_{1}},z\in \mathbb {R} ^{d_{2}}}
d
1
d
2
=
d
{\displaystyle d_{1}d_{2}=d}
M
(
y
⊗
z
)
{\displaystyle M(y\otimes z)}
⊗
{\displaystyle \otimes }
高速化は 、まず を書き換えることによって実現されます。ここで、 は 要素ごとの ( アダマール ) 積を表します。 および はそれぞれ 、時間 と で計算できます 。アダマール積を含めると、全体の時間は になります。ほとんどの使用例では、この方法は、 の時間 を必要とする 完全な方法よりも大幅に高速です 。
M
(
y
⊗
z
)
=
M
′
y
∘
M
″
z
{\displaystyle M(y\otimes z)=M'y\circ M''z}
∘
{\displaystyle \circ }
M
′
y
{\displaystyle M'y}
M
″
z
{\displaystyle M''z}
O
(
k
d
1
)
{\displaystyle O(kd_{1})}
O
(
k
d
2
)
{\displaystyle O(kd_{2})}
O
(
d
1
d
2
+
k
d
1
+
k
d
2
)
{\displaystyle O(d_{1}d_{2}+kd_{1}+kd_{2})}
M
(
y
⊗
z
)
{\displaystyle M(y\otimes z)}
O
(
k
d
)
=
O
(
k
d
1
d
2
)
{\displaystyle O(kd)=O(kd_{1}d_{2})}
などの高次テンソルの場合、 節約効果はさらに顕著になります。
x
=
y
⊗
z
⊗
t
{\displaystyle x=y\otimes z\otimes t}
歴史
テンソルスケッチという用語は、2013年に造られ [4]、 同年に Rasmus Pagh [5] が行った手法を説明しています。もともとは、 高速フーリエ変換を使用して カウントスケッチ の高速 畳み込みを 行うと考えられていました 。その後の研究により、テンソルランダム埋め込みを介したはるかに大規模な次元削減に一般化されました。
テンソルランダム埋め込みは、2010年に差分プライバシーに関する論文 [6] で導入され、2012年にRudelsonらによってスパース回復の文脈で初めて分析されました。 [7]
Avronら [8]は、特に 多項式カーネル
への応用に焦点を当てて、テンソルスケッチの部分空間埋め込み特性を研究した最初の研究者です 。この文脈では、スケッチは、各ベクトルのノルムを一定の確率で保存するだけでなく、各 線形部分空間 内のすべてのベクトルのノルムを保存することが求められます。これは非常に強力な特性であり、より大きなスケッチサイズを必要としますが、David Woodruffの著書で説明されているように、カーネル法を非常に幅広く使用できるようになります。 [3]
テンソルランダム投影
面 分割積は 行のテンソル積として定義されます( 1996年に V. Slyusar [9]によって提案されました [10] [11] [12] [13] [14] レーダー と デジタルアンテナアレイの アプリケーション用 )。より直接的には、 とを 2つの行列とします。このとき、 面分割積は [10] [11] [12] [13] です。
この積が有用な理由は、次の恒等式です。
C
∈
R
3
×
3
{\displaystyle \mathbf {C} \in \mathbb {R} ^{3\times 3}}
D
∈
R
3
×
3
{\displaystyle \mathbf {D} \in \mathbb {R} ^{3\times 3}}
C
∙
D
{\displaystyle \mathbf {C} \bullet \mathbf {D} }
C
∙
D
=
[
C
1
⊗
D
1
C
2
⊗
D
2
C
3
⊗
D
3
]
=
[
C
1
,
1
D
1
,
1
C
1
,
1
D
1
,
2
C
1
,
1
D
1
,
3
C
1
,
2
D
1
,
1
C
1
,
2
D
1
,
2
C
1
,
2
D
1
,
3
C
1
,
3
D
1
,
1
C
1
,
3
D
1
,
2
C
1
,
3
D
1
,
3
C
2
,
1
D
2
,
1
C
2
,
1
D
2
,
2
C
2
,
1
D
2
,
3
C
2
,
2
D
2
,
1
C
2
,
2
D
2
,
2
C
2
,
2
D
2
,
3
C
2
,
3
D
2
,
1
C
2
,
3
D
2
,
2
C
2
,
3
D
2
,
3
C
3
,
1
D
3
,
1
C
3
,
1
D
3
,
2
C
3
,
1
D
3
,
3
C
3
,
2
D
3
,
1
C
3
,
2
D
3
,
2
C
3
,
2
D
3
,
3
C
3
,
3
D
3
,
1
C
3
,
3
D
3
,
2
C
3
,
3
D
3
,
3
]
.
{\displaystyle \mathbf {C} \bullet \mathbf {D} =\left[{\begin{array}{c }\mathbf {C} _{1}\otimes \mathbf {D} _{1}\\\hline \mathbf {C} _{2}\otimes \mathbf {D} _{2}\\\hline \mathbf {C} _{3}\otimes \mathbf {D} _{3}\\\end{array}}\right]=\left[{\begin{array}{c c c c c c c c c }\mathbf {C} _{1,1}\mathbf {D} _{1,1}&\mathbf {C} _{1,1}\mathbf {D} _{1,2}&\mathbf {C} _{1,1}\mathbf {D} _{1,3}&\mathbf {C} _{1,2}\mathbf {D} _{1,1}&\mathbf {C} _{1,2}\mathbf {D} _{1,2}&\mathbf {C} _{1,2}\mathbf {D} _{1,3}&\mathbf {C} _{1,3}\mathbf {D} _{1,1}&\mathbf {C} _{1,3}\mathbf {D} _{1,2}&\mathbf {C} _{1,3}\mathbf {D} _{1,3}\\\hline \mathbf {C} _{2,1}\mathbf {D} _{2,1}&\mathbf {C} _{2,1}\mathbf {D} _{2,2}&\mathbf {C} _{2,1}\mathbf {D} _{2,3}&\mathbf {C} _{2,2}\mathbf {D} _{2,1}&\mathbf {C} _{2,2}\mathbf {D} _{2,2}&\mathbf {C} _{2,2}\mathbf {D} _{2,3}&\mathbf {C} _{2,3}\mathbf {D} _{2,1}&\mathbf {C} _{2,3}\mathbf {D} _{2,2}&\mathbf {C} _{2,3}\mathbf {D} _{2,3}\\\hline \mathbf {C} _{3,1}\mathbf {D} _{3,1}&\mathbf {C} _{3,1}\mathbf {D} _{3,2}&\mathbf {C} _{3,1}\mathbf {D} _{3,3}&\mathbf {C} _{3,2}\mathbf {D} _{3,1}&\mathbf {C} _{3,2}\mathbf {D} _{3,2}&\mathbf {C} _{3,2}\mathbf {D} _{3,3}&\mathbf {C} _{3,3}\mathbf {D} _{3,1}&\mathbf {C} _{3,3}\mathbf {D} _{3,2}&\mathbf {C} _{3,3}\mathbf {D} _{3,3}\end{array}}\right].}
(
C
∙
D
)
(
x
⊗
y
)
=
C
x
∘
D
y
=
[
(
C
x
)
1
(
D
y
)
1
(
C
x
)
2
(
D
y
)
2
⋮
]
,
{\displaystyle (\mathbf {C} \bullet \mathbf {D} )(x\otimes y)=\mathbf {C} x\circ \mathbf {D} y=\left[{\begin{array}{c }(\mathbf {C} x)_{1}(\mathbf {D} y)_{1}\\(\mathbf {C} x)_{2}(\mathbf {D} y)_{2}\\\vdots \end{array}}\right],}
ここで、 は要素ごとの ( アダマール ) 積です。この演算は線形時間で計算できるため、 テンソル構造を持つベクトルに対して通常の行列よりもはるかに高速に乗算できます。
∘
{\displaystyle \circ }
C
∙
D
{\displaystyle \mathbf {C} \bullet \mathbf {D} }
PhamとPagh [4] のテンソルスケッチは を計算します
。ここで、 と は 独立した カウントスケッチ 行列で、 は ベクトル 畳み込み です。彼らは、驚くべきことに、これが に等しいことを示しています。これは テンソル積のカウントスケッチです。
C
(
1
)
x
∗
C
(
2
)
y
{\displaystyle C^{(1)}x\ast C^{(2)}y}
C
(
1
)
{\displaystyle C^{(1)}}
C
(
2
)
{\displaystyle C^{(2)}}
∗
{\displaystyle \ast }
C
(
x
⊗
y
)
{\displaystyle C(x\otimes y)}
この関係は面分割積 の観点から 次のように
見ることができる。
C
(
1
)
x
∗
C
(
2
)
y
=
F
−
1
(
F
C
(
1
)
x
∘
F
C
(
2
)
y
)
{\displaystyle C^{(1)}x\ast C^{(2)}y={\mathcal {F}}^{-1}({\mathcal {F}}C^{(1)}x\circ {\mathcal {F}}C^{(2)}y)}
ここで、 は フーリエ変換行列 です 。
F
{\displaystyle {\mathcal {F}}}
は正規直交 行列な ので 、 のノルムには影響せず 、無視できます。残るのは です 。
F
{\displaystyle {\mathcal {F}}}
F
−
1
{\displaystyle {\mathcal {F}}^{-1}}
C
x
{\displaystyle Cx}
C
∼
C
(
1
)
∙
C
(
2
)
{\displaystyle C\sim {\mathcal {C}}^{(1)}\bullet {\mathcal {C}}^{(2)}}
一方で、
F
(
C
(
1
)
x
∗
C
(
2
)
y
)
=
F
C
(
1
)
x
∘
F
C
(
2
)
y
=
(
F
C
(
1
)
∙
F
C
(
2
)
)
(
x
⊗
y
)
{\displaystyle {\mathcal {F}}(C^{(1)}x\ast C^{(2)}y)={\mathcal {F}}C^{(1)}x\circ {\mathcal {F}}C^{(2)}y=({\mathcal {F}}C^{(1)}\bullet {\mathcal {F}}C^{(2)})(x\otimes y)}
。
一般行列への応用
元のテンソル スケッチ アルゴリズムの問題は、 必ずしも次元削減が適切ではない
カウント スケッチマトリックスを使用していたことです。
2020年 [15] には、十分にランダムな独立行を持つ任意の行列であれば、テンソルスケッチを作成するのに十分であることが示されました。これにより、実ガウスジョンソン リンデンシュトラウス 行列などのより強力な保証を持つ行列を使用できるようになります。
特に、次の定理が得られる。
および となる iid 行を持つ 行列を考えます 。 が および からなる独立した行列であるとします 。
T
{\displaystyle T}
T
1
,
…
,
T
m
∈
R
d
{\displaystyle T_{1},\dots ,T_{m}\in \mathbb {R} ^{d}}
E
[
(
T
1
x
)
2
]
=
‖
x
‖
2
2
{\displaystyle E[(T_{1}x)^{2}]=\|x\|_{2}^{2}}
E
[
(
T
1
x
)
p
]
1
/
p
≤
a
p
‖
x
‖
2
{\displaystyle E[(T_{1}x)^{p}]^{1/p}\leq {\sqrt {ap}}\|x\|_{2}}
T
(
1
)
,
…
,
T
(
c
)
{\displaystyle T^{(1)},\dots ,T^{(c)}}
T
{\displaystyle T}
M
=
T
(
1
)
∙
⋯
∙
T
(
c
)
{\displaystyle M=T^{(1)}\bullet \dots \bullet T^{(c)}}
すると、任意 の ベクトルに対して 確率的に
|
‖
M
x
‖
2
−
‖
x
‖
2
|
<
ε
‖
x
‖
2
{\displaystyle |\|Mx\|_{2}-\|x\|_{2}|<\varepsilon \|x\|_{2}}
1
−
δ
{\displaystyle 1-\delta }
x
{\displaystyle x}
m
=
(
4
a
)
2
c
ε
−
2
log
1
/
δ
+
(
2
a
e
)
ε
−
1
(
log
1
/
δ
)
c
{\displaystyle m=(4a)^{2c}\varepsilon ^{-2}\log 1/\delta +(2ae)\varepsilon ^{-1}(\log 1/\delta )^{c}}
。
特に、 の要素が である場合、 が小さい ときの 通常の ジョンソン・リンデンシュトラウス の定理と一致する が得られます 。
T
{\displaystyle T}
±
1
{\displaystyle \pm 1}
m
=
O
(
ε
−
2
log
1
/
δ
+
ε
−
1
(
1
c
log
1
/
δ
)
c
)
{\displaystyle m=O(\varepsilon ^{-2}\log 1/\delta +\varepsilon ^{-1}({\tfrac {1}{c}}\log 1/\delta )^{c})}
m
=
O
(
ε
−
2
log
1
/
δ
)
{\displaystyle m=O(\varepsilon ^{-2}\log 1/\delta )}
ε
{\displaystyle \varepsilon }
論文 [15]では、 ガウス 分布を持つテンソルランダム化射影を用いた構成には 依存性が必要であることも示されている 。
ε
−
1
(
1
c
log
1
/
δ
)
c
{\displaystyle \varepsilon ^{-1}({\tfrac {1}{c}}\log 1/\delta )^{c}}
バリエーション
再帰的構築
面分割積 に基づくテンソルスケッチにおける 指数関数的な依存性のため、2020年に [15] で異なるアプローチが開発され 、
c
{\displaystyle c}
M
(
x
⊗
y
⊗
⋯
)
=
M
(
1
)
(
x
⊗
(
M
(
2
)
y
⊗
⋯
)
)
{\displaystyle M(x\otimes y\otimes \cdots )=M^{(1)}(x\otimes (M^{(2)}y\otimes \cdots ))}
このようなこと は、
M
{\displaystyle M}
M
=
M
(
c
)
(
M
(
c
−
1
)
⊗
I
d
)
(
M
(
c
−
2
)
⊗
I
d
2
)
⋯
(
M
(
1
)
⊗
I
d
c
−
1
)
{\displaystyle M=M^{(c)}(M^{(c-1)}\otimes I_{d})(M^{(c-2)}\otimes I_{d^{2}})\cdots (M^{(1)}\otimes I_{d^{c-1}})}
。
この方法では、一般的なテンソル スケッチ メソッドを 2 つのテンソルの順序にのみ適用し、行数の指数依存性を回避します。
[15] このように次元削減 を組み合わせると、 係数だけ増加するということ が証明されています 。
c
{\displaystyle c}
ε
{\displaystyle \varepsilon }
c
{\displaystyle {\sqrt {c}}}
高速構築
高速 ジョンソン・リンデンシュトラウス変換は 次元削減行列である
行列が与えられた場合 、行列ベクトル積の計算には時間 がかかります 。 高速ジョンソンリンデンシュトラウス変換 (FJLT) [16] は、 2006年に
Ailonと Chazelleによって導入されました。
M
∈
R
k
×
d
{\displaystyle M\in \mathbb {R} ^{k\times d}}
M
x
{\displaystyle Mx}
k
d
{\displaystyle kd}
この方法のバージョンでは
、
M
=
SHD
{\displaystyle M=\operatorname {SHD} }
D
{\displaystyle D}
各対角要素 が独立している 対角行列 です 。
D
i
,
i
{\displaystyle D_{i,i}}
±
1
{\displaystyle \pm 1}
行列とベクトルの乗算は時間 内に計算できます 。
D
x
{\displaystyle Dx}
O
(
d
)
{\displaystyle O(d)}
H
{\displaystyle H}
はアダマール行列 であり 、行列とベクトルの乗算を100分で行うことができる。
O
(
d
log
d
)
{\displaystyle O(d\log d)}
S
{\displaystyle S}
各行に 1 つだけ 1 がある以外はすべてゼロのサンプリング マトリックス です。
k
×
d
{\displaystyle k\times d}
対角行列を、完全に独立しているのではなく、対角線上の値 のテンソル積を持つ行列に置き換えると、 高速に計算できるようになります。
±
1
{\displaystyle \pm 1}
SHD
(
x
⊗
y
)
{\displaystyle \operatorname {SHD} (x\otimes y)}
この例として、 が 2 つの独立した ベクトルで、 が対角線上に ある対角行列であるとします 。次のように分割できます 。
ρ
,
σ
∈
{
−
1
,
1
}
2
{\displaystyle \rho ,\sigma \in \{-1,1\}^{2}}
±
1
{\displaystyle \pm 1}
D
{\displaystyle D}
ρ
⊗
σ
{\displaystyle \rho \otimes \sigma }
SHD
(
x
⊗
y
)
{\displaystyle \operatorname {SHD} (x\otimes y)}
SHD
(
x
⊗
y
)
=
[
1
0
0
0
0
0
1
0
0
1
0
0
]
[
1
1
1
1
1
−
1
1
−
1
1
1
−
1
−
1
1
−
1
−
1
1
]
[
σ
1
ρ
1
0
0
0
0
σ
1
ρ
2
0
0
0
0
σ
2
ρ
1
0
0
0
0
σ
2
ρ
2
]
[
x
1
y
1
x
2
y
1
x
1
y
2
x
2
y
2
]
=
(
[
1
0
0
1
1
0
]
∙
[
1
0
1
0
0
1
]
)
(
[
1
1
1
−
1
]
⊗
[
1
1
1
−
1
]
)
(
[
σ
1
0
0
σ
2
]
⊗
[
ρ
1
0
0
ρ
2
]
)
(
[
x
1
x
2
]
⊗
[
y
1
y
2
]
)
=
(
[
1
0
0
1
1
0
]
∙
[
1
0
1
0
0
1
]
)
(
[
1
1
1
−
1
]
[
σ
1
0
0
σ
2
]
[
x
1
x
2
]
⊗
[
1
1
1
−
1
]
[
ρ
1
0
0
ρ
2
]
[
y
1
y
2
]
)
=
[
1
0
0
1
1
0
]
[
1
1
1
−
1
]
[
σ
1
0
0
σ
2
]
[
x
1
x
2
]
∘
[
1
0
1
0
0
1
]
[
1
1
1
−
1
]
[
ρ
1
0
0
ρ
2
]
[
y
1
y
2
]
.
{\displaystyle {\begin{aligned}&\operatorname {SHD} (x\otimes y)\\&\quad ={\begin{bmatrix}1&0&0&0\\0&0&1&0\\0&1&0&0\end{bmatrix}}{\begin{bmatrix}1&1&1&1\\1&-1&1&-1\\1&1&-1&-1\\1&-1&-1&1\end{bmatrix}}{\begin{bmatrix}\sigma _{1}\rho _{1}&0&0&0\\0&\sigma _{1}\rho _{2}&0&0\\0&0&\sigma _{2}\rho _{1}&0\\0&0&0&\sigma _{2}\rho _{2}\\\end{bmatrix}}{\begin{bmatrix}x_{1}y_{1}\\x_{2}y_{1}\\x_{1}y_{2}\\x_{2}y_{2}\end{bmatrix}}\\[5pt]&\quad =\left({\begin{bmatrix}1&0\\0&1\\1&0\end{bmatrix}}\bullet {\begin{bmatrix}1&0\\1&0\\0&1\end{bmatrix}}\right)\left({\begin{bmatrix}1&1\\1&-1\end{bmatrix}}\otimes {\begin{bmatrix}1&1\\1&-1\end{bmatrix}}\right)\left({\begin{bmatrix}\sigma _{1}&0\\0&\sigma _{2}\\\end{bmatrix}}\otimes {\begin{bmatrix}\rho _{1}&0\\0&\rho _{2}\\\end{bmatrix}}\right)\left({\begin{bmatrix}x_{1}\\x_{2}\end{bmatrix}}\otimes {\begin{bmatrix}y_{1}\\y_{2}\end{bmatrix}}\right)\\[5pt]&\quad =\left({\begin{bmatrix}1&0\\0&1\\1&0\end{bmatrix}}\bullet {\begin{bmatrix}1&0\\1&0\\0&1\end{bmatrix}}\right)\left({\begin{bmatrix}1&1\\1&-1\end{bmatrix}}{\begin{bmatrix}\sigma _{1}&0\\0&\sigma _{2}\\\end{bmatrix}}{\begin{bmatrix}x_{1}\\x_{2}\end{bmatrix}}\,\otimes \,{\begin{bmatrix}1&1\\1&-1\end{bmatrix}}{\begin{bmatrix}\rho _{1}&0\\0&\rho _{2}\\\end{bmatrix}}{\begin{bmatrix}y_{1}\\y_{2}\end{bmatrix}}\right)\\[5pt]&\quad ={\begin{bmatrix}1&0\\0&1\\1&0\end{bmatrix}}{\begin{bmatrix}1&1\\1&-1\end{bmatrix}}{\begin{bmatrix}\sigma _{1}&0\\0&\sigma _{2}\\\end{bmatrix}}{\begin{bmatrix}x_{1}\\x_{2}\end{bmatrix}}\,\circ \,{\begin{bmatrix}1&0\\1&0\\0&1\end{bmatrix}}{\begin{bmatrix}1&1\\1&-1\end{bmatrix}}{\begin{bmatrix}\rho _{1}&0\\0&\rho _{2}\\\end{bmatrix}}{\begin{bmatrix}y_{1}\\y_{2}\end{bmatrix}}.\end{aligned}}}
言い換えると、 は 2 つの高速ジョンソン・リンデンシュトラウス変換に分割され、全体の削減には 直接的なアプローチの場合
よりも時間がかかります。
SHD
=
S
(
1
)
H
D
(
1
)
∙
S
(
2
)
H
D
(
2
)
{\displaystyle \operatorname {SHD} =S^{(1)}HD^{(1)}\bullet S^{(2)}HD^{(2)}}
O
(
d
1
log
d
1
+
d
2
log
d
2
)
{\displaystyle O(d_{1}\log d_{1}+d_{2}\log d_{2})}
d
1
d
2
log
(
d
1
d
2
)
{\displaystyle d_{1}d_{2}\log(d_{1}d_{2})}
同じアプローチを拡張して、次のような高次の積を計算することもできる。
SHD
(
x
⊗
y
⊗
z
)
{\displaystyle \operatorname {SHD} (x\otimes y\otimes z)}
Ahleら [15]は 、 が行を持つ場合 、任意 のベクトルに対して の確率で となり、次数テンソルとの高速な乗算が可能になること を示しています 。
SHD
{\displaystyle \operatorname {SHD} }
ε
−
2
(
log
1
/
δ
)
c
+
1
{\displaystyle \varepsilon ^{-2}(\log 1/\delta )^{c+1}}
|
‖
SHD
x
‖
2
−
‖
x
‖
|
≤
ε
‖
x
‖
2
{\displaystyle |\|\operatorname {SHD} x\|_{2}-\|x\||\leq \varepsilon \|x\|_{2}}
x
∈
R
d
c
{\displaystyle x\in \mathbb {R} ^{d^{c}}}
1
−
δ
{\displaystyle 1-\delta }
c
{\displaystyle c}
同年、 Jinら [17]は、サブサンプルされたアダマール行列を含む RIP と呼ばれるより一般的な行列のクラスに対して同様の結果を示した。彼らは、行数が であればこれらの行列をテンソルに分割できることを示した 。 の場合、 これは以前の結果と一致します。
ε
−
2
(
log
1
/
δ
)
2
c
−
1
log
d
{\displaystyle \varepsilon ^{-2}(\log 1/\delta )^{2c-1}\log d}
c
=
2
{\displaystyle c=2}
これらの高速な構築は、前述の再帰アプローチと組み合わせることができ、全体的に最も高速なテンソル スケッチが得られます。
データを意識しながらスケッチする
いわゆる「データ認識型」テンソルスケッチを行うことも可能である。データにランダム行列を掛ける代わりに、データポイントはポイントのノルムに応じて一定の確率で独立してサンプリングされる。 [18]
アプリケーション
明示的な多項式カーネル
カーネル法は、データ ポイントの類似性を測定するための「特徴空間」を設計する自由をアルゴリズムに与えるため、 機械学習 で人気があります 。単純なカーネル ベースのバイナリ分類器は、次の計算に基づいています。
y
^
(
x
′
)
=
sgn
∑
i
=
1
n
y
i
k
(
x
i
,
x
′
)
,
{\displaystyle {\hat {y}}(\mathbf {x'} )=\operatorname {sgn} \sum _{i=1}^{n}y_{i}k(\mathbf {x} _{i},\mathbf {x'} ),}
ここで、 はデータ点、 は 番目の点のラベル (−1 または +1)、 は のクラスの予測です 。 関数 はカーネルです。 典型的な例としては、 ラジアル基底関数カーネル 、、 および などの 多項式カーネル があります。
x
i
∈
R
d
{\displaystyle \mathbf {x} _{i}\in \mathbb {R} ^{d}}
y
i
{\displaystyle y_{i}}
i
{\displaystyle i}
y
^
(
x
′
)
{\displaystyle {\hat {y}}(\mathbf {x'} )}
x
′
{\displaystyle \mathbf {x'} }
k
:
R
d
×
R
d
→
R
{\displaystyle k:\mathbb {R} ^{d}\times \mathbb {R} ^{d}\to \mathbb {R} }
k
(
x
,
x
′
)
=
exp
(
−
‖
x
−
x
′
‖
2
2
)
{\displaystyle k(x,x')=\exp(-\|x-x'\|_{2}^{2})}
k
(
x
,
x
′
)
=
(
1
+
⟨
x
,
x
′
⟩
)
2
{\displaystyle k(x,x')=(1+\langle x,x'\rangle )^{2}}
このように使用されるカーネル法は「暗黙的」と呼ばれます。 となる関数のペアを見つける「明示的」カーネル法を実行する方が速い場合もあります 。これにより、上記の計算は次のように表すことができます。
f
,
g
:
R
d
→
R
D
{\displaystyle f,g:\mathbb {R} ^{d}\to \mathbb {R} ^{D}}
k
(
x
,
x
′
)
=
⟨
f
(
x
)
,
g
(
x
′
)
⟩
{\displaystyle k(x,x')=\langle f(x),g(x')\rangle }
y
^
(
x
′
)
=
sgn
∑
i
=
1
n
y
i
⟨
f
(
x
i
)
,
g
(
x
′
)
⟩
=
sgn
⟨
(
∑
i
=
1
n
y
i
f
(
x
i
)
)
,
g
(
x
′
)
⟩
,
{\displaystyle {\hat {y}}(\mathbf {x'} )=\operatorname {sgn} \sum _{i=1}^{n}y_{i}\langle f(\mathbf {x} _{i}),g(\mathbf {x'} )\rangle =\operatorname {sgn} \left\langle \left(\sum _{i=1}^{n}y_{i}f(\mathbf {x} _{i})\right),g(\mathbf {x'} )\right\rangle ,}
ここで、値は 事前に計算できます。
∑
i
=
1
n
y
i
f
(
x
i
)
{\displaystyle \sum _{i=1}^{n}y_{i}f(\mathbf {x} _{i})}
この方法の問題点は、特徴空間が非常に大きくなる可能性があることです。つまり、 です 。たとえば、多項式カーネルの場合 、 および が得られます。 ここで、は テンソル積 であり 、です。 がすでに大きい 場合、 はデータ ポイントの数 ( ) よりもはるかに大きくなる可能性があるため、明示的な方法は非効率的です。
D
>>
d
{\displaystyle D>>d}
k
(
x
,
x
′
)
=
⟨
x
,
x
′
⟩
3
{\displaystyle k(x,x')=\langle x,x'\rangle ^{3}}
f
(
x
)
=
x
⊗
x
⊗
x
{\displaystyle f(x)=x\otimes x\otimes x}
g
(
x
′
)
=
x
′
⊗
x
′
⊗
x
′
{\displaystyle g(x')=x'\otimes x'\otimes x'}
⊗
{\displaystyle \otimes }
f
(
x
)
,
g
(
x
′
)
∈
R
D
{\displaystyle f(x),g(x')\in \mathbb {R} ^{D}}
D
=
d
3
{\displaystyle D=d^{3}}
d
{\displaystyle d}
D
{\displaystyle D}
n
{\displaystyle n}
テンソル スケッチの考え方は、 が よりも 小さくて も という 性質が依然として維持される近似関数を計算できるというものです 。
f
′
,
g
′
:
R
d
→
R
t
{\displaystyle f',g':\mathbb {R} ^{d}\to \mathbb {R} ^{t}}
t
{\displaystyle t}
d
{\displaystyle d}
⟨
f
′
(
x
)
,
g
′
(
x
′
)
⟩
≈
k
(
x
,
x
′
)
{\displaystyle \langle f'(x),g'(x')\rangle \approx k(x,x')}
この方法は2020年に [15] 高次多項式やラジアル基底関数カーネルでも機能することが示されました。
圧縮行列乗算
行列 として表される 2 つの大きなデータセットがあり、 内積が最大となる 行を見つけたいとします 。 を計算して 、すべての可能性を調べるだけで済みます 。ただし、これには少なくとも 時間がかかり、おそらく 標準的な行列乗算手法を使用するのに近いものになります。
X
,
Y
∈
R
n
×
d
{\displaystyle X,Y\in \mathbb {R} ^{n\times d}}
i
,
j
{\displaystyle i,j}
⟨
X
i
,
Y
j
⟩
{\displaystyle \langle X_{i},Y_{j}\rangle }
Z
=
X
Y
T
∈
R
n
×
n
{\displaystyle Z=XY^{T}\in \mathbb {R} ^{n\times n}}
n
2
{\displaystyle n^{2}}
n
2
{\displaystyle n^{2}}
n
2
d
{\displaystyle n^{2}d}
圧縮行列乗算の考え方は、一般的な同一性である
X
Y
T
=
∑
i
=
1
d
X
i
⊗
Y
i
{\displaystyle XY^{T}=\sum _{i=1}^{d}X_{i}\otimes Y_{i}}
ここで、 は テンソル積 です。 の ( 線形 ) 近似を効率的に 計算できるため 、それらを合計して完全な積の近似値を得ることができます。
⊗
{\displaystyle \otimes }
X
i
⊗
Y
i
{\displaystyle X_{i}\otimes Y_{i}}
コンパクトな多重線形プーリング
テンソル スケッチを使用すると、ニューラル ネットワーク で双線形プーリングを実装するときに必要な変数の数を減らすことができます 。
双線形プーリングは、異なるソースから 2 つの入力ベクトルを取得し、テンソル積を ニューラル ネットワークへの入力層として
使用する 手法です。
x
,
y
{\displaystyle x,y}
x
⊗
y
{\displaystyle x\otimes y}
[19] では、 著者らは必要な変数の数を減らすためにテンソルスケッチの使用を検討した。
2017年の別の論文 [20] では、要素ごとの積を使用して結合される前に、入力特徴のFFTが取られています。これも元のテンソルスケッチに対応しています。
参考文献
^ 「 Tensor Sketch を使用した大規模テンソルの低ランク Tucker 分解」 (PDF) 。amath.colorado.edu 。コロラド州ボルダー: コロラド大学ボルダー校 。
^ Ahle, Thomas; Knudsen, Jakob (2019-09-03). 「Almost Optimal Tensor Sketch」. ResearchGate . 2020-07-11 閲覧 。
^ ab Woodruff, David P. 「数値線形代数のためのツールとしてのスケッチ Archived 2022-10-22 at the Wayback Machine 。」 理論計算機科学 10.1-2 (2014): 1–157。
^ ab Ninh, Pham; Pagh, Rasmus ( 2013). 明示的な特徴マップによる高速でスケーラブルな多項式カーネル 。知識発見とデータマイニングに関する SIGKDD 国際会議。Association for Computing Machinery。doi :10.1145/2487575.2487591。
^ Pagh, Rasmus (2013). 「圧縮行列乗算」. ACM Transactions on Computation Theory . 5 (3). Association for Computing Machinery: 1–17. arXiv : 1108.1320 . doi :10.1145/2493252.2493254. S2CID 47560654.
^ Kasiviswanathan、Shiva Prasad、他「The price of privatelyleasing contingency tables and the spectrum of random matrices with correlated rows Archived 2022-10-22 at the Wayback Machine .」第42回ACMコンピューティング理論シンポジウム議事録。2010年。
^ Rudelson, Mark、Shuheng Zhou。「異方性ランダム測定からの再構築( Wayback Machine で2022年10月17日にアーカイブ) 」学習理論に関する会議。2012年。
^ Avron, Haim; Nguyen, Huy; Woodruff, David (2014). 「多項式カーネルのサブスペース埋め込み」 (PDF) . ニューラル情報処理システムの進歩 . S2CID 16658740.
^ Anna Esteve、Eva Boj、Josep Fortiana (2009): 距離ベース回帰における相互作用項、統計におけるコミュニケーション - 理論と方法、38:19、p. 3501 [1] 2021-04-26に Wayback Machineでアーカイブ
^ ab Slyusar, VI (1998). 「レーダーアプリケーションにおけるマトリックスの最終製品」 (PDF) . 無線エレクトロニクスおよび通信システム . 41 (3): 50–53.
^ ab Slyusar, VI (1997-05-20). 「面分割行列積に基づくデジタルアンテナアレイの解析モデル」 (PDF) . Proc. ICATT-97, キエフ : 108–109.
^ ab Slyusar, VI (1997-09-15). 「レーダーへの応用のための行列積の新しい演算」 (PDF) . Proc. Direct and Inverse Problems of Electromagnetic and Acoustic Wave Theory (DIPED-97)、リヴィウ : 73–74。
^ ab Slyusar, VI (1998 年 3 月 13 日). 「行列の面積のファミリーとその特性」 (PDF) . サイバネティクスとシステム分析 C/C of Kibernetika I Sistemnyi Analiz. – 1999 . 35 (3): 379–384. doi :10.1007/BF02733426. S2CID 119661450.
^ Slyusar, VI (2003). 「非同一チャネルを持つデジタルアンテナアレイのモデルにおける行列の一般化面積」 (PDF) . 無線エレクトロニクスおよび通信システム . 46 (10): 9–17.
^ abcdef Ahle, Thomas; Kapralov, Michael; Knudsen, Jakob; Pagh, Rasmus ; Velingker, Ameya; Woodruff, David; Zandieh, Amir (2020). 高次 多項式カーネルの無意識スケッチ 。ACM-SIAM 離散アルゴリズムシンポジウム。Association for Computing Machinery。arXiv : 1909.01410 . doi : 10.1137/1.9781611975994.9 。
^ Ailon, Nir; Chazelle, Bernard (2006). 「近似最近傍法と高速ジョンソン・リンデンシュトラウス変換」。 第 38回ACMコンピューティング理論シンポジウム議事録 。ニューヨーク:ACMプレス。pp. 557–563。doi : 10.1145 /1132516.1132597。ISBN 1-59593-134-1 . MR 2277181. S2CID 490517.
^ Jin, Ruhui, Tamara G. Kolda、および Rachel Ward。「Kronecker 積によるジョンソン–リンデンシュトラウス変換の高速化」arXiv プレプリント arXiv:1909.04801 (2019)。
^ Wang, Yining; Tung, Hsiao-Yu; Smola, Alexander; Anandkumar, Anima. スケッチによる高速かつ保証されたテンソル分解 。ニューラル情報処理システムの進歩 28 (NIPS 2015) 。arXiv : 1506.04448 。
^ Gao, Yang, et al. 「Compact bilinear pooling Archived 2022-01-20 at the Wayback Machine . IEEE conference on computer vision and pattern recognizeの議事録。2016年。
^ Algashaam, Faisal M., et al. 「マルチモーダルコンパクトマルチリニアプーリングによるマルチスペクトル眼周囲分類」IEEE Access 5 (2017): 14572–14578。
さらに読む
Ahle, Thomas; Knudsen, Jakob (2019-09-03). 「Almost Optimal Tensor Sketch」. ResearchGate . 2020-07-11 に閲覧。
Slyusar, VI (1998). 「レーダーアプリケーションにおけるマトリックスの最終製品」 (PDF) . 無線エレクトロニクスと通信システム . 41 (3): 50–53.
Slyusar, VI (1997-05-20). 「面分割行列積に基づくデジタルアンテナアレイの解析モデル」 (PDF) . Proc. ICATT-97, キエフ : 108–109.
Slyusar, VI (1997-09-15). 「レーダーへの応用のための行列積の新しい演算」 (PDF) . Proc. Direct and Inverse Problems of Electromagnetic and Acoustic Wave Theory (DIPED-97)、リヴィウ : 73–74。
Slyusar, VI (1998 年 3 月 13 日)。「行列の面積のファミリーとその特性」 (PDF) 。 サイバネティクスとシステム分析 C/C of Kibernetika I Sistemnyi Analiz.- 1999。35 ( 3 ) : 379–384。doi :10.1007/BF02733426。S2CID 119661450 。