日本語GPTの蒸留における損失関数の比較

自然言語処理の言語モデルは年々パラメータ数，学習データ量，そのための計算量とコストが連動して増え続けている.もし性能を担保したままより小さいモデルが実現できるならば，有用であることは言をまたない.また，モデルの冗長な部分を探る手掛かりになる.自然言語モデルの軽量化手法にはいくつかよく知られたものがある.Zafrir[1]らは量子化と呼ばれる手法によってBERT[2]の小型化を行い，99%の精度を保ったまま4倍軽量なモデルであるQ8BERTを構築した.これはモデルパラメータ等の精度を落とすことで軽量化する手法であり，最新の生成モデルにも適用されている[3].Hintonら[4]はDNNにおける蒸留を（はじめて）行った.蒸留とは，教師モデルの持つ情報を生徒モデルに移す手法である.Sanhら[5]は教師モデルであるBERTの97%の精度を保ったままパラメータ数を40%削減したDistilBERTを作った.一方でGPT-2[6]をはじめGPTの蒸留についてはあまり研究されていない.英語版のDistilGPT2モデルはHuggingFaceによって学習されたものが公開されている[7].RAIL-KD[8]は中間層の出力をランダムに選択し比較する手法であり，RoBERTaに適用している.Liら[9]は，GPT-2の蒸留について複数の蒸留手法を検討しており，これにはRAIL-KDが含まれる.また同論文ではGPT-2の蒸留の際のパラメータ初期化についても検討している.日本語版のDistilGPT2モデルは公開されている[10]ものの学習が収束していないためか，繰り返し同じパターンを生成してしまう状態である.また，GPTの蒸留の際にどのような損失を加えると生徒モデルの生成文の流暢性や一貫性，魅力のいずれに影響が大きいのか検証した論文は知る限りない.本研究では日本語を対象に，GPTの蒸留について異なる損失を用いて比較し，自動評価および主観評価を行った.