先端領域では従来別物として見ていた量子計算と機械学習技術を同列で扱うようなものも増えてきました。ここでは、テンソルを活用した自然言語モデルの実装についての論文をみます。今回は量子計算と使うモデルはだいぶ違いますが、Transformerの機械学習モデルの中でも、量子計算で利用するのと同じモデルを利用することもあります。そちらは追って紹介します。
A Tensorized Transformer for Language Modeling
Xindian Ma1 , Peng Zhang1∗ , Shuai Zhang1 , Nan Duan2 , Yuexian Hou1 , Dawei Song3 , Ming Zhou2
1College of Intelligence and Computing, Tianjin University, Tianjin, China
2Microsoft Research Asia, Beijing, China
3School of Computer Science and Technology, Beijing Institute of Technology, Beijing, China
{xindianma, pzhang, szhang96, yxhou}@tju.edu.cn
{nanduan, mingzhou}@microsoft.com
{dwsong}@bit.edu.cn
https://arxiv.org/pdf/1906.09777.pdf
マルチヘッドアテンションとテンソル分解
Transformerモデルの中核をなす技術としてマルチヘッドアテンションがある。今回はこのマルチヘッドアテンションのモデルをテンソル分解を通じてパラメータ圧縮をするのが目的である。
引用:https://arxiv.org/pdf/1906.09777.pdf
左がシングルブロックアテンションで、タッカー分解を利用してテンソルをコアテンソルと行列に分解している。このブロックを複数利用してマルチヘッドアテンションのモデルをテンソル分解するが、アテンションモデルでの関数は非線形で、
Attension = softmax(QK^T/√d)V
となっているので、非線形を線形モデルに書き換える必要がある。線型部分は上記のシングルブロックアテンションに利用されたタッカー分解と、上記右側のコアテンソルがあるように、CPランクhでCP分解も利用している。Tucker分解とCP分解を併用するテクニックは、Block-Term分解と名前がついていて、別のブログで簡単に紹介している。
Block-Term tensor decomposition (BTD)
https://blueqat.com/yuichiro_minato2/d298e71e-89cc-49dd-bdde-c417a5799633
BTDによって構築されたorder3のテンソルは、テンソルスライシングを通じて行列化され、最終的に重み行列Woをかけて出力される。
仕組みとしてはとてもシンプルで、マルチヘッドアテンションの代わりにマルチリニアアテンションと名前をつけている。基本的にはpytorchで当該モデルが実装されており、内部のテンソルネットワークの該当部分もtorch.einsumによってpytorch内部でテンソルネットワークが実行されて完結しているので、追いやすい。
圧縮率などにもきちんと言及されており、精度も言語モデルや翻訳モデルで評価されている。
正直もうちょい読み込むにはBTDの仕組みや機能についてもちょい理解が必要だという形で勉強会も興味がある人も多かったです。機械学習論文は量子の論文と異なってパフォーマンス重視、理論控えめ、実装中心なので、ほぼレビューというより論文紹介みたいになってしまいそうですが、どんどんやっていきます。
以上です。