Googleが発表した翻訳文生成モデル、小説一冊分の文字を理解可能

reformer
このエントリーをはてなブックマークに追加

Thunbnail Photo by Paul Hanaoka on Unsplash.

物語の印象は翻訳家によって左右されると言っても過言ではないほど、著者の伝えたい思いをそっくりそのまま別言語に翻訳するのはむつかしいとされてきた。

しかし、今やあらゆる書籍がデータ化し、ネット上には文字が溢れ、自然言語処理の技術も日に日に向上している。文字のなかから、AIが文化や時代の流行なども読み解けるようになってきた。

そのなかで、2020年1月16日にGoogleは、英語に換算して最大100万ワードを扱える文章生成モデルとして、「Reformer」を開発したと発表した。

>>Google AI Blog

Transformerベースの新モデルReformer

2017年にグーグルが公開した「Attention is all you need」という論文で提唱されたモデル「Transformer」は、現在の自然言語処理領域において事実上の標準となっている。

にもかかわらず、Reformerモデルを開発するに至ったのは、Transformerに存在するふたつの課題が原因だった。Attentionとメモリ問題だ。

Attention(注意機構)の計算負荷をどうするか

Attentionとは、単語同士の関係を行列で表す方法である。

オリジナルのAttentionはEncoderとDecoderとして動作しているが、その動作をレイヤー(層)内で処理し計算を高速化したのが「Self-Attention Layer(以下SAL)」というモデルだ。再帰型層や畳み込み層を使っていた従来の自然言語処理を大幅に前進させた。

しかし、SALモデルでもワード数が増えるほど計算負荷が増し、最大で数千ワードの範囲でしか対応できなかった。

そこで、Reformerではあらかじめワードにハッシュ値※というものを割り当て、ハッシュ値ごとにセグメント分けをしておく。これにより、セグメントごとにワードを比較すればよいので、長文でも計算負荷が低く抑えられた。

※ハッシュ値:元データから特定のルールに従って生成されるランダムな値。ハッシュ関数から返される値。

メモリ枯渇問題

通常メモリ消費量は、計算処理が増えるにつれ、モデルに置き換えると計算を行うレイヤーをまたがるにつれて累積的に増加していく。

単層ニューラルネットワークでは数GBのメモリを必要とすることが多く、通常はひとつのGPU上に収まるが、典型的なTransformerモデルは数十個のレイヤーを持っているため、各レイヤーからの値を積み立てていくと、メモリがすぐに枯渇してしまう。

Reformerに実装された新しいアプローチは、各レイヤーに入力する際、メモリに一時記憶させるのではなく、誤差逆伝播法の過程で必要ごとに再計算をするリバーシブルレイヤーという手法だ。

従来の積立型計算(a)ではなく、リバーシブルな2つのレイヤーを独立(b)させ、ひとつは通常通り更新していき、もうひとつは最初のレイヤーへの変更のみを認識していく。これにより、ネットワークを逆から実行する際(c)は、各レイヤーで適用された活性化部分のみを差し引く計算だけで済んだ。


Photo on Google AI Blog [Reformer: The Efficient Transformer], Jan 16 2020.

小説一冊分を丸ごと学習できるほどの単語量を学習可能

このふたつの手法を実装することで、Reformerモデルはたった16GBのメモリでも最大100万ワードの文章を学習できるようになった。英語に換算して100万ワードは小説一冊分も学習できるレベルに等しい。

そして、文章を効率的に学習できるだけではなく、画像処理への応用としても行えるという。

今後もReformerが学習していくことでどのような技術が芽吹いてくるのか、今からとても楽しみだ。