第0回 LLM(大規模言語モデル)の基本的な使い方
LLM(大規模言語モデル)とは
LLM(大規模言語モデル) は、人工知能(AI)の一種で、コンピュータが人間の言語を理解し(意味を捉え)、自然な文章を生成するための技術です。LLMは、与えられたキーワードや質問に対して適切な回答を生成したり、ある言語から別の言語への翻訳を行ったり、特定のテーマに基づいた創作文章を生成したりすることができます。LLMを用いると、ユーザーの意図を理解した返答が可能となり、文脈に応じた自然な対話が可能となります。LLMの利用は、教育、医療、ビジネスなど、様々な分野で進められています。 ただし、 ハルシネーション(もっともらしいウソを教えてくること)には十分な注意が必要です。
基本的には一語一語、次に来そうな語を予測して出力しているだけ
2024年10月時点では、GPTやGeminiをはじめ、一般に広く利用されているLLMのほぼ全てが Transformer という計算方法を用いています。
Transformer の図式的説明
上の動画で紹介されているデモサイト は、だれでもウェブブラウザで開いて動作を試すことができるようになっていて、Transformer の中身を図式的に観察し学ぶことができます。
このデモサイトを見てもわかりますが、基本的に Transformer は(他のLLM もですが)入力された文章に対して、その後に続けて書くとしたら何という言葉(トークンと呼ばれる単位。一つの単語など)が最もふさわしいかを一つ予想し、その予想をつけ加えた文章を新たな入力として、また次の言葉を予想する、という動作を繰り返し行うことで文章を生成しています。
The Full Story of Large Language Models and RLHF (LLMの動作原理が簡潔に説明されています)
(そんな単純な原理で、人間が書いたかのような自然な文章が生成されることは驚きです。もちろん、生成される文章が自然なものになるように様々な工夫がLLMには取り入れられていますが。)
ChatGPTやGeminiを標準のチャット画面で利用する
「ChatGPTやGeminiを使ったことがある」という意味では、(以下のような)ウェブやスマホアプリで使ったことがある方が多いののではないでしょうか。 (ChatGPTはOpenAIが提供するLLMです。GeminiはGoogleが提供するLLMです。)
もちろんウェブやスマホアプリでの利用でもChatGPTやGeminiの能力を十分に引き出すことは可能ですが、この記事の次回以降で紹介する、API経由での利用ができると、プロンプトを手入力したりコピペしたりして送信しなくても利用が可能になるので、プログラムの中からLLMの機能を利用したり、他のシステムとLLMを連携して動作させることができるなど、応用範囲が大幅に広がります。
でも今回はまず、ウェブやスマホアプリで構わないので、ChatGPTやGeminiの応答がどういうものかを見てみましょう。まだ使った経験がない方は、Gemini か ChatGPTの少なくともどちらかは使えるようにしてください。
次の資料を見ると、Gemini や ChatGPT を使う準備をすることが可能です。 なお、有料版 (Gemini Advanced や ChatGPT Plus) にはアップグレードしなくても大丈夫です。
LLMを使って現実のタスクを行ってみる
現実のタスクの例として、知識やスキルを学べているかをチェックするクイズ(小テスト)をLLMを使って生成することを試してみましょう。 授業や研修での学習成果を測るために、的確なクイズ問題を作成することは、骨の折れる作業ですが、LLMの助けを借りて行うと、かなり省力化でき、沢山のクイズを作ることもそれほど苦ではなくなります。
Gemini と ChatGPT のどちらでもいいので、 プロンプト(入力文字)として
〇〇についての4択問題を2問作成してください。
と書いて送信してください。(〇〇の箇所には何か好きな言葉を書いてください。)
クイズ問題2問が作成されましたか。例えば、以下のように表示されたのではないかと思います。
上の例の場合、ChatGPTでは、各問題の解き方についての解説は出力されませんでした。解説も生成してほしい場合、どのようにプロンプトを書けばいいでしょうか。
ChatGPTには、追加で
問題それぞれに解説も添えてください。
とプロンプトを送信してみました。実際の生成例は以下の通りです。
また、同じプロンプトを送信しても、問題の内容が毎回変わり、問題文の書式も一定でなく変化することがあります。 問題が毎回同じフォーマットで出力されるようにしたいのであれば、例えば、次のようなプロンプトを用いれば、望んだ出力が得られると思います。
あなたはオンラインテストの開発者です。
「〇〇の特徴について説明できる」の学習目標に到達しているかどうかを測定できる4択問題を2問作成してください。正解の選択肢も示してください。
各問題は、下の<問題フォーマット例>のようなフォーマットで書いてください。以下のフォーマット例の通り、選択肢ごとに改行してください。
<問題フォーマット例>
1. AI技術の基礎に対する理解とは別に、「教育・リテラシーの原則」で強調されるべきことはどれですか。
A) 国際コンセンサス
B) 格差と分断の防止
C) 自動化と安全性
D) データの有効利用
正解: B) 格差と分断の防止
解説: 教育・リテラシーの原則では、AIに関する知識と理解の平等な提供やリテラシー向上を通じて、格差と分断の予防が重要視される。
このようなプロンプトに対する生成の実例は、以下のようになります。
このようにして得られたクイズ問題を、オンラインテストのシステム(eラーニングシステムやGoogleフォームなど)に入力すれば、オンラインテストを作ることができます。 なお、問題の内容や正解が必ず正しく生成されるとは限らないので、人間がチェックして訂正する必要があることは覚えておいてください。
なお、この記事の4回目以降では、クイズ問題を手入力する手間も必要もなく、オンラインテストのシステムにインポートできるデータファイルも生成する方法について説明する予定です。
LLMに送信するプロンプトの書き方のノウハウ
このようにLLMツールを用いて希望通りの出力を得るには、プロンプトの書き方を工夫する必要があります。 プロンプトの書き方の工夫は、プロンプトエンジニアリングと呼ばれることもあり、色々な「技」が編み出されています。 例えば以下のサイトで、プロンプトの書き方のノウハウを知ることができます
各種Prompt Engineeringの日本語実例集(Qiita, 小川 雄太郎)
https://qiita.com/YutaroOgawa2/items/aca32f8fd7d551596cf8
Prompt Engineering Guide(DAIR.AI)
https://www.promptingguide.ai/jp