行列の次元削減によるデータ圧縮と復元

行列の次元削減によるデータ圧縮と復元

Academic

背景 (Background)

私たちが日々スマートフォンで撮影する高画質な写真や、インターネットでストリーミング再生する4K動画は、本来なら通信回線をパンクさせるほどの巨大なデータサイズを持っています。それでも瞬時に送信・再生できるのは、データの中に潜む「無駄な情報」や「人間の目には見えない違い」を賢く削ぎ落とし、重要な特徴だけを残す「データ圧縮」技術のおかげです。この圧縮の裏側で活躍しているのが、高校や大学で学ぶ「線形代数」の行列計算です。膨大なピクセルの集まりである画像を行列として捉え、数学的に次元を削減(低ランク近似)することで、データ量は劇的に小さくなります。本研究では、手書き数字の画像を題材に、この魔法のような圧縮・復元技術を線形代数の力で実際に構築・検証します。

序論 (Introduction)

現在,ネット上では画像・動画・音声・文書など様々なデータが大量に流通している.これらのデータは一般に極めて大容量なファイルとなるから,送受信や視聴に際してはデータの圧縮・復元処理が不可欠である.本研究では,機械学習技術を通じて,手書き文字画像データの圧縮・復元および生成を実現し,データ圧縮・復元・生成処理の基礎を習得することを目的とする.

実験の要旨:

  • 線形の行列計算を用いて手書き数字画像の圧縮・復元とその性能評価を行う.
  • 線形技術と非線形技術の組み合わせによる文字画像の圧縮・復元とその性能評価し,また,圧縮・復元器を利用して内挿の新規文字画像の復元を行う.

コア理論 (Core Theory)

本研究では,手書き文字画像の圧縮と復元を行うために,線形および非線形の行列演算を利用する.そのため,まず画像データの平坦化を行う.

画像の平坦化

平坦化とは,画像の二次元データ(縦と横のピクセルの配列)を一次元ベクトルに変換する操作である.この操作により,画像データを行列演算に適した形に整えることができる.例えば,解像度が ( W \times H ) のグレースケール画像を平坦化すると,( n = W \times H ) 次元のベクトルに変換される.

  1. 画像を読み込む(ここでは( 28 \times 28 ) ピクセルの手書き文字画像).
  2. 各ピクセルの濃度値(通常 0 ~ 255 の範囲)を一列に並べ,( n ) 次元のベクトルに変換する.
  3. コンピュータ計算を安定させるために,データの正規化(例えば,0~1 の範囲にスケーリング)を行い,色の濃度値の範囲を0 ~ 1に調節する.

この手順により,各画像が計算に適したベクトル形式になり,行列 ( A ) による圧縮操作 ( z = A x ) や,復元操作 ( \hat{x} = B z ) などの計算に適用する.

行列によるデータ圧縮と復元

データ圧縮とは,画像データを行列計算により低次元表現に変換し,その低次元表現から元のデータに近似することを目指している.ここでは,学習データを (N) 個,各データ (x^{(i)}) を (n) 次元ベクトルとし,これに対して圧縮行列 (A)((k \times n) 行列)および復元行列 (B)((n \times k) 行列)を定義する.

まず,圧縮処理は次の式で表される.

ここで,(z^{(i)}) は圧縮された (k) 次元のデータ表現である.

また,データの復元は以下の式で行う.

ここで,(\hat{x}^{(i)}) は復元されたデータで,元のデータ (x^{(i)}) に近似する様子が欲しい.そのため,ある方法で圧縮行列と復元行列を調節しなければならない.

導出と最適化 (Derivations)

勾配降下法による行列の最適化

行列 (A) および (B) を最適化する目的は圧縮および復元が正確に行われるため,元のデータ (x) と復元データ (y) の間の誤差を最小にする必要がある.MSE は以下のように定義される.

ここで,( y^{(i)} = B A x^{(i)} ) であり,MSEは復元結果と元のデータとの距離を測るものである.MSEが小さいほど,復元データは元のデータに近くなり,圧縮・復元が成功していると言える.そのため,MSE を最小化するために,勾配降下法を用いる.

勾配降下法は,MSE の勾配を求め,その勾配の負の方向に (A) および (B) を更新していく手法である.これにより,MSE が少しずつ減少し,最小点に近づくことが期待されている. まず,行列 ( A ) および ( B ) の初期値 ( A_0 ), ( B_0 ) を[-1 〜 1]でランダムに決め,学習率 ( \gamma ) と圧縮ベクトルの次元数 ( k ) を設定する上で,以下の手順で勾配降下法の行列 ( A ) および ( B )のMSE最小化を適用する.

  1. データからランダムにバッチサイズ ( S ) 個のデータ ( x^{(i_1)}, x^{(i_2)}, \dots, x^{(i_S)} ) を選択し,行列 ( X ) に配置する.この ( X ) は ( n \times S ) 行列となる.
  1. 圧縮行列 ( A_m ) を用いて中間表現 ( Z ) を計算する.
  1. 復元行列 ( B_m ) を用いて,復元データ ( Y ) を計算する.
  1. 誤差行列 ( \varepsilon_B ) および ( \varepsilon_A ) を以下のように定義する.
  1. 勾配を用いて,更新量 ( \Delta A_m ) および ( \Delta B_m ) を計算する.
  1. 行列 ( A ) および ( B ) を次のように更新する.

