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

西村稜真 ${ }^{1}$ 狩野芳伸 1
1 静岡大学大学院
\{rnishimura,kano\}@kanolab.net

## 概要

本研究では日本語を対象に，蒸留を用いて GPT-2 の小型化のための事前学習を行った. 蒸留に際しては，通常の事前学習におけるマスク言語モデルの損失と蒸留の損失の混合率や，蒸留の損失において計算対象とする層など，異なる損失関数を用意して比較した. パープレキシティによる主観評価では， small サイズのベースラインに対しその $68 \%$ のサイズの生徒モデルでよりよい値を達成し，文生成結果の主観評価では上回らなかったものの，大きなモデルの性能に匹敵するより小さいモデルへの蒸留の可能性を示した。

## 1 はじめに

自然言語処理の言語モデルは年々パラメータ数,学習データ量, そのための計算量とコストが連動して増え続けている。もし性能を担保したままより小さいモデルが実現できるならば，有用であることは言をまたない. また，モデルの冗長な部分を探る手掛かりになる。

自然言語モデルの軽量化手法にはいくつかよく知られたものがある. Zafrir[1] らは量子化と呼ばれる手法によって BERT[2] の小型化を行い，99\%の精度を保ったまま 4 倍軽量なモデルである Q8BERTを構築した.これはモデルパラメータ等の精度を落とすことで軽量化する手法であり，最新の生成モデルにも適用されている [3]. Hinton ら [4] はDN における蒸留を（はじめて）行った. 蒸留とは, 教師モデルの持つ情報を生徒モデルに移す手法である. Sanh ら [5] は教師モデルである BERT の 97\%の精度を保ったままパラメータ数を $40 \%$ 削減した DistilBERT を作った.

一方で GPT-2[6] をはじめ GPT の蒸留についてはあまり研究されていない. 英語版の DistilGPT2 モデルは Hugging Face によって学習されたものが公開さ
れている [7]. RAIL-KD[8] は中間層の出力をランダ么に選択し比較する手法であり，RoBERTa に適用している. $\mathrm{Li}$ ら [9] は， GPT-2 の蒸留について複数の蒸留手法を検討しており，これには RAIL-KD が含まれる. また同論文では GPT-2 の蒸留の際のパラメー 夕初期化についても検討している。

日本語版の DistilGPT2 モデルは公開されている [10] ものの学習が収束していないためか，繰り返し同じパターンを生成してしまう状態である. また， GPT の蒸留の際にどのような損失を加えると生徒モデルの生成文の流暢性や一貫性，魅力のいずれに影響が大きいのか検証した論文は知る限りない.

本研究では日本語を対象に，GPT の蒸留について異なる損失を用いて比較し，自動評価および主観評価を行った。

## 2 関連研究

DistilBERT[5] は教師モデルである BERT の 97\% の精度を保ったままパラメータ数を $40 \%$ 削減した. DistilBERT は，BERT の通常の事前学習の損失，蒸留の損失，および隠れ層の損失の線型結合を損失関数として用いている [5]. DistilBERT の論文には明示的に式が書かれていないが，該当部分の実装 [11] よると，コサイン類似度の計算には最後の隠れ層の出力のみを用いている。

DistilGPT2 の実装は DistilBERT の手法を適用したとのことなので，これも同様だと思われる.この損失の効果は論文中で検証されているが，中間の隠れ層の出力同士を比較することについての検証はなされていない.

## 3 提案手法

## 3.1 生徒モデル

12 層の日本語 GPT-2 モデルである rinna 株式会社の japanese-gpt2-small[12]をベースとして，生徒モデ

ルを次のような方法で初期化した.まず，ベースとなるモデルの層数を半分すなわち 6 層にしたモデルを用意した.その後， japanese-gpt2-small の $1,2,5,8$, 11, 12 層目のパラメータを用いてモデルパラメータを初期化した.パラメータ数を表 1 に示す.

## 3.2 蒸留

蒸留に際しては以下の異なる損失を用い，結果を比較する。

CLM Loss $L_{C L M}$ GPT-2 のオリジナルのマスク言語モデルによる事前学習の損失. 予測確率と正解ラベルとのクロスエントロピー誤差をとっている.学習文 $S$ における $\mathrm{i}$ 番目の単語を $w_{i}$, 生徒モデルの出力する単語 $w_{i}$ の予測確率を $p_{\text {student }}\left(w_{i}\right)$ とすると，式 1 の通りである.

$
\left.L_{C L M}=-\frac{1}{|S|} \sum_{i=1}^{|S|} \log \left(p_{\text {student }}\left(w_{i}\right)\right)\right.\}
$

