Dynamic few-shot promptingを用いた要約タスクをwatsonxでやってみた

# はじめに
最近LLMの話題をよく耳にするので、私も色々実験してみたいと思いました。

GPT-4をはじめとしたLLMの精度には驚かされますが、まだまだ嘘の情報を吐き出したり（ハルシネーション）、文法が間違っていたりと課題があるために、「どのように上手くLLMを使うか」に焦点を当てたプロンプトエンジニアリングという分野が最近たくさんの技術者によって研究されています。
特に、few-shot promptingはプロンプトの中でfew-shotと呼ばれる（質問と）回答の例を与えてあげることでLLMの出力をユーザーの欲しい回答により近づけるアプローチであり、回答の質向上が期待され注目を集めてきました。これを派生させ、通常人間が手動でfew-shotを作ってプロンプトに与えるところをプロンプトに与える質問から自動でfew-shotを作成してくれるDynamic few-shot promptingという手法もあるそうです。


この記事では、2023年5月に発表されたIBM社のwatsonx.aiにて文書要約タスクを実行し、Dynamic few-shot promptingによってどのような解答が生成されるかを実験してみました。

# Dynamic few-shot promptingについて
再掲ですが、通常のfew-shot promptingではfew-shotを人間が手動で作成するのに対し、Dynamic few-shot promptingではプロンプトに与える質問から動的なfew-shotを自動で作成します。
[公式ドキュメント](https://python.langchain.com/docs/modules/model_io/prompts/few_shot_examples_chat)を参考にすると、RAG（Retrieval-Augmented Generation）のようなアーキテクチャによって実現ができそうです。
RAGでは**質問文に類似した情報**を情報源であるベクトルDBから取得しプロンプトに与えますが、Dynamic few-shot promptingでは**質問文に類似した質問文**を質問と回答のセットが格納されたベクトルDBから取得します。


# 実験概要
watsonx.ai上でDynamic few-shot promptingを用いた日本語と英語の文書要約タスクを実行します。
一般にLLMにおける要約タスクでは生成された要約が要約として不十分であったり、言語の文法が誤っているといった課題があります。そこでfew-shotとして文書とその要約例をお手本として見せてあげることで要約精度の向上や文法の改善などが期待されます。そのfew-shotを今回の実験では質問文に合わせて自動で取得してみます。
この実験では、watsonx.ai上で利用可能な3つのLLMモデルに対して、Dynamic few-shot promptingを用いた文書要約タスクにおいてどのような解答が生成されるかを確認し、精度評価を行うことを目的とします。

# 実験設定
### アーキテクチャ
Dynamic few-shot promptingを実行するための環境を以下図に従って準備します。

![スクリーンショット 2024-01-05 17.13.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352082/a85ba8c7-c7e3-0cb9-abfd-4be6c68f0e39.png)

（準備）検索用の文書とその要約文のデータセットを用意し、ベクトルDBに格納しておきます。
1. 要約したい文書（質問文書）に類似する文書をベクトルDBから検索します。この際、質問文書と同じ言語の文書を取得するよう設定をします。
2. 質問文書に類似する文書（文書例）とその要約例を1組取得し、プロンプトに記載します。プロンプトは質問文書と同じ言語で作成します。
3. プロンプトをLLMモデルに入力します。
4. LLMからの出力結果を回答とします。今回の実験では、この回答を人間が主観で評価します。

この手順を、watsonxで利用可能な3つのLLMモデルに対して日本語と英語のそれぞれ10問ずつ行います。


### データセット
英語のデータセットは[CNN/Daily Mailの新聞記事](https://huggingface.co/datasets/ZhongshengWang/Alpaca-cnn-dailymail)を、日本語データセットは[BBC News Japanの記事](https://github.com/csebuetnlp/xl-sum#datasets)を用いました。それぞれに対して、検索用の文書例はtestデータから1000件を、実験用の質問文書はvalidデータから10件を使用しました。
日本語のデータセットには、例えばこのような文章と要約が入っています。
```:文書例
首都リヤドのマクドナルドの店内には、女性や家族連れの客と、男性客を隔てる黄色い仕切りが置かれている。
サウジアラビアの飲食店では従来、家族連れや女性客専用の入り口と、男性客専用の入り口を設置する必要があった。
しかし実際には、多くのレストランやカフェなどは、密かにこうした規制を順守しなくなっていた。 
地方自治体当局は9日、飲食店では今後、こうした性別ごとの入り口の設置が不要になると発表。
設置するかしないかは店側に委ねるという。
解禁と抑圧と サウジアラビアでは今年8月、女性が男性の許可なく海外旅行できるようになった。2018年6月には、女性の自動車の運転が解禁された。 
一方で、活動家は、依然として女性に対して差別的な法律はいくつもあると主張している。
こうした一連の抜本的社会改革では、反対意見の取り締まりが強化されてきた。実際に、複数の著名な女性人権活動家が逮捕されている。
2017年に皇太子に昇格して以降、ムハンマド・ビン・サルマン皇太子はきわめて保守的なサウジアラビア社会を変えるための取り組みを重ねてきた。
サルマン皇太子による社会改革には、国際社会から称賛が集まったものの、改革には抑圧の波が伴っていた。
2018年10月には政府に批判的だったサウジアラビア人記者ジャマル・カショジ氏が、トルコ・イスタンブールのサウジアラビア総領事館で殺害された。
これには、国連の専門家が「超法規的処刑」だと非難するなど、激しい国際的批判が巻き起こった。
国連の特別報告者は今年6月、カショジ氏殺害について、サルマン皇太子と政府高官が関わっていた証拠があると発表している。
カショジ記者殺害から1年、今も正義を求める声 対照的に、アメリカのドナルド・トランプ大統領をはじめ、複数の主要国首脳は、サウジアラビア政府を支持し続けている。
（英語記事 Saudi Arabia ends restaurant segregation ）
```

```:要約例
サウジアラビア政府は8日、女性が家族以外の男性と同席しないよう、飲食店に義務付けていた男女別々の入り口を廃止すると発表した。
```



### プロンプト
プロンプトの指示文は以下のように設定しました。[質問文書]に要約したい文書をユーザーが入力し、[文書例]と[要約例]にはベクトルDBから取得した文書例とその要約が挿入されます。
```:日本語文書
以下の例に従って、最後の文章を要約してください。
(例)
[文書例]
答え : [要約例]
(例 終了)

それでは、次の文章を要約してください。
[質問文書]
答え :
```

```:英語文書
I will ask you to summarize the text. Summarize the last sentence using the example below.
(example1)
[文書例]
answer : [要約例]
(example1 end)

Now, please summarize the following text.
[質問文書]
answer : 
```


### システム詳細
用いたemdedding modelやDB、LLMモデルの詳細は以下です。
- embedding model
    - 英語：paraphrase-multilingual-mpnet-base-v2
    - 日本語：intfloat/multilingual-e5-large
- ベクトルDB
    - ChromaDB
- LLMモデル
    - granite-13b-instruct-v1（IBM）
    - flan-ul2-20b（Google）
    - llama-2-70b-chat（Meta）

embedding modelはpythonのsentence transformerライブラリから持ってきました。
[embedding modelがたくさん載っているURL](https://huggingface.co/models?sort=likes&search=multilingual)

### 評価
以上の実験設定にて、回答を評価します。
文書要約の評価指標は様々ありますが、今回は人間の目線で評価することを重視し「正確性」と「読みやすさ」を人手で4段階に評価しモデル毎の平均値を算出、さらに実行時間の平均時間を計測しました。評価の詳細は以下に示します。

>正確性 (Correctness)
>
>0点: 作成された要約が、元の文章と完全に異なっている。（何も言及していないかったり、完全に反対のことを言っている）
>
>1点:作成された要約が、元の文章とある程度の関連性を示しており、一側面を捉えている。
>
>2点:作成された要約は、元の文章とほとんど関連があるが、1 つの重要な側面が欠落しているか、異なっている。
>
>3点:作成され要約が、元の文章の主要な側面を見逃していない
>
>読みやすさ (Readability)
>
>0点:作成された要約が、完全に読めない。繰り返し、読みにくい記号、意味のある情報がない。
>
>1点:作成された要約が、わずかに読みやすい。 無関係な記号や単語の繰り返しがあるものの、いくつかの側面をカバーする意味のある文章を大まかに形成できている。
>
>2点:作成された要約が、ほとんど読みやすい。ただし、読みやすさに影響を与えている部分がある。無関係な部分の言及、単語の繰り返し。
>
>3点:作成された要約が、完全に読みやすい。読みやすさに影響を与える部分がない。


# 実験結果

### 英語文書の結果
||正確性|読みやすさ|平均実行時間|
|:---:|:---:|:---:|:---:|
|granite-13b-instruct-v1|1.7|2.3|4.54(s)|
|llama-2-70b-chat|2.5|2.7|6.92(s)|
|flan-ul2-20b|1.6|2.9|2.01(s)|

すべてのモデルが要約としてほとんど適切な文章を回答してくれました。
llama2に関しては正確性と読みやすさともに点数が高いですが、モデルサイズか大きいため実行時間がやや大きいように感じます。flan-ul2はgraniteよりもモデルサイズが小さいですが、実行時間はgraniteより早くまた点数も同程度以上の結果となりました。
また、graniteに関しては
```:graniteの回答例
 Ferguson is a microcosm of a much larger problem in America .The shooting of two police officers in the town has inflamed tensions that have been simmering for some time .
(example1 end)
```
の最後の (example1 end) のように、プロンプト文章の名残が残ってしまう回答がややみられたために読みやすさが他のモデルに比べて低くなっています。

### 日本語文書の結果
||正確性|読みやすさ|平均実行時間|
|:---:|:---:|:---:|:---:|
|granite-13b-instruct-v1|1.6|2.3|4.27(s)|
|llama-2-70b-chat|2.6|3|12.16(s)|
|flan-ul2-20b|0|0|13.54(s)|

こちらもllama2が正確性と読みやすさともに非常に点数が高いです。一方で、実行時間に関しては　graniteがダントツで速い結果となりました。
flan-ul2については、すべての回答が空白か以下のような謎の文章となったためにすべての回答が0点となりました。
```:flan-ul2の回答例
251()251()
```
flan-ul2に関しては日本語のデータセットを用いた学習をしていないモデルだそうなので納得の結果ですが、モデルサイズがllama2より小さいのに実行時間が長くかかっているのが気になります。


# 結論
今回はwatsonx.ai上で利用できるLLMモデルを用いて、Dynamic few-shot promptingによる文書要約タスクを実行しました。
結果として、英語の要約タスクにおいてはすべてのモデルがほとんど適切な要約文章を回答してくれました。graniteは日本語タスクにおいても英語と同等の実行時間、精度を出し、llama2は日本語タスクの方が時間は倍増しますが精度は英語タスクと同等またはそれ以上でした。flan-ul2は英語タスクにおいて最速の実行時間となりました。
また3つのモデルを比較すると、回答精度の面ではllama2が高い評価となりました。

ただ、今回の実験ではすべてのモデルに対して同じ指示文を与えましたが、モデルによってモデルが理解しやすいプロンプトもあるようなので、実用の際には各モデルについて十分に調査した後にモデルに適切なプロンプトを作成することが求められると感じています。
また、今回はDynamic few-shot promptingを試してみたという実験でしたが、この有用性についてはfew-shotを与えないprompting、従来のfew-shot promptingとの精度の比較が必要であり、これは今後の課題とさせていただきます。