16 生成AIの活用
16.1 生成AIとは
生成AI(generative artificial intelligence)とは,生成モデルを用いて,テキスト,画像,音声などのコンテンツを自動生成する人工知能の一種である.生成モデル(generative model)は,大量のデータを学習し,与えられた入力に対して新しいデータを生成する.
16.1.1 チャットボット
2022年11月にChatGPTが公開されたことで,生成AIは急速に普及し,個人や企業,研究機関などで広く利用されるようになった.これに続き,Microsoft Copilot,Claude,Geminiなど多くの生成AIが登場している.
チャットボットは,生成AIの代表的な応用例である.以下の表は,代表的なチャットボットを示している.
| チャットボット | 開発元 | 初版 |
|---|---|---|
| ChatGPT | OpenAI | 2022年11月 |
| Microsoft Copilot | Microsoft | 2023年2月 |
| Claude | Anthropic | 2023年3月 |
| Gemini | Google AI | 2023年3月 |
※ Microsoft Copilotの初版は,Bing Chat(2023年2月公開)を起点としている.
GPT(Generative Pre-trained Transformer)は,OpenAIが開発した大規模言語モデルのシリーズである.GPT-1は,2018年に発表された論文「Improving Language Understanding by Generative Pre-Training」で紹介された.ChatGPTの公開当初はGPT-3.5系の大規模言語モデルが用いられた.
16.1.2 生成AIの分類
生成AIは、出力の形式に基づいて以下のように分類できる。
- テキスト生成
- 画像生成
- 音声生成
- 動画生成
また,入力と出力の形式によって以下のように分類できる。
- text-to-text
- text-to-image
- image-to-image
- image-to-text
- image-to-video
- video-to-video
さらに,マルチモーダルモデル(multimodal model)は,テキスト,画像,音声,動画などの複数の形式のデータを入力として受け取り,多様な形式のデータを出力する生成AIである.
生成AIを適切に活用することで,日常生活,ビジネス,研究,教育などの様々な場面で作業の効率化が期待できる.
16.1.3 生成AIの限界と注意点
生成AIは便利だが,次のような限界がある.
- ハルシネーション(もっともらしいが誤った情報)を出力することがある
- 最新情報や専門情報が不正確な場合がある
- 計算や引用,出典提示を誤ることがある
そのため,生成AIの回答はそのまま提出・利用せず,必ず信頼できる資料で検証することが重要である.
16.2 テキストを生成してみよう
テキスト生成は,生成AIの中でもよく利用されている分野である.テキスト生成の応用例としては,以下のようなものが挙げられる.
- 要約生成
- 文章生成
- 質問応答
- 翻訳
- データ分析
- プログラム生成
英語アルファベットの26文字と空白文字からなる \(n\) 文字の文字列を生成する場合,\(27^{n}\) 通りの組み合わせが考えられる.例えば,長さ100の文字列を生成する場合,\(27^{100}\) 通りの組み合わせが存在し,このうち意味のある文章は極めて少ない.
無限の猿定理(infinite monkey theorem)とは,無限の時間があれば,猿がランダムにタイプライターを叩いていると,シェイクスピアの作品などの意味のある文章を生成することができるという定理である.この定理は,生成AIが意味のあるテキストを生成することがいかに難しいかを示す例としてよく引用される.
キーボードのキーが 50 個あると仮定する.「banana」という単語を生成する確率は
\[ \left(\frac{1}{50}\right)^{6} = \frac{1}{15,625,000,000} \]
である.
練習問題
16.3 プロンプトエンジニアリング
生成AIの分野において,プロンプト(prompt)とは,生成AIに与える入力データのことを指す.生成AIの回答は,プロンプトによって大きく異なるため,プロンプトの設定が重要である.プロンプトエンジニアリング(prompt engineering)とは,適切なプロンプトを設定する技術であり,言語モデルの性能を向上させるための重要な手法である.
プロンプトエンジニアリングに関するサイト
ここでは,大規模言語モデルからより良い出力を得るためのプロンプトエンジニアリングの手法を紹介する.
16.3.1 具体的な指示を書く
生成AIに与えるプロンプトは,明確で具体的な指示を含むことが重要である.指示が曖昧だと,望ましい出力を得ることが難しくなる.
- 悪い例:「プロンプトエンジニアリングについて説明してください。」
- 良い例:「大学一年生向けにプロンプトエンジニアリングの概念を2~3文で説明してください。」
「プロンプトエンジニアリングについて説明してください。」と聞くと,生成AIは一般的な説明を行うが,どのレベルの説明を求めているのかが不明確である.
- 悪い例:「アメリカ合衆国財務長官の名前は何ですか?」
- 良い例:「第1代アメリカ合衆国財務長官の名前は何ですか?在任期間も教えてください。」
「アメリカ合衆国財務長官の名前は何ですか?」と聞くと,どの時代の財務長官の名前を求めているのかが不明確である.
- 悪い例:「二乗を計算するプログラムを書いてください。」
- 良い例:「Pythonで整数の二乗を計算するプログラムを書いてください。ユーザーから数値を入力できるようにしてください。なお,負の数値が入力された場合は,エラーメッセージを表示してください。」
「二乗を計算するプログラムを書いてください。」と聞くと,どのプログラミング言語で書くのか,ユーザーから数値を入力できるようにするのか,負の数値が入力された場合の処理はどうするのかなどが不明確である.
考えてみよう
生成AIがプログラムを生成できるから,大学でプログラミングを学ばなくても良いのではないか?
16.3.2 生成AIに役割を与える
生成AIには,特定の役割を与えることで,その役割に応じた出力を得ることができる.
- 例:「あなたは現代詩人です。どのような質問にも、現代詩のスタイルで回答してください。説明や補足は不要です。口語表現ではなく、美しい日本語を用いてください。プログラミングの再帰の概念について説明してください。」
- 例:「あなたはお笑い芸人です。どのような質問にも、お笑いのスタイルで回答してください。大学一年生向けにプロンプトエンジニアリングの概念を2~3文で説明してください。」
16.3.3 例文を使用する
的確なプロンプトを設定することが難しい場合,例文を使用することで,生成AIに適切な出力を生成させることができる.この手法をFew-shot promptingと呼ぶ.
以下の例では,文を肯定的,中立的,否定的に分類するプロンプトを示している.
次の文を「肯定的」「中立的」「否定的」のいずれか1語だけで分類してください.
これはすごい.//肯定的
休暇はまずまずでした.//中立的
昨日の会議はつまらなかった.//否定的
今日の講義は面白かった.//16.3.4 記号を使用する
ChatGPTなどの生成AIは,Markdown,LaTeXの書式を理解することができる.これらの記号を使用することで,生成AIがプロンプトを理解しやすくなる.特に,LaTeXの書式を使用することで,数式を含むプロンプトを生成AIに与えることができる.
LaTeXの書式を用いて,数式をプロンプトに含めることもできる.大学の数学の講義では,難解な数式を生成AIに説明させることができる.
下の例では,数学問題を解決するPythonプログラムを生成AIに作成させるプロンプトを示している.
# 問題文
円の面積$A$は,次の式で与えられる:
$$A = \pi r^2$$
ここで:
- $A$は面積である.
- $r$は円の半径である.
## 指示
1. 半径が与えられたときに円の面積を計算するPythonプログラムを書いてください.
2. 半径が5単位の円でプログラムをテストしてください.16.4 様々な生成AI
- 画像生成
- 音声生成
- 動画生成
- Coding Assistant
- アプリ生成
16.5 大学での活用
授業や課題で生成AIを利用するときは,次の点に注意する.
- 個人情報,成績情報,未公開データなどの機密情報を入力しない
- 生成AIの回答は必ず複数の情報源で検証する
- レポートや課題では,授業の方針に従って生成AIの利用有無を明記する
- 最終的な内容の責任は提出者本人が持つ
16.6 Google NotebookLM
Google NotebookLMは,PDFやWebサイトなどのソースをアップロードして,これらのソースをもとに質問に答えることができる生成AIである.
16.6.1 使用例
- 論文や教科書を NotebookLM にアップロードし,不明な点を質問する.
- Mind Map を作成し,教科書の内容を整理する.
- スライド,レポート,Podcast などを生成する.
- Webサイト,YouTube などをソースにして,情報を整理する.
16.7 GitHub Copilot
- コード補完
- チャットによる質問応答
- Agentによるタスク実行
- 数学証明: Terence Tao - Machine-Assisted Proofs
16.7.1 使用例
- コードの生成
- コードの説明
- デバッグ
- コメントの生成
- リファクタリング
16.8 参考情報
- 大学・高専における生成AIの教学面の取扱いについて,文部科学省
- AIに関する暫定的な論点整理,内閣府AI戦略会議
- 生成AIに関する注意点,大阪大学
- 生成AIの利用ガイドライン,日本ディープラーニング協会
- What are the best AI tools for research? Nature’s guide
- DeepSeek-V3
- lerobot
- 高等学校情報科「情報Ⅱ」教員研修用教材(本編)