第1回で解説したように、LLMはもの知りでタフで賢く、仕事も速い社員となりえます。しかしあくまで「新入」社員であることには留意する必要があります。また、羨ましい長所を持っている半面、短所も多く持ち合わせています。本稿では、新刊『生成AI「戦力化」の教科書』から抜粋・再編集して、LLMがあくまで「新入社員」であることの意味と、LLMの持つ5つの限界について解説していきます。
LLMはなぜ「新入社員」なのか
さて、ここまでの知識量やタフネス、賢さなど素晴らしい性質を備えた上でなぜ活用が難しいのでしょうか。その要因が「新入社員」というキーワードです。
新しくあなたの会社に入社した方を想像してみてください。その日からいきなり最高のパフォーマンスを出せる方はいるでしょうか? おそらく皆無ではないでしょうか。私も経営者として過去何百人も採用をしてきました。その中には、他社で活躍した方々も多く含まれていましたが、やはり期待通りの活躍までにはそれなりの時間を要します。
要因の大部分は、会社特有の事情がわからない、ということに起因しています。この会社特有の部分を分解すると、知識と方法に分けられます。
当然ですが、あなたの会社の情報・知識はあなたの会社のものです。外に公開されていない情報がほとんどです。見えてしまっていたらそれは大問題、情報漏洩ですね。そこには、過去のお客様とのやり取りの履歴であったり、積み重ねてきた研究成果やソースコードなどさまざまな知的財産が存在しています。こうした知識とそのありかを知っていることで、日々の業務で即座にその知識を活かした「あなたの会社ならでは」のアウトプットを作っています。
また、仕事の方法にも特有の事情があるでしょう。その会社特有のこれまでの歴史で積み重ねてきたさまざまな方法論があるはずです。稟議(りんぎ)の書き方ひとつとっても、過去のインシデントなどから積み上げられたチェックポイントや、特有の社内情報共有プロセスがあるのではないでしょうか。それ以外にも、資料の作り方や経理における仕訳の仕方、営業におけるトークスクリプトの作り方などさまざまな部分に方法論があります。しかも明文化されていないものも多くあります。誰かの頭の中にある方法論を少しずつ仕事の中で受け継いで「あなたの会社ならでは」の仕事をできるようになります。
これらの知識と方法、2つを活用できるようになるまでは、どんなに優秀な方でもうまく成果を出せないでしょう。それには人間でも数か月かかることがしばしばです。マニュアルや過去資料を読み込み、明文化されていないものを、人間関係を構築しコミュニケーションしながらだんだんとその会社の事情を汲(く)み取り活躍するようになっていくわけです。
そういった意味での新入社員としてLLMのことを見てみましょう。すると、活躍できない理由がおのずと明らかになります。そう、そのままでは知識と方法にアクセスできないのです。LLMは人間以上に「明文化されている」ことによって仕事を実現しています。ですので、まずは社内の知識や方法をテキストで与える必要があります。入力されるプロンプトがLLMにとっては仕事のすべてなのです。プロンプトにすべてを与える、というのはやってみるととても難しいものです。
社内の申請書を作成してみる、ということを考えてみましょう。例えば何かを購入する申請を作成してほしい、となった場合に慣れた人ならば社内のルールや最近のアナウンスなどをもとにしてスムーズに購買申請を作成していきます。ですが、LLMにはそういった暗黙的なルールはありません。ていねいに、社内の規則はこれ、最近こういうアナウンスがあって申請には必ずこれを書く必要が出た、申請書の各種フォームを埋めるのに必要な証憑(しょうひょう)はこれ、証憑から金額とこの形式での名称を入力する必要があるので証憑のこれを参考にして……などなど、さまざまなルール・元文書・注意点を盛り込んだプロンプトを用意して処理させる必要があります。
LLMの限界① 処理テキストの長さ
しかも、LLMやプロンプトにはさまざまな制約がつきまとっています。この限界を踏まえずに利用すると、依頼した仕事が不完全であったり間違ったアウトプットを抱えた状態になります。
その一つがコンテキストと呼ばれる、扱えるプロンプトの長さの限界です。このプロンプトの長さはトークンという単位で表されます。トークンとは、LLMが扱いやすいようにテキストを特殊な文字に変換しており、その文字数だと思ってください。おおよそ日本語1文字あたり1~2トークンほどのサイズになります。
現在リリースされているモデルの多くは過去のモデルと比べれば、扱えるプロンプトの長さが非常に大きくなりました。商用のLLMモデル、例えばOpenAIやAnthropicのものでは、およそ10~20万トークンが扱える様になっています。本1冊がだいたい10万文字前後だと思いますので、本1冊をまるごと読める程度にはなってきました。一部モデルは100万トークンまで拡大してきました。本数冊扱える程度になっています。
ですが、それでも限界があります。私が見てきたLLM活用の現場では、仕事の知識と方法をうまく与えようとすると、元の情報をかき集めた結果本1冊をゆうに超える量になりがちでした。直感的ではないかも知れないですが、例えば購買申請について、社内規則をかき集め、証憑となるデータのテキストを抜き出し、場合によっては購入する対象がWebサービスの場合は利用規約やプライバシーポリシーもチェックする必要があったりと、必要な情報を集めると相当な量になるのです。
法律文書を扱う場合などはさらに膨らみやすい傾向にあります。お金を扱う契約においては、数百ページという契約書を扱うケースもありますし、そうした業務こそ自動化したくなる負荷だったりするのです。
人間の脳はよくできていて、すでに学んだ過去の知識から、その瞬間必要なものだけを取り出して効率的に処理しています。ですがLLM自身はあらかじめプロンプトに必要な部分だけ取り出すという行為ができません。そうなると人間がうまくフィルタして必要なものだけを渡すか、そうでなければデータをまるごと渡す必要があります。
さらには、トークン数が大きくなるほどに価格も上がっていきますし、処理の時間もかかるようになります。LLMを利用するコストは、おおよそ入力するテキスト量と、出力させるテキスト量に比例します。特に出力が大きいほど高くなるのですが、処理時間自体は入力にも大きく影響されます。
また「Needle in a haystack」と呼ばれる問題があります。直訳すると「干し草の山の中の針」という意味ですが、要は大量の情報の中から必要な物を探すのは難しい、という問題です。LLMの処理精度は、与えるテキストが大きくなるほど下がる傾向にあります。年々性能は上がっているとはいえ、大量のテキストの中に散らばったほんの一部を取り出す、という処理を実行するのであればうまく達成できない事があるでしょう。先ほどの数百ページの契約書の例では、欲しい情報は特定の条文に集中していたとしても、全文を与えてLLMに処理させた場合、見逃すものが増えてしまうことがあります。
LLMの限界② 確率的モデル
また、確率的モデルであるという点を踏まえる必要があります。ソフトウェアというのは0か1かの世界ですので毎回同じ回答を返すように思うかもしれません。ですが、機械学習の場合、統計的な世界の仕組みに近く、毎度同じ処理結果を返さないものとなっています。もちろん、与えた指示になるべく合致する回答を返すという点に変わりはないのですが、0か1かではなく「もっともらしい結果」といえる範囲で確率的に回答を返すのです。ですので、同じ質問やプロンプトを利用しても、毎度回答が違う事が多くあります。多くのチャット系LLMツールには再生成ボタンがありますので、一度試してみてください。同じプロンプトのままでも違う回答が返ってくることがわかると思います。
しかも、この確率的であるということに加えて、非常に変化に敏感なのです。プロンプトの表現を少し変えただけで出力が変わることがあります。この辺のテクニックは眉唾なものも多いのですが、例えば「漏れなくすべて」というキーワードを加えただけで網羅的な回答をくれるようになったりします。何が効くのかはケースバイケースとなりますが、なるべく世の中一般の知識をもとにもっともらしい回答を返すエンジンなので、うまく回答を導けそうな表現方法を想像しながら少しずつテキストを変えると回答が良くなることがあります。プログラミングの相談であれば、プログラマーが普段どのように文書を書いているか、どのような用語を使っているかなど考えながら、その道の専門家として問うことでうまく良い回答を得られることがあるように思います。これは私1人の経験則に基づくもので、汎用的なテクニックかどうかは検証が必要なのですが。
何にせよ、プロンプトに非常に敏感な性質を持っていますので、プロンプトの一言一句に気を配ることが必要です。
さらにその性質に輪をかけてやっかいなのがLLMのアップデートです。LLMのモデルは市場での競争が激しく、各社性能の向上を狙って日々改善を続けています。その結果およそ3か月から6か月の単位で新しいモデルにアップデートされることが一般的です。この新しいモデルというのは確かに性能を向上させているのですが、確率的で敏感なモデル、というこのLLMの性質との掛け合わせで、過去のプロンプトがうまく処理できなくなることが起きえるのです。
人の脳はそう簡単には変わりません。同じ指示書であれば、同じ人が急に仕事をできなくなるということはありません。むしろ日々例外ケースなども学びながら完璧にこなせるようになるというのが常でしょう。一方でLLMの場合、アップデートによって別人かと思うような変化を遂げることもあるのです。こうした事態を避けるために、同じバージョンのモデルに利用を固定することができる場合もありますが、ChatGPTやAnthropicのClaudeなど商用のチャットツールでは細かいモデルバージョンの固定はできません。常に最新のモデルを利用することになりますので、こうした変化の影響は受けやすいと言えるでしょう。結果として、過去のプロンプトを読み違えることはたびたび起きます。
確率的で敏感な、しかも勝手に変化していくモデルであることを踏まえて、うまく付き合う必要があります。完璧な回答を返しているプロンプトができたと思っても、実は偶然いい回答をくれただけだった、ということがあります。
LLMの限界③ 噓をつく
さらに、LLMには人間からすると簡単に噓をつくとも取れる挙動があります。その要因となっているのが先ほども述べた「もっともらしい」回答を作ろうとする性質にあります。もっともらしいというのは、過去に学習したさまざまなデータをもとにして、平均的な回答を目指している、というような理解をしてもらうといいかもしれません。
なので、指示が不明瞭で幅のある表現だと、なるべく平均的な回答を返そうとして曖昧な答えを作ります。例えばメールを書く、ということを考えてみましょう。「Aさんに商談をリスケしたいというメールを作って」とプロンプトを作成して投げてみましょう。このとき、LLMにはAさんが誰なのか、社外の人に謝罪とともにお願いすべき場面か、社内の人に相談をしている場面なのか、そういったコンテキストはわかりません。どこまでていねいに書くべきかもわかりませんので、世の中の多くのメール文書から学んだ平均的で当たり障りのないメールを作ることになります。また、いつからいつに変更したいのかもわかりません。
例えば以下は上記のプロンプトで生成された返答の例になります。
件名:【日程変更のお願い】商談のリスケについて
A様
お世話になっております。
〇〇(あなたの名前)です。
大変恐縮ですが、予定しておりました以下の商談の日程を変更させていただきたく、ご相談のご連絡を差し上げました。
現在の予定:
・日時:○月○日(○)○:○~○:○
変更希望:
・可能であれば、○月○日(○)または○月○日(○)の○:○~○:○の間でご都合はいかがでしょうか?
・もし他にご都合の良い日時がございましたら、お知らせいただけますと幸いです。
ご迷惑をおかけし申し訳ございませんが、何卒ご調整のほどよろしくお願いいたします。
引き続き、どうぞよろしくお願いいたします。
あなたの名前
会社名
メールアドレス
電話番号
Aさんが誰かわからないので、非常にていねいなメールになっています。より欲しいアウトプットにするならば、相手の属性や日程、過去の経緯などを与えなければなりません。
また、もっともらしい回答を作るためなのか、事実かどうかに頓着していない回答を作る性質があります。人間ならそういった仕事の仕方はあまりしないと思いますが、LLMはある意味でよかれと思って、適当な回答をするおせっかいがあります。近所のラーメン屋を教えて、とLLMに相談すると、ありもしない店を勝手に創造して回答を返す、といった性質があるのです。最近はWeb検索と組み合わさった機能も登場しましたので、こういった検索依頼はWeb検索に頼って正しい回答を返すようになりましたが、それでも業務のさまざまな場面で使おうとすれば、この性質に注意を払う必要があります。
特に、特有の社内ルールや規則に基づくものに関する回答は今もこの性質に困らされることがあります。世の中一般のルールに基づいて回答を返す結果、社内の事情を勘案しない回答を生み出し、混乱のもととなるのです。これは私の会社で検証した際にもたびたび見られました。自社サービスの相談窓口をLLMにやらせてみるということを試していたのですが、たびたび、マニュアルにない質問に対して噓の回答を作ったのです。大抵はマニュアルに不足があるなどの要因があるわけですが、マニュアルが見つからなかった、情報が足りなかった場合に回答をさせないなどの工夫が求められました。
LLMの限界④ 知識の限界
また、学習の結果大量の知識を抱えており、ある程度の検索的な質問に回答をしてはくれるものの、すべてを完璧に取り出せるわけではありません。特に専門性が深くなるほど、うまく取り出せないこともあります。多くのモデルでは人名について検索の連携なしで回答させようとしてもうまくいかないことが多いようです。例えば私がCTOを務めるLayerXの代表の氏名で質問をしてみると、他企業の経営者と混同した回答が返ってくるなど不正確なものがほとんどになりました。彼の場合はある程度メディアでも露出があるので学習されている知識も多いのかもしれませんが、一般的にはうまく答えられないものだと思います。各種ドメインの専門知識は怪しい回答になりやすいと覚えておきましょう。
LLMが抱えている知識自体には、直近の情報が欠けているという性質もあります。当然ながら学んだ知識以上の知識を持つことはありません。また、LLMの学習にはデータの加工やGPUを使っての学習などに相当の時間や試行錯誤が求められるため、学習に使うデータはLLMのモデルの公開よりも多少古いものになります。専門的にはいつまでの知識を学習しているかという日のことをカットオフ日と呼びます。カットオフ日より後の知識は持ちませんので、その制約については意識しておくといいでしょう。
LLMの限界⑤ 記憶を持たない
LLMには記憶もありません。これについてはたびたび誤解されているようなので説明しておくと、過去のチャットの履歴についての記憶力はLLM自体にはないのです。学習されたらどうしよう、という相談も受けるのですが、大半のチャットツールやLLMを利用する方法においては、オプトアウト、いわゆる学習に使わないという設定があり、基本的にこれを有効にすれば学習に用いられることはありません。
さらに、学習に用いられたとしても、世界中すべてとも言えるようなデータ量の中に加わるだけですので、自社の情報が漏れるという確率は非常に低いものだと考えられます。海に1滴の醬油(しょうゆ)を垂らして味が変わるか、といった感覚ですね。
そういった背景ですので、LLMがその入力を記憶することはありません。LLMにとっての記憶は、プロンプトに入力されたデータがすべてとなります。プロンプトにない情報は扱えないので、過去どのようなやり取りをしたか理解させたければ、プロンプトにすべて含ませる必要があります。ChatGPTのようなチャットツールで一つのスレッド(会話のまとまり)内で会話が成立しているのは、過去の会話をすべてプロンプトに投入しているからなのです。正確ではないですがイメージとして、以下のようになっていると考えてください。
以下はあなたとの過去の会話です。
User「今月の経費精算の締切っていつだったっけ?」
AI「今月の経費精算の締切は3月25日(月)です。経費システム上の締切時刻は18:00となっていますのでご注意ください。」
User「了解。それっぽいリマインド文をチーム向けに書いて」
AI「以下のようなメッセージはいかがでしょうか?
皆さんへお知らせです。
3月の経費精算の締切は【3/25(月)18:00】です。
未提出の方は、お早めにご対応をお願いします。」
User「もう少し柔らかい表現にしてみて」
...続く...
このように、1回のプロンプトに過去の会話の流れを投げ込み、その上で会話を続けることで、過去の記憶を持ったような会話をしているのです。ですので、ほとんどのチャットツールの場合、スレッドの中にある会話以外の情報は活用していません。ときおり、ChatGPTのMemory機能のように、あなたの属性など過去の会話を記憶するケースもありますが、すべての会話を記憶して活用しているわけではありません。正しく過去の情報を使うには、人間の側が情報を渡してあげる必要があります。
ですので、人間に例えてみれば常に記憶喪失で、「昨日と同じようにやっといて」では通じない新入社員なのです。毎回ていねいに指示を与えなければ処理は完遂できません。毎度うまく仕事をしてもらいたければ同じプロンプトを渡してあげる必要がありますし、過去の仕事のことを加味して処理したい場合はその情報を意図的にプロンプトに加える必要があります。
松本勇気著/日経BP/2640円(税込み)