非線形演算を用いた圧縮と復元

非線形演算を用いた圧縮と復元では,線形変換に加えて非線形関数であるシグモイド関数やtanhを利用することで,圧縮と復元もできる.使用する非線形関数は以下の通り:

  • シグモイド関数(sigmoid):
  • 双曲線正接関数(tanh):

ここで,もしまた最急降下法を使えば膨大な計算が必要であり,収束時間を小さくするために,勾配降下法の代わりに確率的勾配降下法(SGD)を使う.

非線形演算を用いた圧縮と復元の手順:

  1. 行列 ( A, B, C ) の初期値 ( A_0, B_0, C_0 ) を[-1 〜 1]でランダムに決める.
  2. 圧縮ベクトルの次元数 ( k ),学習率 ( \gamma ),およびモーメンタム係数 ( \omega ) を適当に定める.
  3. 繰り返し回数 ( m = 0 ) とする.
  4. 繰り返し処理を,( m ) が指定値 ( M ) に達するまで行う:
    1. 学習データからランダムに ( S ) 個のデータを抽出し,データ行列 ( X ) を構成する.
    2. 圧縮演算を行い,行列 ( Z, H, Y ) を次のように定義する:
    1. 誤差行列 ( \varepsilon_B, \varepsilon_C, \varepsilon_A ) を計算する:
    ここで,(\odot) は要素ごとの積を示すアダマール積である. 4. 行列 ( A_m, B_m, C_m ) の更新量を計算し,勾配降下法により以下の式で更新する: ここで,(\Delta A_m),(\Delta B_m),および (\Delta C_m) はモーメンタム項を含む以下の式で計算される:
  5. 繰り返し数 ( m ) を ( m + 1 ) に増加させ,上記の処理を続ける.

この方法により,非線形演算を用いた圧縮と復元が行われ,学習が進むにつれて元のデータに近い復元が期待されている.

複数データの補間・内挿

2枚の画像からその間を内挿するような画像を生成することができる.例えば,学習データ集合から適当な2枚の画像 ( x^{(i)} ), ( x^{(j)} ) の中を抜き出し,それらを Enc により圧縮する.続いて,適当な割合 ( \lambda (0 \leq \lambda \leq 1) ) で両者を足し合わせ,その結果を Dec に入力して新たな画像を得る.即ち,

ここで,データ圧縮処理を (\text{Enc}),データ復元処理を (\text{Dec}) と表記する:

であり,非線形演算を併用したデータ圧縮・復元であれば

として新たな画像を生成する.

実装と結果 (Implementation and Results)

線型の圧縮・復元の方法を用いて,学習データから圧縮行列 ( A ) および復元行列 ( B ) を求めるプログラムを作成した.また,求めた行列を用いてテストデータを圧縮・復元するプログラムも併せて作成し,その性能を評価・考察した.

次元kとMSEの関係

まず,圧縮表現の次元数k=32と設定し,繰り返す回数とMSEの変化傾向を考察する.圧縮・復元する前後の画質比較は以下の通りである.

15番目画像"7"圧縮・復元前後(k=32) 繰り返し回数に対するMSEの推移 (k=32)

初期段階(mが小さい時)にはmの増大につれてMSEが急に減少し,プログラムが早く収束していることが確認された.また,mの増加につれてMSEの減少傾向(変化率)が,緩やかになることが観察された.適切な機械学習回数の設定はMSEの最適化の重要な要素となる.今回の ( k = 32 ) の結果では,最終的なMSEが約9.8673に収束したことが確認した.

また,同じのように圧縮表現の次元数k=16と64に設定し,圧縮・復元前後の図を生成し,MSEの変化図を描く.

数字“7”の圧縮・復元前後比較(k=16) 数字“7”の圧縮・復元前後比較(k=64) 繰り返し回数に対するMSEの推移(k=16とk=64)

圧縮次元数 ( k(16/32/64) ) を増加させると,へ平均二乗誤差MSEが減少した傾向が明らかに観察された.これは,次元数が増えることで,圧縮表現に含まれるピクセル量が増加し,復元精度が向上するためである.しかし,次元数の増加の一方,計算量も大幅に増加し,コンピュータの処理時間が長くなってしまった.

学習データで計算した MSE とテストデータで計算した MSE の違い

test dataとtrain data比較(k=32)

