「TurboQuant」の版間の差分

 
23行目: 23行目:
PolarQuant は、入力ベクトルをランダム直交行列で回転し、統計的に均質な分布に変換した後、固定スカラーコードブックにマッピングする。
PolarQuant は、入力ベクトルをランダム直交行列で回転し、統計的に均質な分布に変換した後、固定スカラーコードブックにマッピングする。


==== 手順 ====
; ランダム回転   
* ランダム回転   
高次元空間でランダム直交行列 R を生成し、 x' = R x を計算する。   
  高次元空間でランダム直交行列 R を生成し、 x' = R x を計算する。   
これにより、各次元の分布が等方的になり、量子化誤差が均一化される。
  これにより、各次元の分布が等方的になり、量子化誤差が均一化される。


* 固定グリッドへのマッピング   
; 固定グリッドへのマッピング   
  回転後のベクトル x' は、事前計算された円形または球面状のコードブックに直接量子化される。   
回転後のベクトル x' は、事前計算された円形または球面状のコードブックに直接量子化される。   
  従来の量子化のような per-channel scale を保存する必要がない。
従来の量子化のような per-channel scale を保存する必要がない。


==== メリット ====
==== メリット ====
40行目: 39行目:
PolarQuant の量子化誤差(残差)を補正するために、QJL による 1-bit ランダム射影を追加する。
PolarQuant の量子化誤差(残差)を補正するために、QJL による 1-bit ランダム射影を追加する。


==== 手順 ====
; ランダム射影   
* ランダム射影   
Johnson–Lindenstrauss 行列 A を用いて r = A x を計算する。
  Johnson–Lindenstrauss 行列 A を用いて r = A x を計算する。


* 1-bit 符号化   
; 1-bit 符号化   
  r の符号 sign(r) のみを保存する。   
r の符号 sign(r) のみを保存する。   
  これにより、元のベクトルとの差分の方向情報を 1 bit で保持できる。
これにより、元のベクトルとの差分の方向情報を 1 bit で保持できる。


* 不偏推定   
; 不偏推定   
  内積推定において、PolarQuant のバイアスを QJL の符号情報で補正することで、不偏な推定値が得られる。
内積推定において、PolarQuant のバイアスを QJL の符号情報で補正することで、不偏な推定値が得られる。


====メリット ====
==== メリット ====
* 3-bit 量子化でも高精度   
* 3-bit 量子化でも高精度   
* 内積推定のバイアスが消失   
* 内積推定のバイアスが消失