Distillation Loss $L_{C E}$ DistilBERT と同様の蒸留の損失. 生徒モデルの出力する予測確率分布と教師モデルの出力する予測確率分布とのクロスエントロピー誤差をとっている. 語彙の集合を $W$ ，生徒モデルの出力する単語 $w$ の予測確率を $p_{\text {student }}(w)$, 教師モデルの出力する単語 $w$ の予測確率を $p_{\text {teacher }}(w)$ とすると，式 2 の通りである。

$
L_{C E}=-\sum_{w \in W}\left.\{p_{\text {teacher }}(w) \cdot \log \left(p_{\text {student }}(w)\right)\right.\}
$

Cosine embedding Loss $L_{C O S}$ 隠れ層のコサイン類似度. 本研究においては, 中間の隠れ層の出力同士を比較し損失に組み込むことを提案する. 入力側と出力側の 2 層のパラメータが生徒モデルと教師モデルでそれぞれ一致するように初期化を行っているので，これらの対応が取れていると考えた。 すなわち，生徒モデルの第 2 層と教師モデルの第 2 層の出力，および生徒モデルの第 4 層と教師モデルの第 10 層の出力を取り出し, これらのコサイン類似度をとった. 生徒モデルの $\mathrm{i}$ 層目の隠れ層の出力を $h_{\text {student }, i}$, 教師モデルの $\mathrm{j}$ 層目の隠れ層の出力を $h_{\text {teacher }, j}$ とすると, 実際の計算方法は以下の式 3 である. 各項は，損失関数として用いることを想定して 1 から引いた。

$
\begin{aligned}
L_{\operatorname{COS}} & =\left.\{1-\cos \left(h_{\text {student }, 2}, h_{\text {teacher }, 2}\right)\right.\} \\
& +\left.\{1-\cos \left(h_{\text {student }, 4}, h_{\text {teacher }, 10}\right)\right.\}
\end{aligned}
$

表 2 使用した Wikipedia データの統計（行数）

## 3.3 損失関数

学習の際の損失関数には，先に挙げた CLM Loss $\left(L_{C L M}\right)$, Distillation $\operatorname{Loss}\left(L_{C E}\right)$, Cosine embedding $\operatorname{Loss}\left(L_{C O S}\right)$ を組み合わせたものを用いた。

具体的な組み合わせとしては，まず $L_{C L M}$ と $L_{C E}$ との線型結合をいくつか用意した. $L_{C L M}$ に比べて $L_{C E}$ の值が 2-3 析ほど小さな值をとったため，適切な学習を行うために $L_{C E}$ に適当な数を掛ける必要があると考えたためである.

また同様の理由で, $L_{C L M}$ と $L_{C E}$ の相乗平均を取ったものを用意した. 最後に，隠れ層の出力を利用した蒸留の効果を確認するため, $L_{C L M}, L_{C E}$, $L_{C O S}$ を足し合わせたものを用いた.

なお，GPT-2の通常の事前学習のロスである $L_{C L M}$ を用いず， $L_{C E}$ のみを用いて学習を行った際には，学習が収束しなかったため，対象から除外した.

## 4 実験設定

## 4.1 データセット

日本語版 Wikipedia の全文をデータセットとして用いた. Wikipedia データは 01-Sep-2023 18:05 版のものを使った. 合計の文字数は 11 億文字程度であった. doc タグと空行を削除するなどの前処理を行い，そのうち文字数が 30 以上の行だけを取り出し，訓練データ: テストデータ: 検証データ $=8: 1: 1$ となるようランダムに分割した. それぞれのデータ数は表 2 の通りであった。

ハイパーパラメータは表 3 のようにした. バッチサイズについては，教師モデルや実行環境によって表の範囲で変更した. 検証時の損失は $L_{C L M}$ のみを用い，この損失において性能の向上が見られなくなった段階で学習を終了させた.
表 3 学習条件

表 4 モデルのパープレキシティ（低い方が良い値）

## 5 実験結果

## 5.1 自動評価

パープレキシティを指標としてモデルの性能を測定した.パープレキシティ測定用のデータには，テストデータのうち 3000 件を取り出して用いた. 測定結果は表 4 の通りである. 表中の教師モデルのカラムについて, small および medium は, それぞれ rinna の small および medium を教師モデルとして用いて蒸留したことを意味する。

本研究で学習を行ったモデルは rinna の small の半分の層数であるが，いずれも rinna の small より良いパープレキシティを示し, rinna の medium より悪いパープレキシティを示した.

$L_{C L M}$ のみで通常の事前学習を行った model a では, rinnaの small よりパープレキシティが 1.9 低い值を示した. 以下，この model a を基準とすると， model b では 0.1 , modeld では 0.4 , model h では 0.5 良いパープレキシティの値を示した. model c では 0.4, model e では 0.1, model f では 0.4, model hでは 0.4 悪いパープレキシティの値を示した.

