はじめに
生成AI、特にChatGPTのような大規模言語モデル(LLM)は、これまでのプログラミング学習のスタイルを大きく変えつつあります。
本記事では、Udemy講座「生成AIを活用したプログラミング学習の加速術 -AIサポートで効率的に習得するプログラミング言語-」の受講を通して得た知見をもとに、AIを活用した学習の進め方について、具体的に役に立つ考え方、プロンプト例とともに整理・解説していきます。
具体的な講座はこちら↓
生成AIを活用したプログラミング学習の加速術 -AIサポートで効率的に習得するプログラミング言語-
★★★★☆ 4.08 (263件の評価)
生成AIを有効活用するには、適切な「問い(プロンプト)」の設計が欠かせません。
そんな、LLMに聞くときに特に役に立つ、プロンプトの技法「Zero-Shot CoT」をご紹介します。
まず、順にご説明します。
プロンプトエンジニアリングにはいくつかテクニックがあります。
・Zero-Shot/Frew-Shot Prompting
→例示なし、もしくはいくつか例を示す
・Chain-of-Thought Prompting
→複数の中間的な推論ステップを介して複雑な推論を実現する
・Zero-Shot CoT
→Zero-Shot + Chain-of-Thought Promptingの組み合わせ。効果的で簡単!
プロンプトを投げるときに「回答はステップごとに出力して下さい。」とつけるだけです!
詳しく実例も交えながら、ご説明します。
1. Zero-Shot / Few-Shot Prompting
Zero-Shot Promptingは、具体例を提示せず、指示のみで回答させる方法です。
一方、Few-Shot Promptingは、複数の例を与えてから質問することで、回答の質を高めます。
Zero-Shotの例:
文章から温度を想像して下さい
退屈な漫才:
回答実例:ChatGPT
「退屈な漫才」という言葉から連想される「温度」は、非常に低め、具体的には 20〜30°C(摂氏)未満 の範囲が感覚的に当てはまります。これはもちろん実際の気温ではなく、感情的な熱量(温度)=盛り上がりや熱気のなさ を表す 比喩的な温度 です。
Few-Shotの例:
裸でバイクに乗る → 寒い
滝に打たれる → 寒い
こたつに入る → 温かい
退屈な漫才 は?
回答実例:ChatGPT
寒い
Zero-Shot Promptingは安直な聞き方、Few-Shot Promptingは具体的な聞き方になりますが、例をいくつかいれるには結構手間がかかります。
どちらを使うかは、例を使って回答の精度を上げるか、具体的に指示して回答の精度を上げるかは考えて、その時時に応じて使い分けるとよいです。
2. Chain-of-Thought Prompting(思考の連鎖)
複雑な問題には、解法のステップを明示させる「Chain-of-Thought(CoT)」が有効です。
答えを得られるまでの過程を示して上げる感じです。
CoTの例:
Q:次のグループ中にある奇数を足し合わせると、奇数と偶数どちらになりますか?
12,31,3,12,24,5,32
A:グループの中で奇数は[31,3,5]です。それらを足し合わせると39です。39は奇数なので答えは奇数です。
Q:次のグループ中にある奇数を足し合わせると、奇数と偶数どちらになりますか?
4,14,12,1,12,3,17
回答例:ChatGPT
グループ内の奇数を抽出します:
4, 14, 12, 1, 12, 3, 17
→ 奇数は [1, 3, 17]
合計:
1 + 3 + 17 = 21
21 は奇数なので、答えは奇数 です。
正しい回答を導きやすいですが、デメリットとして、質問と答えを作るのが大変です。
3. Zero-Shot CoT
Chain-of-Thought Promptingのデメリットを解消する一つの方策がZero-Shot CoTになります。
→ ステップを踏ませることで、回答の精度が上がるようになる。便利で簡単な方法。
例を与えずに「ステップで解説して」と促すことで、丁寧な説明が得られます。
例:
以下の質問に回答して下さい。回答はステップごとに出力して下さい。
Q:次のグループ中にある奇数を足し合わせると、奇数と偶数どちらになりますか?
12,31,3,12,24,5,32
回答例:ChatGPT
ステップ1:奇数と偶数を分類する
対象の数列:
12, 31, 3, 12, 24, 5, 32
偶数:
12, 12, 24, 32
奇数:
31, 3, 5
ステップ2:奇数を合計する
奇数の合計:
31 + 3 + 5 = 39
ステップ3:合計の奇数・偶数を判定する
39 は 奇数。
✅結論:奇数
奇数の合計は 39 なので、答えは奇数 です。
Zero-Shot CoTプログラミングに応用してみます。「回答はステップごとに出力して下さい。」とつけるだけで、具体的に回答してくれるようになります。
ぜひ以下の例を、実際に入力して、その威力を確認してみて下さい!
例:以下の質問に回答して下さい。回答はステップごとに出力して下さい。
Q:「クイックソート」でデータをソートできる理由について、Phtyonのコードを例にしておしえてください
A:
どうでしょう?回答の精度がかなり上がったと思いますし、途中の思考も確認できるので、もし間違いがあっても気が付きやすいです。
どうでしょう?一文つけるだけなので、めちゃくちゃ簡単ですよね!?
この聞き方は、プログラム学習をする際にとても有効です。
途中のロジックの積み上げ方も詳細に学習することができます!
おわりに
本記事が、読者の皆さまがAIを活用し、効率的にプログラミングを学ぶ助けとなれば幸いです。
コメント