Self-Critical Sequence Trainingを用いたChatbotを作った
内容
コード
スライド
概要
強化学習の他領域への応用に興味があり、NLPとの融合を試してみた。
ChatbotはPyTorchのチュートリアル(Chatbot Tutorial — PyTorch Tutorials 1.8.0 documentation)でも紹介されている、Cornell Movie-Dialogs Corpus & seq2seqモデルという簡単な設定で作成した。Botのインタフェースはpython-telegram-botを使用した。なお、このプロジェクトはスプリングセミナー2021:深層強化学習 | Deep Learning JP の最終課題として作成したものである。
seq2seqモデルを通常通りcross-entropy lossで学習した後、以下のように強化学習の問題としてとらえ直し、REINFORCEを発展させたSelf-Critical Sequence Training(SCST)という手法でfine-tuneした。
Agent: seq2seqモデルにおけるdecoder
Environment: ユーザーによって投げかけられるフレーズ
Action: 対応するフレーズ(reply)の生成
Reward: BLEUスコア (2つの系列の類似度を測る指標)
結果
詳しくはスライド参照。
test scoreは向上したが、汎化性能の向上は調べ切っていない。
Botの返答としては、fine-tuneにより疑問文への正しい形式への応答ができるようになり、コーパスのセリフをそのまま発しているような現象は見られなくなった(不自然な人物名・固有名詞が出てくるなど)。
参考文献
[1] Papineni, K., Roukos, S., Ward, T., & Zhu, W. (2002). Bleu: a Method for Automatic Evaluation of Machine Translation. ACL.
[2] S. J. Rennie, E. Marcheret, Y. Mroueh, J. Ross and V. Goel, "Self-Critical Sequence Training for Image Captioning," 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI, USA, 2017, pp. 1179-1195, doi: 10.1109/CVPR.2017.131.