## 5.2 人手評価

3名の評価者による人手評価を行った. 評価コストのため，先に挙げたモデルのうち同系列のモデル表 5 人手評価のための書き出し文章引用元

 \\

と比較して性能の低い model c および model e を除外し, 残った 8 個のモデルについて評価した.

評価に用いるデータは，それぞれのモデルに同じ書き出しから 100 トークンの文章を生成させて作成した. 書き出しとして，表 5 に示す 3 種類を用意した. 書き出し $\mathrm{A}$ は小説的な文章, 書き出し $\mathrm{B}$ は哲学的な文章, 書き出し C は百科事典的な文章を生成させることを意図している. 書き出しC C wikipedia に含まれる文章であるが，モデルの学習およびパープレキシティの測定に用いなかったデータを用いた.

文章生成の際のパラメータは以下のようにした。
- temperature: 1.0
- top_k: 500
- top_p: 0.95

生成された文章の例を付録 $\mathrm{A}$ に示す。

生成された文章に対して, 流暢性 (構文), 一貫性 (意味・文脈), 魅力（多様性）の三つの指標で主観評価を行った. 評価に際しては，異なる二つのモデルの生成文を同時に提示し，それぞれの主観評価指標についてどちらが優れているか選択するペアワイズ形式をとった. 選択肢は提示した二つの文と，「全く差がない」の三種類であるが，評価者にはできるだけ「全く差がない」を選ばないように求めた. 偏りが生じるのを避けるため，モデルのすべてのぺアについて一度ずつ比較させた. すなわち，一つの書き出しにつき 28 通りの比較がなされた。

主観評価の結果を表 6 に示す. 表の数値はそのモデルの出力を他のモデルの出力と比較した際に，より優れていると判断された割合である.「全く差がない」が 1 回以上選ばれていた場合，その回数に 0.5 を乗じた值をより優れていると判断された回数に算入した.

新たに構築したモデルの人手評価の結果は, 蒸留を行わなかった model aを除いて, 全ての項目で教師モデルを下回った. 教師モデルを除いた評価の
表 6

モデルの人手評価（高い方が良い値）

結果は以下の通りである. 流暢性が最も高かったのは model d および model f, 次いで model a であった.一貫性が最も高かったのは model a，次いで model $\mathrm{d}$, model $\mathrm{f}$ の順であった. 魅力が最も高かったのは model d, 次いで model g, model hの順であった. 3 項目の平均值では， model dがわずかに model aを上回り， model fがその次に高い值を示した。

## 6 考察

すべてのモデルが rinna の small の 68\%程度のモデルサイズであるにもかかわらず，より良いパープレキシティを示した. 蒸留をせずに通常の事前学習を実行した model a が既に良いパープレキシティを示していることから，これは蒸留の効果ではなく， モデルの初期化方法および Wikipedia による事前学習の効果である。一因として, rinna の事前学習には日本語 Wikipedia および cc100を用いている [13] が，本研究においては日本語 Wikipedia のみを用いて蒸留を実行したため, Wikipediaを用いて測定したパープレキシティにおいては本研究のモデルが有利であったと考えられる。

$L_{C E}$ を加えるとわずかにパープレキシティが改善した. 複数の条件について調べたところ， $L_{C E}$ に掛ける値によるパープレキシティへの影響はあまり安定していない. 特に 1 倍と 10 倍の場合には事前学習のみをしたモデルよりもパープレキシティが良かったが，5倍と 20 倍の場合には事前学習をしたモデルよりも悪かった。

small からの蒸留より medium からの蒸留の方が性能が良かった. medium の確率分布は small の確率分布よりも正確であると考えられるので，より正確な確率分布がモデルの学習を助けると考えられる.つまり $L_{C E}$ を学習に用いること自体には意味があると考えられる。

$L_{C L M}$ と $L_{C E}$ との相乗平均を取った model f および中間層の出力のコサイン類似度である $L_{C O S}$ を利用した model h では，パープレキシティは向上しなかった.

続いて人手評価の結果について考察する.まず通常の蒸留の効果を確認するために，蒸留を行わなかった model a と $L_{C E}$ を加えた model b，および $10 \times L_{C E}$ を加えた model d を比較する. model b では全ての項目について model aを大きく下回ったが, model dでは流暢性および魅力について model a より高い値を示した. パープレキシティによる評価を考え合わせると， $L_{C E}$ に掛ける値を適切に調整することが重要であると考えられる。

評価項目別に見ると，流暢性では， model d および model f のみが蒸留を行っていない model a を上回った. 他のすべてのモデルと異なりこれらに共通しているのは， $L_{C E}$ の効果が大きく出るように損失関数を再設計したという点であり， $L_{C E}$ がモデルの流暢性に影響を与えると考えられる。

