Ahogrammer

Deep Dive Into NLP, ML and Cloud

BERTを使った系列ラベリングの高速化

EMNLP 2019より以下の論文を紹介。

この論文では、系列ラベリングタスクに対するBERTの高速化と多言語転移性能の検証を行っている。BERTが良い性能を出すことはわかっているが、モデルのサイズが大きく、予測に時間がかかるという欠点がある。そこで、BERTから3層を選択し、パラメータ数を減らすことで高速化をしている。これにより、通常のBERTと比べて約27倍高速化した。また、モデルに対して蒸留を行っている。結果として、パラメータ数を減らす前のBERTに匹敵する性能を記録。特に低リソースな言語に対して有効であることを示している。

モデルを小さくするために3つの層を選んでパラメータを減らしている。公開されているBERTではエンコーダは12層から構成されている。以下の表に示すように、そのパラメータ数の多くは隠れ層のユニット数で占められている。そこで、この論文ではエンコーダのすべての層を使うのではなく3つの層を選択して使うようにしている。これにより、ユニット数を87Mから2Mまで減らしている。

f:id:Hironsan:20190919071013p:plain
モデルのパラメータ数

以下の表では、パラメータ数を減らしたことで、予測がどのくらい高速化されたのかを示している。表の上側はGPU、下側はCPUでどのくらい高速化されたかを示している。結果を見ると、CPUではGPUと比べてより高速化しており、元のBERTより約27倍の予測速度となっている。

f:id:Hironsan:20190919071609p:plain
予測の高速化

高速化されたのはわかったが、性能はどうなのか?というのを示すのが以下の表になる。実験は品詞タグ付けとMorphologyという2つの系列ラベリングタスクに対して行っている。結果を見ると、通常のBERTよりは性能は劣るが、小さくしたモデルでも、その値に匹敵する性能を出していることを確認できる。

f:id:Hironsan:20190919072413p:plain
品詞タグ付けとMorphologyの性能

また、高速化の話とはあまり関係ないが、多言語転移性能に対しても検証を行っている。設定としては、低リソースな6つの言語に対して通常のBERTとの転移性能を比較している。以下の結果を見ると、モデルを小さくしても通常のBERTと同様に高い転移性能を示していることを確認できる。

f:id:Hironsan:20190919072756p:plain
多言語転移性能

ちなみに、論文内ではモデルの蒸留のテクニックが書いてあるが、この記事では書いていない。詳細は論文を参照してもらいたい。感想としては、比較対象が12層のBERTであったが、実際には12層まるごとつかうというより、バリデーションデータを使って、どの層を取り出すかを決めると思うので、そことの比較でどのくらい高速化されたのかは知りたかった。イメージとしては、以下の記事で紹介した論文で行っている層ごとの性能を検証した後にどのくらい高速化されるかを示すと、実用的にどのくらいの高速化がされているのかがわかりやすかったと思う。

hironsan.hatenablog.com