生成AIの仕組みを一緒に勉強する!中身を理解して、有益な回答を引き出そう

龍野プログラミングクラブはJR本竜野駅2階多目的室(上の写真)で定期開催しています。

タッチタイピングの練習とアルゴロジック

わたしたちが運営するクラブでは、かならずタッチタイピングを練習します。キーを打つことを、息をするようにできるまで練習します。

タッチタイピングで使うツールは、無料タイピングと寿司打と右手専用タイピングです。

無料タイピング https://manabi.benesse.ne.jp/gakushu/typing

寿司打 https://sushida.net/

右手専用タイピング https://typing.twi1.me/game/15206

今回は無料タイピングと、Popタイピングで練習してみました。わたしも一緒にPopタイピングをプレイしてみて、高いスコアの出し方を検証しました。答えは以下。

少々遅くても、正確にタイピングしたほうが高いスコアが出る

要は、タッチタイピングができなくても、間違えずに入力したら高スコアが出ます。

Popタイピングは、爽快感があって、なかなか楽しいゲームなのです。しかし、このゲーム仕様は、正しく使わないと間違った山を登ってしまうなあと思いました。

生成AI(大規模言語モデル)の原理について学ぼう

ちまたでは、生成AIがまるで人間のようにいろんなことを回答してくれるような情報が溢れています。これってどこまで本当なのでしょうか?

生成AIの原理を知ることによって、正しく生成AIとお付き合いできます。今からの世の中は、「生成AIとのお付き合いをしない」という選択肢はなさそうです。ならば、正しく理解して正しく使いましょう。

ここで解説するのは、大規模言語モデルだけです。いわゆるGhatGPTやClaudeといった、文字で指示して、文字で回答が返ってくるタイプの生成AIのことです。

この手の大規模言語モデルがやっているのは、「次に来る言葉の予測」です。

例えば、以下の文章の「」に入る言葉は何でしょうか。

わたしは、りんごが好きです。わたしは、バナナも「」。

これは、「好きです」しか入らないはずです。では、以下の文章ならどうでしょうか。

わたしは、りんごが好きです。わたしは、バナナが「」。

これだと、「好きです」も「嫌いです」もどちらでも良さそうです。

確率的な話を言うと、前者だと「好きです」100%、後者だと「好きです」35%で「嫌いです」65%くらいかな。根拠はないので、そんなもんかと一旦飲み込んでください。

まさしくこの確率の高い文字列を選びながら出力しているのが、大規模言語モデルの生成AIです。じゃあ、どうやってその確率を決めているかというと、べらぼうにたくさんの文章を学習したのです。とにかくたくさんの日本語を学習させたら、ある程度規則性があり、それをモデルとして固定します。

これって、わたしたちが言葉を覚えるのと同じですよね。生まれてから、たくさんの言葉を浴びてきて、その中の規則性を体感として記憶しています。無意識でやってきたとこと、プログラムで書いたのが生成AIです。

わたしたちの学習過程とおなじことをやっているわけだから、生成AIが人間っぽいのはあたりまえです。ちなみに、学習するための仕組みを「ニューロネットワーク」といい、わたしたちの脳を模して作ったものです。

ニューロネットワーク自体は、特に新しい技術ではなく、わたしが二十歳そこそこの2000年代初頭には学校で教わりました。大嫌いだったハゲの担任が解説してくれたのをよく覚えています。

あれから20年が経って、いよいよ実用に耐えるAIが出てきたという感じです。

理解したら使おう

机上で勉強した内容を、実際に生成AIに聞いてみます。

わたしは、はじめて自分で言ったことをAIに聞いてみたので、ドキドキです。もし、ぜんぜん違う答えだったらどうしよう。

はい、理屈通りの動きをしてくれました。

固有名詞はハルシネーションを起こしやすい

生成AIを使う上での一番の注意点は、ハルシネーションを起こすことです。ハルシネーションとは、「もっともらしい嘘をつく」という現象をいいます。

一般論を聞く場合は、あまり問題になることはありません。しかし、固有名詞について生成AIに聞くとハルシネーションを連発します。

そこで実験します。わたしの名前「中原崇宏」について、生成AIに聞いてみました。

言語モデル回答の概要
ChatGPT情報がない
Claude情報がない
Gemini全く架空の人物について詳細に提示
Perplexity概ね正しいわたしの公開情報を提示

※個人情報を生成AIに食わすのはおすすめしません。やるなら自己責任です。氏名だけなら、本の著者や芸能人について知りたいときにも使うので、大きな問題にはならないと判断しています。

結果は、表の通り、めちゃくちゃです。Geminiなんかひどいものです。

このような結果になるのは、わたしの名前に関する情報が公(WEB上)に少ないからです。学習した情報量が少ないので、次に来る言葉を予測しようとしても、その予測が外れてしまいます。

ということで、生成AIが固有名詞を出してきたら、ハルシネーションを疑ってください

レースゲームを作ってみる

生成AIの特徴を知ったところで、今度はプログラミングをしてみます。

レースゲームを作ってみたいということなので、簡単なプロンプトを入力します。さて、その出来上がりは、全く面白くないものでした。

では、プロンプトを改良して、もう少し詳しく書いてみたら? 2回目も残念、うまくいきませんでした。

ここで時間切れ。次回レースゲームを作り込んでみます。