チャットボットサービスにおける continual learning の検証

恒川翔
KARAKURI Techblog
Published in
17 min readSep 27, 2019

こんにちは!
4月から7月の3ヶ月間,カラクリにてインターンをさせて頂きました,恒川といいます.この記事ではそのインターンの内容について書いていきたいと思います.

要約

  • continual learning の手法である EWC 法を実装し,実データに対するチャットボットの continual learning で論文の結果を定性的に再現した.
  • livedoor ニュースコーパスデータに対する実験から, EWC loss 強度の調整に関して重要な知見が得られた.
  • 忘却抑制と知識獲得のトレードオフの調節が難しいことなど,実運用に向けての課題が明らかになった.
目次1. 問題提起:continual learning
2. 手法:EWC法
3. 結果
3.1 livedoor ニュースコーパスデータ
3.2 実際の企業データ
4. 考察と課題
5. まとめと今後の展望

1.問題提起:continual learning

まず今回のインターンのテーマから説明していきます.

カラクリでは企業向けのチャットボットサービスを提供しています.お客様から企業に向けられる質問に対して,AIを用いて内容を判断し,自動的に適切な返答を返します.

実際の運用においては,質問の内容は時期やキャンペーン等により,日々変化します.新しく加わった質問にも適切に返答ができるように,継続的に学習を行っていく必要があります.

このような,異なるタスクの連続的な学習continual learning¹と呼ばれています.

しかしながら,異なる質問を連続的に学習していくと,過去に学習した質問に答えられなくなるという現象が起こってしまいます.

この現象は catastrophic forgetting(壊滅的忘却)と呼ばれ, continual learning における深刻な問題として知られています.

catastrophic forgetting を防ぐため,過去に学習した質問と新たに加わった質問をひとまとめにして,初めから学習し直すという手順を踏んでいました.

しかしながらこの方法では,学習時間など計算資源的に大きなコストがかかります.

そこで,これまで学習した質問を記憶しつつ新たな質問を学習することはできないか,という問題が浮かび上がりました.

本インターンで取り組んだのはこの問題になります.すなわち,チャットボットに対して continual learning を実現できないかという問題です.

2.手法:EWC 法

continual learning を実現するため,EWC 法 (Elastic Weight Consolidation)²という手法に注目しました.本節ではこの手法を説明していきます.

論文:https://arxiv.org/abs/1612.00796

深層学習における学習とは,パラメータ θ をうまく調節して損失関数の値を小さくするような最適解を探すことを意味します.

現在学習しているタスクを A とすると,十分学習が成功すればタスク A に関する損失関数の値が小さくなるような点へとパラメータ θ が収束します.

ここから別のタスク B を続けて学習するという continual learning を考えてみますと,別のタスク B の損失関数が小さくなるような点へとパラメータが移っていくことになります.

その結果,タスク A の損失が小さかった点からは離れていくことになり,タスク A の精度が落ちてしまいます.これが catastrophic forgetting です.

この問題を解決するために次のような発想が生まれます.

今,タスク A の学習が終了した段階では,タスク A の損失関数の極小点にパラメータがいます.この点の近傍にはタスク A の損失の値が小さくなっている領域があることが予想されます.

そこで,タスク A の極小点からあまり離れないようにしてタスクBの学習を行えば,タスク A の損失を小さく抑えたままタスクBの最適解が求まります.

したがって,このような極小点から離れないようにする項を正則化項として付け加えることを考えます.

この正則化項を求めるにあたり,タスク A の損失関数の極小点周りでの Taylor 展開を考えます.すると,極小点においては0次の項は定数,1次の項は極小条件から消えて,2次の項の寄与が支配的になります.さらに,Laplace近似を適用してFisher情報行列のうち対角項のみを取ってきます.

この項は情報幾何学的にはパラメータ空間中の距離に対応するものになります(その係数は Fisher 情報量と呼ばれます).つまり,タスク A の極小点と現在のパラメータの間の(Fisher計量のもとでの)二乗距離にあたります.

そこで,これを EWC loss と定義し,次のタスクの学習を行う際に通常の損失関数に正則化項として付け加えてやります.

その結果,新しいタスク B を学習する際の損失関数は次のようになります.

第1項が通常の新しいタスクに関する損失関数で,第2項が今導入した過去のタスクの極小点から離れないようにするための正則化項です.ここで λ は正則化の強さを調節するハイパーパラメータで,次節以降で議論の焦点になります

ここで重要なことは,今導入した EWC loss は,過去のタスクの学習終了時点でのパラメータと そのタスクのデータのみから計算することができる定数であり,その後の学習を進めるにあたって,過去のタスクのデータを用いる必要が一切ないという点です.