学習データとテストデータを比較すれば,両方はともに初期段階では高いMSE値を示しているが,重複回数が増加するにつれて両者ともにMSEが低下していることがわかる.どの重複回数に対しても学習データとテストデータ間でのMSEの差が小さいがわかる.これはモデルが新しいデータに対しても優秀な性能を持つことを証明したと考えている.

学習率やバッチサイズが SGD の挙動に与える影響

異なる学習率に対してMSEの変化k=32,バッチサイズ=20

学習率(\gamma)の増加につれて,MSEの収束速度が早くなることがわかる.しかし,初期の減少速度は遅いが,全体を通じて結局全てのプログラムが安定した収束が確認された.学習率は,ある程度で振動している傾向が見られ,収束が不安定の場合もある.これは,学習関数の形状が複雑で,最適点を通り過ぎてしまうことがあると考えられる.

異なるバッチサイズに対してMSEの変化k=32,gamma=0.01

バッチサイズの増加にしても収束速度の改善はあまりに差がないと考えている.しかし,各バッチサイズに対応するMSEの推移で,S=40の振動幅が最も小さいことが確認できた.これはバッチサイズが大きくほど,各ミニバッチに含まれるデータ数が増加し,勾配の推定がより正確で安定になり,結果としてMSEの変動が抑制されることを示唆している.

非線形演算の導入と性能比較

非線形の方法を用いて拡張し,圧縮次元数k=32を設定する上,ランダムにデータを選択し,異なる方法を用いて復元のグラフとMSEの変化傾向を比較する.左から圧縮画像はそれぞれ元の画像,線形圧縮,非線形圧縮である.

異なる方法の圧縮・復元グラフ1(元の画像,線形圧縮,非線形圧縮) 異なる方法の圧縮・復元グラフ5(元の画像,線形圧縮,非線形圧縮) 異なる方法の圧縮・復元グラフ7(元の画像,線形圧縮,非線形圧縮)

異なる方法の数字"1"の圧縮・復元グラフのMSE変化 異なる方法の数字"5"の圧縮・復元グラフのMSE変化 異なる方法の数字"7"の圧縮・復元グラフのMSE変化

非線形の方法は復元画像の品質において,線形の方法より良い結果を示した.非線形の復元画像はより明晰で,特に線形方法でのモザイク感が多少減っていた.非線形の復元は元の画像と近い線の輪郭を再現しており,視覚的に高品質であることと考えている.数値的な観点を言えば,どのデータも非線形方式の平均二乗誤差MSEはより低い値に収束していることが確認された.

収束速度に関しては,非線形の方法は線形の方法と比較して遅い.初期段階において,線形のMSEはぎゅっと減少する傾向に対し,非線形の方がより緩やかことが見られる.この収束速度が遅い代わりに,収束後の精度が向上する特性を持っている.このため,精度が重要の場合には非線形の方法がより有効であり,計算時間が制約される場合には線形の方法がより適している.

非線形プログラムにおいて,同一条件下で異なる学習率gammaに対してMSEの変化(全体) 非線形プログラムにおいて,同一条件下で異なる学習率gammaに対してMSEの変化(細部)

学習率(\gamma)の値が増加するにつれて,MSEの収束速度が向上している傾向がある.しかし,最終的な収束値については,いずれの学習率においても差異があまり見えないことが分かる.学習率が大きい場合には振動が顕著である点も観察された.

圧縮・復元処理を活用したデータ生成(内挿)

複数データ間の内挿を用いて,二つの画像から新しい画像を生成するプログラムを作った.

上から:元の画像,非線型モードからの画像,線線形モードからの画像 上から:元の画像,非線型モードからの画像,線線形モードからの画像 上から:元の画像,非線型モードからの画像,線形モードからの画像

非線線形モードで生成された画像は,数字の輪郭がより明確に表現されている.この点から,非線線形モードは圧縮・復元の際に画像の細部をより精密に再現する能力が高いといえる.一方で,数字の判別性において課題がある.線線形モードで生成された画像は,全体的にモザイク感が強いが,元の数字の形状をちゃんと保持している.

k=16の生成された行列A,Bから生成内挿画像 k=128の生成された行列A,Bから生成内挿画像

圧縮次元数 k=16 と k=128 による生成画像の比較では,両者ともに大体「6」の形状を保持していることが確認できる.しかし,圧縮次元数 k=128 の画像の方が明らかに画質が優れており,細部にも正確に表現されている.

結論

本実験を通じて,機械学習を用いたデータ圧縮の有効性と限界を理解し,モデル選択やパラメータ調整が成果に与える影響について深く学ぶことができた.非線形モデルでは,復元精度の向上が確認できた一方で,計算コストや収束速度といった実用性の課題も見られた.データ生成においては,非線形モデルが高品質な生成結果を示す一方で,数字の判別性に課題があることも理解した.これらの結果から,圧縮・復元技術が高精度なデータ処理に適している一方,現実的な計算コストや制約条件を考慮したモデル設計の重要性を認識した.