4.2. 生成AIの活用#

4.2.1. 生成AIとは#

生成AI(generative artificial intelligence)とは,生成モデルを用いて,テキスト,画像,音声などのコンテンツを自動生成する人工知能の一種である.生成モデル(generative model)は,大量のデータを学習し,与えられた入力に対して新しいデータを生成する.

2022年11月にChatGPTが公開されたことで,生成AIは急速に普及し,個人や企業,研究機関などで広く利用されるようになった.これに続き,Microsoft Copilot,Claude,Geminiなど多くの生成AIが登場している.

チャットボット

開発元

初版

ChatGPT

OpenAI

2022年11月

Microsoft Copilot

Microsoft

2023年2月

Claude

Anthropic

2023年3月

Gemini

Google AI

2023年3月

Note

GPT(Generative Pre-trained Transformer)は,OpenAIが開発した大規模言語モデルのシリーズである.GPT-1は,2018年に発表された論文「Improving Language Understanding by Generative Pre-Training」で紹介された.ChatGPTの公開当初はGPT-3(Generative Pre-trained Transformer 3)という大規模言語モデルを用いていた.

4.2.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を活用することで,日常生活,ビジネス,研究,教育などの様々な場面で業務の効率化が可能となる.

4.2.3. テキストを生成してみよう#

テキスト生成は,生成AIの中でもよく利用されている分野である.テキスト生成の応用例としては,以下のようなものが挙げられる.

  • 要約生成

  • 文章生成

  • 質問応答

  • 翻訳

  • データ分析

  • プログラム生成

Note

テキスト生成の難しさ

英語アルファベットの26文字と空白文字からなる\(n\)文字の文章を生成する場合,\(27^{n}\)通りの組み合わせが考えられる.例えば,100文字の文章を生成する場合,\(27^{100}\)通りの組み合わせが存在し,このうち意味のある文章は極めて少ない.

練習問題

  • ChatGPTにアクセスし,チャットボットと会話してみよう.

  • Hello, world!と出力するC言語のプログラムをChatGPTに生成させ,OnlineGDBで実行してみよう.

  • 本日の東京の天気をChatGPTに尋ねてみよう.

4.2.4. プロンプトエンジニアリング#

生成AIの分野において,プロンプト(prompt)とは,生成AIに与える入力データのことを指す.生成AIの回答は,プロンプトによって大きく異なるため,プロンプトの設定が重要である.プロンプトエンジニアリング(prompt engineering)とは,適切なプロンプトを設定する技術であり,言語モデルの性能を向上させるための重要な手法である.

Note

プロンプトエンジニアリングに関するサイト

ここでは,大規模言語モデルからより良い出力を得るためのプロンプトエンジニアリングの手法を紹介する.

4.2.4.1. 具体的な指示を書く#

生成AIに与えるプロンプトは,明確で具体的な指示を含むことが重要である.指示が曖昧だと,望ましい出力を得ることが難しくなる.

「プロンプトエンジニアリングについて説明してください。」と聞くと,生成AIは一般的な説明を行うが,どのレベルの説明を求めているのかが不明確である.

  • 悪い例:「プロンプトエンジニアリングについて説明してください。」

  • 良い例:「大学一年生向けにプロンプトエンジニアリングの概念を2~3文で説明してください。」

「アメリカ合衆国財務長官の名前は何ですか?」と聞くと,どの時代の財務長官の名前を求めているのかが不明確である.

  • 悪い例:「アメリカ合衆国財務長官の名前は何ですか?」

  • 良い例:「第1代アメリカ合衆国財務長官の名前は何ですか?在任期間も教えてください。」

4.2.4.2. 生成AIに役割を与える#

生成AIには,特定の役割を与えることで,その役割に応じた出力を得ることができる.

  • :「あなたは現代詩人です。どのような質問にも、現代詩のスタイルで回答してください。説明や補足は不要です。口語表現ではなく、美しい日本語を用いてください。プログラミングの再帰の概念について説明してください。」

  • :「あなたはお笑い芸人です。どのような質問にも、お笑いのスタイルで回答してください。大学一年生向けにプロンプトエンジニアリングの概念を2~3文で説明してください。」

4.2.4.3. 例文を使用する#

的確なプロンプトを設定することが難しい場合,例文を使用することで,生成AIに適切な出力を生成させることができる.この手法をFew-shot promptingと呼ぶ.

以下の例では,文を肯定的,中立的,否定的に分類するプロンプトを示している.

これはすごい.//肯定的
休暇はまずまずでした.//中立的
昨日の会議はつまらなかった.//否定的
今日の講義は面白かった.//

4.2.4.4. 記号を使用する#

ChatGPTなどの生成AIは,Markdown,LaTeXの書式を理解することができる.これらの記号を使用することで,生成AIがプロンプトを理解しやすくなる.特に,LaTexの書式を使用することで,数式を含むプロンプトを生成AIに与えることができる.

Note

このページはMarkdownの記法を用いて作成されている.Markdownは,講義ノート,Webページ,プログラムのドキュメントなど,様々な場面で利用される軽量マークアップ言語である.興味のある方は,Markdown記法を学習してみると良い.

まず,よく使用されるMarkdownの記号を紹介する.

記号

説明

#

見出し(レベル1)

##

見出し(レベル2)

-

箇条書き

1.

番号付き箇条書き

**

太字

*

斜体

LaTeXの書式を用いて,数式をプロンプトに含めることもできる.大学の数学の講義では,難解な数式を生成AIに説明させることができる.

LaTeXの書式では,$で囲むことでインライン数式(inline equation)を記述することができる.例えば,$y = ax + b$は,\(y = ax + b\)と表示される.

$$で囲むことでディスプレイ数式(display equation)を記述することができる.例えば,$$y = ax + b$$は,

\[y = ax + b\]

と表示される.

下の例では,数学問題を解決するPythonプログラムを生成AIに作成させるプロンプトを示している.

# 問題文

円の面積$A$は,次の式で与えられる:

$$A = \pi r^2$$

ここで:
- $A$は面積である.
- $r$は円の半径である.

## 指示

1. 半径が与えられたときに円の面積を計算するPythonプログラムを書いてください.
2. 半径が5単位の円でプログラムをテストしてください.

4.2.5. 様々な生成AI#

4.2.6. 参考情報#