これはNAISTアドベントカレンダー2022 21日目の投稿です。

先日HuggingFace Spacesにて,3つのAIによる決議システム「NAGI System」を公開しました.その仕組みを簡単に紹介します.

仕組み

promptという手法を使っています.近年の機械学習モデルを特定のタスクに当てるとなると,1. 事前学習と2. fine-tuningの二つのステップが必要です.一方で,promptというのは,1. は同じですが,その次にfine-tuningを行いません.じゃあどうしているかというと,事前学習のタスクに近い形でタスク情報を入力してやれば,fine-tuningせずとも,特定タスクを解く性能は持ってるよね,といった感じで解いています.
具体的には,次のようなタスクを解いています.

BERTの場合

BERTは事前学習で入力文章の[MASK]部分を埋めるタスクを解いています.
なので,promptでは2022/12/19時点で以下のような入力をBERTに与えています.

1
"MELCHIORは科学者としての人格を持っています。人間とMELCHIORの対話です。人間「"+sue+"。承認 か 否定 のどちらかで答えてください。」"+"MELCHIOR 「[MASK]」"

ソースコード

GPT2の場合

GPT2は事前学習で入力文章の次単語を予測するタスクを解いています.
なので,promptでは2022/12/19時点で以下のような入力をGPT2に与えています.

1
'CASPERは女としての人格を持っています。人間とCASPERの対話です。人間「'+sue+'。承認 か 否定 のどちらかで答えてください。」'+"CASPER 「"

ソースコード

mT5の場合可決割合の調節のためmBERTに変更

mT5は事前学習で<X><Y>でマスクされた文を予測するタスクを解いています.
なので,promptでは2022/12/19時点で以下のような入力をmT5に与えています.

‘BALTHASARは母としての人格としての人格を持っています。人間とBALTHASARの対話です。人間「’+sue+’。承認 か 否定 のどちらかで答えてください。」’+”BALTHASAR 「」”

ソースコード

出力に関して

もちろん,これらの回答が必ず「承認」か「否定」かになるわけではないです.そこで,「承認」のスコアと「否定」のスコアを比較して結果を出力しています.おそらくですが,「承認」と「否定」を事前学習で学習で対になるように学習できていないので,現状学習データに多く含まれていた「否定」が多く出る状況になっているのだと思います.

こういったことが簡単に実装できる,AIの民主化を大きく進めてくれたHuggingFace社には感謝しかないですね🤗

終わりに

近年のStable Diffusion関連の話題で聞いたことある単語が出てきたって人もいるのではないでしょうか.少しでもAI・機械学習分野の中身に興味を持っていただけたら幸いです!

参考文献

Pengfei Liu, Weizhe Yuan, Jinlan Fu, Zhengbao Jiang, Hiroaki Hayashi, and Graham Neubig. 2021. Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing.
https://arxiv.org/abs/2107.13586