Algorithm for reducing the dimension of tensors
統計学 、 機械学習 、 アルゴリズム において 、 テンソルスケッチは 次元削減 の一種であり、 テンソル 構造 を持つ ベクトル に適用すると特に効率的です。 [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年に Rasmus Pagh [5] が同年に 発表した手法を説明するために造語されました [4] 。当初は 、高速フーリエ変換を用いて カウントスケッチ の高速 畳み込みを 行う手法として理解されていました 。その後の研究により、テンソルランダム埋め込みを用いたより広範な次元削減手法へと一般化されました。
テンソルランダム埋め込みは、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を要素ごとの積を用いて結合する前に取得しています。これもまた、元のテンソルスケッチに対応しています。
参考文献
^ 「Low-rank Tucker decomposition of large tensors using: Tensor Sketch」 (PDF) . amath.colorado.edu . コロラド州ボルダー: コロラド大学ボルダー校 . 2019年2月14日時点 のオリジナル (PDF)からアーカイブ。 2020年7月11日 閲覧 。
^ Ahle, Thomas; Knudsen, Jakob (2019年9月3日). 「Almost Optimal Tensor Sketch」. ResearchGate . 2020年7月11日 閲覧。
^ ab Woodruff, David P.「数値線形代数のためのツールとしてのスケッチ」 Wayback Machine で2022年10月22日にアーカイブ。理論計算機科学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、他「分割表を非公開に公開することの代償と、相関行を持つランダム行列のスペクトル」(2022年10月22日アーカイブ、 Wayback Machine )第42回ACMコンピューティング理論シンポジウム議事録。2010年。
^ Rudelson, Mark, Shuheng Zhou. 「異方性ランダム測定からの再構成(2022年10月17日アーカイブ、 Wayback Machine にて)」学習理論会議、2012年。
^ Avron, Haim; Nguyen, Huy; Woodruff, David (2014). 「多項式カーネルの部分空間埋め込み」 (PDF) . Advances in Neural Information Processing Systems . S2CID 16658740.
^ Anna Esteve, Eva Boj & Josep Fortiana (2009): 距離ベース回帰における相互作用項、Communications in Statistics – Theory and Methods、38:19、p. 3501 [1] 2021年4月26日アーカイブ、Wayback Machine
^ ab Slyusar, VI (1998). 「レーダーアプリケーションにおけるマトリックスの最終製品」 (PDF) . 無線エレクトロニクスと通信システム . 41 (3): 50– 53.
^ ab Slyusar, VI (1997-05-20). 「面分割行列積に基づくデジタルアンテナアレイの解析モデル」 (PDF) . Proc. ICATT-97, Kyiv : 108–109 .
^ ab Slyusar, VI (1997-09-15). 「レーダー応用のための行列積の新しい演算」 (PDF) . Proc. Direct and Inverse Problems of Electromagnetic and Acoustic Wave Theory (DIPED-97), Lviv. : 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 Press. pp. 557– 563. doi :10.1145/1132516.1132597. ISBN 1-59593-134-1 . MR 2277181. S2CID 490517.
^ Jin, Ruhui, Tamara G. Kolda, Rachel Ward. 「クロネッカー積によるジョンソン・リンデンシュトラウス変換の高速化」arXivプレプリント arXiv:1909.04801 (2019).
^ Wang, Yining; Tung, Hsiao-Yu; Smola, Alexander; Anandkumar, Anima. スケッチによる高速かつ確実なテンソル分解 . ニューラル情報処理システムの進歩 28 (NIPS 2015). arXiv : 1506.04448 .
^ Gao, Yang, et al. 「コンパクト双線形プーリング(2022年1月20日アーカイブ、 Wayback Machine にて)」IEEEコンピュータービジョンおよびパターン認識会議議事録。2016年。
^ Algashaam, Faisal M., et al. 「マルチモーダルコンパクトマルチリニアプーリングによるマルチスペクトル眼周囲分類」IEEE Access 5 (2017): 14572–14578.
さらに読む
Ahle, Thomas; Knudsen, Jakob (2019-09-03). 「ほぼ最適なテンソルスケッチ」. ResearchGate . 2020年7月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) . 電磁波・音波理論の直接問題と逆問題 (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.