この広告は、90日以上更新していないブログに表示しています。
こんにちはRyobot (りょぼっと) です.
テンソル分解は 2017 年の密かなブームだったかもしれない.
論文数は多くないが,テンソル分解を用いた手法が中規模言語モデル [1],大規模言語モデル [2],機械翻訳 (本紙) [3],動作認識 [4] で軒並み SOTA を達成している.
テンソル分解 (Tensor Decomposition,Tensor Factorization) は ランクのテンソルを
個の因子行列 (Factor Matrix) と 1 個のコアテンソル (CoreTensor, なくても OK) に分解し,パラメータを削減する手法である (ソース).すべての因子行列 (+ コアテンソル) を内積すると分解前のテンソルに近似する.
身近な例では 2 階のテンソル分解が行列分解 (Matrix Factorization) であり,0 階のテンソル (スカラー) の分解は中学校で習う因数分解である.
大規模データは大規模モデルで愚直に殴るのが最も有効であり,現実的な時間内で訓練するためにテンソル分解や条件付き計算が注目を集めている.
テンソル分解は大規模モデルのパラメータ削減で力を発揮する.成功例として巨大な LSTM 層を行列分解する手法を紹介したい.
LSTM は次のような関数である.
LSTM の各ゲートは次式によって表される.
ここで,
であり,
はアフィン変換
である.
アフィン変換 の重み行列
の計算コストが大きいので行列分解によってパラメータ数を削減したい.
下図は左から 2 層の一般的な LSTM,2 層の F-LSTM,2 層かつ各層 2 グループの G-LSTM である.ただし,
,
とする.
F-LSTM (Factorized LSTM) は重み行列 を小さな 2 個の行列
と
の内積
に近似させる.ここで
,
,
<
<=
である.パラメータ数は
から
に削減される.
G-LSTM (Group LSTM) は LSTM と入力 と隠れ層
を
個の独立なグループに分離する.つまり
が
と
と
のメモリ状態にのみ依存するように,
個のベクトルの連結 (concatenate)
と
に分割し,次式のように独立して計算する.
ここで は グループ
のアフィン変換である.パラメータ数は
に削減される.
データセットは単語数 M,語彙数
のニュース記事 [Chelba, 2013] から成るGoogle Billion Word [Chelba, 2013] を使用する.
8 枚の Tesla P100GPU が刺さった DGX-1 で 1 週間訓練した.
ここで埋め込みサイズ は 1024,メモリサイズ
は 8192,F512 の行列
の中間サイズ
は 512,G-4 のグループ数
は 4 (G-16 は
) とする.
ベースライン [Jozefowicz, 2016] のBIGLSTM が 31.0,行列分解を用いたF-LSTM が 28.11,グループ分離を用いたG-LSTM が 28.17 のパープレキシティを達成した.
また G-LSTM を 3 週間訓練したところ,パープレキシティは SOTA である23.36 を達成した (現在も SOTA).
SliceNet は巨大な ResNet の畳み込み層を Depthwise Convolution (空間方向の畳み込み) と Pointwise Convolution (チャネル方向の畳み込み) に分解する Depthwise Separable Convolution を用いたニューラル機械翻訳である.
著者は Keras 作者のショレー氏であり,SliceNet は同氏が開発した画像認識向けの Xception モデルを機械翻訳向けに移植したものと言える.
WMT'14 の BLEU スコアは英仏: -, 英独: 26.1 で第 2 位 (登場時 1 位)
SliceNet は ConvModule を 6 層スタックしたエンコーダと 4 層スタックしたデコーダから成る.
ConvModule は 4 層の ConvStep から成り,ConvStep は Depthwise Separable Convolution に層正規化 (Layer Normalization) を適応したものである.
IOMixer と Decoder は一般的な注意 (ie, Source-Target-Attention) を使用する.
SepConv (Depthwise Separable Convolution) は前述のとおり 2 つの畳み込みに分解してパラメータを削減する手法である.解説はこちらがわかりやすい.
分解によって下図のようにカーネルのパラメータが削減される.
SepConv は次式のように表される.
ここで は要素ごとの積である.
また前述の G-LSTM のように畳み込み層のカーネルと入力を 個のグループに分解するSuperSC (Super-separable convolution) によって更にパラメータを削減できる.
畳み込み (Convolution) の亜種にチェッカーボードのように間隔を空ける手法が 2 つある.
つまり両者は対局的な畳み込みである.
SliceNet では広い文脈の依存関係を参照することが可能な Dilated Convolution を使用する.
ConvStep は SepConv に層正規化 (Layer Normalization) を適応したもので次式によって表される.
層正規化は名前のとおり層内の各成分の統計量を計算し,正規化する手法である.
畳み込みモジュール (Convolution Module) は ConvStep を 4 層スタックし残差接続 (Residual Connection) を取り入れたモジュールである.
内積注意は 2 つのテンソル と
を入力として受け取り,
でスケーリングした次式によって文脈ベクトルを得る.
また注意が各単語の位置情報にアクセスできるように正弦波を埋め込み行列に加算する.詳しくは論文解説 Attention Is All You Need (Transformer) を参照されたい.
実用的に には位置情報を付与して 2 度 SepConv を適応している.
データセットは WMT'14 の英独 (5M 対訳文) を使用する.英仏は評価しておらず,かなり実験が雑である.
ともあれ結果は次のとおり.
BLEU スコアは SuperSC を用いた SliceNet が 26.1 を達成し SOTA となった (この後すぐに Transformer が登場し三日天下となった).
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。