弊社では量子技術から派生し、多くの最新技術を活用しています。今回はリサーチチーム及びビジネスチームのDevanshu Gargから最新のテンソルネットワークを利用した、畳み込みニューラルネットワークのパラメータ削減と速度向上についての記事を紹介します。
Convolutional Neural Networks (CNN) は、複数の層を使用して画像を分析するために通常使用されます。CNNの高い性能と精度は、メモリと計算能力に対するその重い要求によってトレードオフされます。
大きなモデルでは、全結合層(Dense層とも呼ばれる)は、約1億のパラメータを訓練する必要があります。これにより、有用なCNNモデルを小さなデバイスに実装するのが難しくなります。今回、モデルの精度を維持しながらパラメータ数を削減するために、これらのパラメータにテンソル分解を使用しています。
手法:Dense Layerのテンソル化
CNNの計算をしたあと、データに最後のmax pooling操作を実行した後、出力は1つの配列にフラット化され、Dense Layerに供給されます。訓練可能な重みの数は、フラット化された入力の数とDense Layerのユニット数に依存します。 例として、フラット化された入力の数が1024、最初のDense層のニューロン数が1024であるとします。訓練可能な重みの総数は 1024 × 1024 = 1048576 です。これらの重みのほとんどは冗長です。私たちは、1024X1024の重み行列をテンソルネットワークで置き換えることで、訓練可能なパラメータを削減します。
手法:結合次元と量子
結合次元は、テンソル化された重み行列が元の重み行列に対してどれだけ忠実であるかを決定します。したがって、精度と訓練可能なパラメータのサイズの間にはトレードオフが存在します。結合次元を10としましょう。したがって、各コアのサイズは(32, 32, 10)です。訓練する重みの総数は、2 × (32 × 32 × 10) = 20480 に減少し、これはパラメータで約98%の削減になります。(湊補足:これらの結合次元は量子計算では量子もつれの量に対応しています。)
例題:Cifar10データセット
上記のアプローチを使用して、シンプルなでテンソル化されたCNN回路のDense層をCifar10データセットで訓練しました。
パラメータ削減前のパラメータ数
1297866
パラメータ削減後のパラメータ数
155386
結果:パラメータ削減と精度、速度
テンソル化モデルは、通常のCNNモデルに対して精度が6%低下しましたが、約88%のパラメータが圧縮されました。また、テンソル化モデルの各エポックが通常のモデルよりも速く、全体の訓練を通じて約20%の高速化が達成されることも観察されます。これは、大規模なニューラルネットワークでテンソルネットワークを使用することの強力さを示しており、訓練の時間と空間の複雑さの両方を削減します。
考察:すぐに商用化できる
多くのニューラルネットワークモデルでは多くのパラメータでの学習や推論を行いますが、体系的にそれらを軽量化、高速化する手法としてテンソルネットワークを利用しました。軽量化の手法は多々あります。量子計算をベースにする場合はMPSとよばれる行列積状態を元にすると多くのモデルを軽量化でき、さらにそれらを将来的に量子コンピュータへの応用も可能にします。
特にエッジコンピューティングなどで豊富な計算や電力が利用できない現場などで、なるべく精度を落とさず軽量化や高速化が可能なモデルを探索することは、現時点で商用化できるモデルを増やすことができますので、おすすめです。