はじめに
解かれたのかい?解かれないのかい?どっちなんだい? nikkieです。
Twitterのタイムラインで見かけた論文紹介から興味を持ち、論文を少し追ってみました。
記事にして、セーブポイントを作ります
目次
- はじめに
- 目次
- Is Information Extraction Solved by ChatGPT? (arXiv:2305.14450)
- 論文紹介の力を借りて追いかける
- 興味のあるNERについてデータセットを1つ確認(conll2003)
- 雑感:テストセット全数で最良のプロンプトを決めていいのかな?
- 終わりに
Is Information Extraction Solved by ChatGPT? (arXiv:2305.14450)
「ChatGPTによって、情報抽出(Information Extraction)タスクは解かれたのか?」というタイトル1。
続く4点(Performance、Evaluation Criteria、Robustness、Errors)について分析されます2。
実装はこちらにあります。
リポジトリに記載がありますが、実験に使ったデータはGoogleドライブで配布されています。
論文紹介の力を借りて追いかける
研究室で論文紹介しました.
— Shota KATO (@st_ktu) 2023年7月11日
論文紹介:ChatGPT で情報抽出タスクは解けるのか?Is information extraction solved by ChatGPT? An analysis of performance, evaluation criteria, robustness and errors https://t.co/k26LiKIwib
Is Information Extraction Solved by ChatGPT? への答えはNo3
- Information Extractionのタスク4つについて検証4
- 3つの手法を検証6(Micro F1=Accuracyを算出し、SOTAと比較)
- zero shot
- few shot + In-context learning (ICL)
- SOTAとは開きがあるが、最もよかった7
- few shot + Chain of Thought (COT)
- 各データセットのテストセット全数8を使用9
興味のあるNERについてデータセットを1つ確認(conll2003)
私の興味があるNER(固有表現認識)のデータセットには、フラットな(=固有表現に階層構造のない)NERのデータセットとしてconll2003がありました。
train / validation / testと分かれますが、このうちtestについてChatGPTに解かせて、手元のラベルと比較して性能を求めるわけですね。
今回の検証方法が興味深かったので、再現できるか試みています。
conll2003はhuggingface/datasetsで扱えるデータが存在します。
ところが、Googleドライブで共有されたデータと、huggingface/datasetsのデータはtestは完全に一致したんですが、trainとvalidationの数が一致しないんですね。
(エントリ執筆を機に見てみたらPaper with Codeとhuggingface/datasetsも数が一致してないぞ... なんだこれ)
huggingface/datasetsのほうが取り回しやすいので、ここの確認に時間を使ったのですが、揃わないものは仕方ないので若干の気持ち悪さを残しつつもtestセットでの検証に進もうと思います。
ライブラリopenai(async/awaitでリクエスト)とかLangChainとか使ったらいい感じにスクリプトが組めそうな気がする〜(またの機会をお楽しみに)
雑感:テストセット全数で最良のプロンプトを決めていいのかな?
再現の途中なので、理解度はまだまだ低いと思いますが、気になった点が1つ。
zero shotのプロンプトを5種類用意して、テストセット全数をChatGPTに固有表現抽出させ、Micro F1を算出して、最良のプロンプトを決めています。
最良のプロンプトを決める上でテストセット全数を使っているわけですが、そうすると汎化性能(未知のデータに対するモデルの予測性能)が分からないのではないか(Micro F1の値にバイアスがかかっている)と思うのです。
ハイパーパラメタを決めるのにテストセットを使ってしまったのと同じように汎化性能がわからないよねと懸念を持っています(プロンプトもデータから決めるならハイパーパラメタと言えるのではと考えています)。
最良のプロンプトを決めるのはvalidationセットになるんじゃないでしょうか。
手元で実装できたらこのあたりも考えたい事項です。
気になった背景としては、過去に論文を読むくらい興味を持った観点だからなのでした。
終わりに
論文「Is Information Extraction Solved by ChatGPT?」を読み始めました。
- ChatGPTに解かれたのか? ー答えはNo
- テストセット全数を使い、3種類のプロンプトを試して、性能検証する方法が興味深く、手元で再現実装に着手しました
- conll2003、データセットによって一致しないぞという深淵...
巨人の肩に乗れたので(実力以上に)サクサク読めるぞ!という感覚でした。
ありがとうございます、@st_ktuさん
手を動かしていくぞ〜!
- #NLP2023 緊急パネル #ChatGPTで自然言語処理は終わるのか のログ - Togetter を彷彿とさせますね↩
- AbstractやIntroductionでざっと掴めました↩
- これを示すのがTable 1です↩
- 3.1 Tasks↩
- 3.2 Datasets↩
- 3.3 Prompts↩
- Using few-shot ICL prompts generally leads to significant improvements, but still obviously lags behind SOTA results. (1 Introduction)↩
- テストセットを最大3000にしたと記述がありますが(3.4)、conll2003は全数(3000を少し上回る)送っていそうでした↩
- 3.4 Setup↩
- Appendix Cに詳しいです。またソースコードでは、NERのzero shotのプロンプト(5種類)がこちら:https://github.com/FreedomIntelligence/Evaluation-of-ChatGPT-on-Information-Extraction/blob/bda6894cffd041ff629ba1c2c9473e757ba217eb/1_NER/ner_test_with_api.py#L18-L37↩
- Googleドライブで配布されているdata.zipの中にありました↩