EWC loss の計算に必要なのは,タスク A の学習が終了した時点でのFisher 情報量と学習パラメータです.
学習終了時のパラメータは定数で,Fisher 情報量もタスク A 学習終了時の勾配から計算することのできる定数になります.
したがって,タスク A の学習が終了した時点でこれらの量を保存しておけば,以降の学習においてはタスク A のデータそのものを扱う必要は一切ありません.

このように過去のタスクのデータを参照することがないため,continual learning を実現することができます.

これを一般化し,過去のタスクに関する EWC loss を累積的に付け加えたものを使い,continual learning を行うというのが EWC 法になります.

以上で EWC 法の説明は終了になります.この手法を用いて,チャットボットの continual learning の検証を行いました.

また,計算資源には Microsoft 社の提供する Microsoft Azure サービスから Deep Learning Virtual Machine を使用しました.環境構築についてはこちらのスライドで紹介をしていますので,興味のある方は参照してください.

「Microsoft Azure での Deep Learning 用仮想マシンの構築」
https://speakerdeck.com/kt71079/microsoft-azure-defalse-deep-learning-yong-jia-xiang-masinfalsegou-zhu

3.結果

実際にEWC法を用いて continual learning を行なった結果について述べていきます.

実験は2つのデータに対して行いました.1つ目は予備的な実験としてlivedoor ニュースコーパスデータ,2つ目は実際に運用で使用された企業データです.

3.1.livedoor ニュースコーパスデータ

まずはデータセットおよび問題設定について説明します.

データセットはこちらのサイトで公開されています.
https://www.rondhuit.com/download.html

これはネットニュース記事の文面のデータセットです.記事はカテゴリー分類がなされており,カテゴリーは全部で9種類あります.それぞれのカテゴリーから数千件ずつの記事を集めてあります.

今回は記事の文面からカテゴリーを予測するという分類問題を考えます.

この問題を continual learning へと加工します.9種類のカテゴリーを3種類ずつにグループ分けして,グループごとに3種類のうちどのカテゴリーかを予測するという問題を考えます.これらのタスクをA,B,Cと名付け,連続して学習させます.

カテゴリーごとに記事の書き方や内容が大きく異なるため,それらを3種類ずつに分割して作られた3つのデータセットはデータとして異なる性質を持ちます.よって,continual learning の問題設定となります.

ここで,分類問題として実行するにはカテゴリー名に番号を割り振る必要があります.特に continual learning では3つのタスク全てで共通の番号を割り振ることになります.

以上がデータセットおよび問題設定の説明です.

それではこの問題に対する学習結果をお見せしていきます.

まずは EWC 法を用いなかった場合の結果です.

横軸は学習のイテレーション数,縦軸は正答率で,各タスクに対して結果を表示しています.

タスクの切り替わりのタイミングで明瞭な catastrophic forgetting が起きていることがわかります.タスク A の正答率は 95 %から 20 % まで,タスク B の正答率は 95% から 60 % まで落ちてしまっています.

では,EWC 法を用いて学習した場合の結果を重ねて表示してみます.

catastrophic forgetting を抑制できていることが読み取れます.タスク A の正答率は 70 % まで,タスク B の正答率は 80 % まで,忘却を抑制できています.

続いて,EWC loss の寄与をコントロールすることで忘却の程度がどのように変化するのかを見ていきたいと思います.

前節で導いた損失関数は,通常の学習のための項と忘却を防ぐための正則化項(EWC loss)から構成されていました.

第二項の λ は,EWC loss の大きさを調節するハイパーパラメータでした.そこでこの λ の大きさを様々に変えて学習をし,EWC loss が忘却とどのように関連するか定量的に調べました.

その結果がこちらになります.

色の違いにより,λ の大きさの違いを表しています.

この結果で注目すべき点は2つです.一つ目は λ が大きいほど忘却が抑制されるという点です.

ここから,確かに EWC loss が忘却の抑制に働いているということがわかります.

二つ目は λ が大きいほど新しいタスクの学習が抑制されるという点です.タスク B およびタスク C の学習曲線に注目すると,λ が大きいと正答率が上がらず低いままになっていることが読み取れます.

これは EWC loss が学習パラメータを,前回のタスクの損失関数の極小点回りに留めようとする働きを持っていることから理解できます.パラメータが前回の極小点に近くに束縛され過ぎてしまって,新しいタスクの学習が進められないためと考えられます.

以上の結果をまとめると

  • EWC 法により catastrophic forgetting を防ぐことができる.
  • 忘却と新しいタスクの学習の間にはトレードオフが存在し,その関係は λ の大小によって調整される.

となります.

3.2.実際の企業データ

ではこの結果を踏まえて,実際の企業データを用いた学習を行った結果を述べていきます.

まずはデータセットと問題設定についてです.今回用いたチャットボットの学習データは,質問と それに対してあらかじめ用意された返答の対応表になっています.

