ベクトル量子化
定義:
ベクトル量子化とは,入力ベクトル空間を有限個の領域に分割し,各領域を代表するベクトルであるコードブックベクトルを用いて,入力ベクトルを最も近いコードブックベクトルに置き換えることで量子化を行う操作のことである.
入力ベクトルを $e \in \mathbb{R}^d$ ,コードブックを $C = \{q_1, q_2, ..., q_K\} \subset \mathbb{R}^d$ ,$K$ はコードブックサイズ,とすると,ベクトル量子化 $Q(e)$ は以下のように定義される.\[Q(e) = \arg\min_{q \in C} |e - q|\]ここで,$| \cdot |$ はユークリッド距離を表す.つまり,入力ベクトル $e$ との距離が最小となるコードブックベクトル $q$ を選択する操作がベクトル量子化である.
この操作は,最近傍探索といわれ,微分不可能な操作である.なぜなら,入力ベクトル $e$ が少しでも変化すると,選択されるコードブックベクトルが急激に切り替わる可能性があり,微分可能な関数のように滑らかな変化を示さないからため.
微分不可能な関数は,勾配を計算することができない.そのため,勾配を用いた最適化アルゴリズム,例えば勾配降下法を直接適用することができない.そこで,ベクトル量子化を含むモデルの学習においては,直通推定器[STE;Straight-Through Estimator]や回転トリック[Rotation Trick]といった勾配推定手法が必要となる.
Mathematics is the language with which God has written the universe.