一貫性では，全ての蒸留モデルが model aを下回った. 蒸留は教師モデルの多様な表現を取り込むために，かえって一貫性を損なう可能性がある。

魅力では，流暢性と異なり， $L_{C E}$ の影響は様々であった。一方で中間層の出力のコサイン類似度である $L_{C O S}$ を考えると，これを利用した model h は model b と比べて流暢性，一貫性では変わらなかったものの，より高い魅力を示した. 中間層の出力を利用することで，教師モデルの表現の多様性を学習することができたと考えられる。

## 7 おわりに

本研究では生成モデルの蒸留を検討した. パープレキシティを指標とした自動評価では，通常の事前学習に加えて $L_{C E}$ を導入することでモデルの性能を向上させられることを示した. 主観評価では，一貫性以外の項目で蒸留によって主観評価を向上させることのできる損失関数の組み合わせを発見し，特に $L_{C E}$ に掛ける値を適切に調整することが重要であることを改めて示した. また，蒸留のために追加された 2 種類の損失 $L_{C E}$ および $L_{C O S}$ について, 前者はモデルの流暢性に，後者はモデルの魅力に大きな影響を与える可能性が示唆された。

## 謝辞

本研究は JSPS 科研費 JP22H00804, JP21K18115, JP20K20509, JST AIP 加速課題 JPMJCR22U4, およびセコム科学技術財団特定領域研究助成の支援をうけたものです.

## 参考文献

[1] Ofir Zafrir, Guy Boudoukh, Peter Izsak, and Moshe Wasserblat. Q8bert: Quantized 8bit bert. In 2019 Fifth Workshop on Energy Efficient Machine Learning and Cognitive Computing - NeurIPS Edition (EMC2NIPS). IEEE, December 2019.

[2] Jacob Devlin Ming-Wei Chang Kenton and Lee Kristina Toutanova. Bert: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of naacL-HLT, Vol. 1, p. 2, 2019

[3] Elias Frantar, Saleh Ashkboos, Torsten Hoefler, and Dan Alistarh. Gptq: Accurate post-training quantization for generative pre-trained transformers. arXiv preprint arXiv:2210.17323, 2022. https://doi.org/10.48550/ arXiv.2210.17323.

[4] Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. Distilling the knowledge in a neural network. stat, Vol. 1050, p. 9, 2015.

[5] Victor Sanh, Lysandre Debut, Julien Chaumond, and Thomas Wolf. Distilbert, a distilled version of bert: smaller, faster, cheaper and lighter. arXiv preprint arXiv:1910.01108, 2019. https://doi .org/10.48550/ arXiv.1910.01108.

[6] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever, et al. Language models are unsupervised multitask learners. OpenAl blog, Vol. 1, No. 8, p. 9, 2019.

[7] Hugging Face. distilgpt2 $\cdot$ Hugging Face, (accessed 202401). https://huggingface.co/distilgpt2.

[8] Md Akmal Haidar, Nithin Anchuri, Mehdi Rezagholizadeh, Abbas Ghaddar, Philippe Langlais, and Pascal Poupart. RAIL-KD: RAndom intermediate layer mapping for knowledge distillation. In Findings of the Association for Computational Linguistics: NAACL 2022, pp. 1389-1400. Association for Computational Linguistics.

[9] Tianda Li, Yassir El Mesbahi, Ivan Kobyzev, Ahmad Rashid, Atif Mahmud, Nithin Anchuri, Habib Hajimolahoseini, Yang Liu, and Mehdi Rezagholizadeh. A short study on compressing decoder-based language models. arXiv preprint arXiv:2110.08460, 2021. https: //doi.org/10.48550/arXiv.2110.08460.

[10] knok/japanese-distilgpt2 . Hugging Face, (accessed 2024-01). https://huggingface.co/knok/ japanese-distilgpt2.

[11] transformers/examples/research_projects/distillation/ distiller.py at main - huggingface/transformers GitHub, (accessed 2024-01）. https://github.com/ huggingface/transformers/blob/main/examples/ research_projects/distillation/distiller.py.
[12] rinna 株式会社. rinna/japanese-gpt2-small $\cdot$ Hugging Face, (accessed 2024-01). https://huggingface.co/ rinna/japanese-gpt2-small.

[13] rinna 株式会社. rinna/japanese-gpt2-medium $\cdot$ Hugging Face, (accessed 2024-01).https://huggingface.co/ rinna/japanese-gpt2-medium.

## A 付録

書き出しおよびモデルごとに，生成された文章の例を表 7 に示す. 紙幅の関係上，生成文の 126 文字目までを掲載したが，実際にはこの倍程度の長さの文章を生成し、主観評価に用いている。

表 7 生成された文章の例

 &  \\