これらの質問データは一定期間で区切られてバージョン管理がなされます.今回の実験ではクラスの数や内容に変化がなく,学習用データの新規追加のみがなされている区間を抜き出しました.その結果,3つのデータセットが得られました.

先ほどの問題設定とは異なり,今回の問題では単純にデータが増加していくだけという状況になっています.そこで今回はすべてのデータを利用して continual learning を行っていくのではなく,増分に対してのみ学習を進めるという continual learning を行いました(これにより当初の目的である計算資源の節約が期待できます).

それでは3つのデータセットそれぞれに対して学習を行った結果を順番にお見せしていきます.

<1つ目>

初めに EWC 法を用いなかった場合の結果です.

明瞭なcatastrophic forgetting が観測されました.ここで,タスク数が3つまでしかないのは,メモリーエラーによりここまでしか学習が進められなかったためです.以降のデータセットについても同様です.

続いて EWC 法を用いた場合です.

EWC 法によって忘却が抑制できています.新タスクの学習のトレードオフも観察でき,結果から λ=10 程度が適切だとわかりました.

<2つ目>

同様に EWC 法なしの結果からお見せします.

ここで,過去のタスクを思い出すという現象が観察されました.この現象については原因を調査しましたが不明のままでした.

続いて EWC 法を用いた場合です.

今回のデータセットでは λ=0 以外では catastrophic forgetting を防ぐことができていました.

<3つ目>

EWC 法なしの結果です.

こちらのデータセットでも過去のタスクを思い出すという現象を観測しました.

続いて EWC 法を用いた場合です.

多くの λ について実験を行いましたが,すべてのタスクに関して高い正答率を出せるような最適な λ の値は見つけられませんでした

以上の結果から,次のことがわかりました.

  • 過去のタスクを思い出すという現象が見られた(原因は不明).
  • EWC loss の係数 λ の最適な調節はデータセットによりまちまちである.

4.考察と課題

前節の結果を踏まえ,課題を簡単に考察していきます.

まず,livedoor ニュースコーパスデータ,実際の企業データの学習に共通して見られたのが,EWC loss 強度の調整パラメータである λ による学習の振る舞いの変化です.大まかな振る舞いは下記の表のようになります.

しかしながら,3.2. の実データに対する実験から分かるように,両者のトレードオフを最適に保つハイパーパラメータ λ の値はデータセットによりまちまちであり,一貫した値の定め方についてはまだ知見がありません.そのためハイパーパラメータの調節は実験的に行っていくしかなく,結果的に計算資源の節約が難しいです.

また精度について,完全に初めから学習した場合と比べるとやや低く改善の必要性があります.

最後に過去のタスクを思い出すという現象については,原因を突き止めて対処を行い,continual learning のみにフォーカスした検証ができるようにすることが必要です.

5.まとめと今後の展望

以上のインターンの成果をまとめます.

  • catastrophic forgetting を防ぐ continual learning の実現のため,EWC 法を用いて実験を行なった.
  • EWC 法により catastrophic forgetting が防げることを確認できた.
  • EWC loss の係数 λ により,過去のタスクの忘却と新しいタスクの学習のトレードオフが調節されることが明らかになった.
  • EWC loss の係数 λ の最適な調節はデータセットによって異なることがわかった.

今後の展望としては,EWC loss の係数 λ の定め方を詳しく調べていくことが挙げられます.

また,本インターンでは取り扱わなかった問題として,クラス数の変化をも考慮した continual learning があります.実際の状況では,新たな質問の追加や古い質問の削除などにより返答パターンが増減することが考えられます.これに対しては,次のような手法が提案されています.

論文:https://arxiv.org/abs/1807.09536

さらに,モデルの内部パラメータの変化を調査することで,EWC法の挙動の理解につながると考えています.本文中では紹介できませんでしたが,すでにいくつかの実験が行われており,現在進行形で取り組んでいる課題になります.

以上で本記事の内容は終了です.最後までお読みいただき,ありがとうございました!

謝辞

今回のインターンは東京大学工学部計数工学科4年の江崎さん及び東京大学工学部物理工学科4年の松山さんと共に3人で行いました.また,カラクリの皆様には大変お世話になりました.経験のない自分たちでもここまでできたのは,プログラミングの作法,環境構築,機械学習の知識やノウハウなど,たくさんのことを懇切丁寧に教えてくださったおかげだと思います.改めて,ありがとうございました!

東京大学大学院工学系研究科物理工学専攻修士1年 恒川

脚注

[1]: online learning, transfer learning, incremental learning なども近い意味で用いられます.

[2]: 直訳すると「弾性的重み固定化」.神経科学におけるシナプスの固定化からアイデアを得たようです.

--

--