LLMを操るコツ <メメントと場>

  • By melted-soy-source
  • 4
  • 26 min read
  • Tags: 
  • essay
  • tech

 LLM、めちゃくちゃ便利ですよね。日々お世話になっています。で、使い倒すうちに、なんとなく感覚で、"Prompt Engineering"的なものを掴んできてる。いったん現状のノウハウを、言語化・明文化しておこう。そんな記事。
 キーワードは二つ。 メメント デス。このキーワードを中心に、LLMの特徴を捉えて、使い倒す方針を確認する。

注意点

 この記事は、マジで個人の感想とAIを触った感想の塊。全体的に統計や学術的な裏打ちはなので、そこは注意してほしい。だから、エッセイタグもいれてる。

とりあえず、結論!

  1. まず「何をしたいか」を明確にする
     LLMに投げる前に、自分の目的やゴールをはっきりさせておく。曖昧なままだと、返ってくる答えもぼんやりしがち。

  2. 強いワードで「場」を作る
     専門用語や具体的なキーワードを使って、話題の「場」をしっかり設定する。これで、LLMの思考空間をグッと狭められる。

  3. 例や前提を惜しまず与える
     「こういう感じで」「この前提で」など、例や条件を積極的に提示。LLMは文脈が命なので、材料は多いほど良い。

  4. 一度に詰め込みすぎない
     一気に全部伝えようとせず、段階的にやりとりする。LLMの「短期記憶」を意識して、会話を小分けに。

  5. 返答を見て、微調整する
     返ってきた答えを見て、「もう少しこうしてほしい」と追加指示を出す。LLMは“育てる”感覚で使うと良い。

  6. うまくいかない時は、視点を変える
     思った通りの答えが出ない時は、質問の仕方やキーワードを変えてみる。別の「場」を作るイメージで。 ここでは全く違う、新しいチャットを開く。
     新しいチャットにしないと、以前の会話に引っ張れる。傾いた場所でジェンガをするのは、難しい。であれば、完全に壊して、新調したほうがきれいに積み上げられる。

LLMの特徴を知る

 さて、モノを上手く使うには、その仕組みをよく知るのが手っ取り早い。めちゃくちゃ詳細な話まで捉えられずとも、概要を知っているだけでも、使い方の想像がしやすいでしょう。

 例えばスポーツをするときだって、筋肉や骨格の仕組みを知ることで、より上手く身体を使えるようになる。結果として成績も上がりやすくなるはず。  それと同じで、LLMもざっくり仕組みを知っていくことで、より便利・効率的な利用方法を編み出すことができよう。
(まぁ、私もざっくりとしか理解していないので、詳細な解説は無理なんですけど...ね?)

 ここで出てくるのがキーワード。 メメント である。

LLMの特徴1 : 超短期記憶 × 常識

  ここで扱うのは、LLMの記憶力の問題。実はLLMは超短記憶しか、保持できないのである。

 ところで読者の皆さんは、「メメント」という映画を観たことがあるだろうか?クリストファー・ノーラン監督作で、難解であるものの、とても面白い映画だ。
 実は、LLMはこの「メメント」の主人公とまったく同じ状態にある。まだ観たことがない読者もいると思い、ネタバレを回避したあらすじを下に掲載する。

前向性健忘(発症以前の記憶はあるものの、それ以降は数分前の出来事さえ忘れてしまう症状)という記憶障害に見舞われた男が、最愛の妻を殺した犯人を追う異色サスペンス。特殊な状況に置かれた主人公の心理を再現するため、時間軸を解体した上で再構築された複雑な構成ながら巧みな脚本で衝撃のラストへと観客を導く。
allcinema https://www.allcinema.net/cinema/234817 より

 ざっくりいうと――今回の説明に関係あるところだけまとめると、10分間しか短期記憶がない男が主人公の映画である。これがまるでLLMさながらなのだ!
(気になった人は、観てみて!)

長期記憶と短期記憶

 ここでいったん、記憶の種別を整理しておきたい。長期記憶短期記憶 である。
 ちなみに、この二分類は私がLLMを解釈するために使っている、独自の分類です。脳科学・心理学のような学術的な正しさを求めたものではないので、悪しからず。

長期記憶 = 常識

 長期記憶とは読んで字の如く、長期間にわたって保持される記憶のこと。例えば、

  • 1週間は7日で形成されている
  • 東京は日本の首都である
  • 信号機が赤の時には、交差点に侵入してはいけない

などなど。他にも自転車の乗り方なんかの、運動的な記憶もある。が、これはLLMとは関係が(恐らく)薄いので、割愛。

 長期記憶は、 常識 と考えてもらえればいいだろう。社会通念というか、人が生きている上で身に着けていく、基本的な知識モデル・知識構造。

 メメントの主人公も、この常識は有している。お金の使い方や、カメラの使い方、運転の仕方なんかは覚えている。

短期記憶 = ワーキングメモリ

 対して短期記憶は、短期的に保持される記憶のこと。ここではより範囲を絞って、ワーキングメモリ としよう。詳しい説明に入る前に、ワーキングメモリとはなんぞかを知ってほしい。
 試しに、次の計算を暗算でやってみてほしい。一気に足しきるのじゃなくて、ステップをなぞってみてほしい。(ちなみに回答があっているかは、問題じゃない。とりあえず、このタスクにチャレンジしてほしい)

  • 「3」という数字を覚えていてください
  • 「6」を足してください
  • 「4」を引いてください
  • 「7」を足してください

さて、答えは出た?

 ここで重要なのは、暗算をしている時の脳内。みんな、頑張って数字を記憶していたのでは? それぞれ指示が出るたびに、「えっと、さっき覚えていたのに、6を足すから」云々。もしくはもっとビジュアルのイメージで、数字同士が合体するとか。

 なんにせよ、恐らく読者の大半が意識的に数字を覚えてようとしたはず。この意識的に覚えてようとしている記憶領域、これをワーキングメモリという(というか、私はそう呼称している)。

 先ほどのメメントに話題を戻すと、主人公はこれが10分しかない。つまり、断続的に連なる10分のサイクルを、毎度繰り返すことになる。「なんで、自分はここにいるのだ?」からね。
(映画だとここら辺の表現が面白い)

LLM = メメントの主人公

 さてメメントの主人公は、10分しか短期記憶が手元に残らない。残りの部分の記憶は、メモか常識(長期記憶)でカバーすることになる。

 これと全く同じことがLLMでも言える。LLMの場合、 短期記憶は、文章を生成している時にしか保持されない。

ChatGPTの画面

 ChatGPTでは、こんな風なチャット形式のUIが作りこまれている。が、 LLMはこちらと、即興で対話をしている訳ではない。 実は舞台の裏側では、今までのやり取りをすべて送信しているのだ!
 なぜならLLMは、文章を考え出す(生成する)時にしか、文章の情報が頭の中に残っていないから!

 画像の最後の今日はいい天気だ、気温も涼しくて本当に過ごしやすいよ! を、ChatGPTで送信したときを例に考えてみる。
 このとき実は、今までの会話履歴がすべてChatGPTに向けて送信されている。だから、

  • はーい、調子どうだい?
  • やあやあ!調子は上々だよ、ありがとう。そっちはどう?
    最近なにか面白いことあった?それとも今日はまったりモードかな?
  • 今日はいい天気だ、気温も涼しくて本当に過ごしやすいよ!

のすべてがChatGPTに送信されている。この会話履歴をLLMに入力すると、これを読んで、次の回答が作られる。本当に この内容を作り出す時にしか、文章の内容を覚えておくことはできないのだ!
 人に考えを当てはめるとめちゃくちゃに気もするが、実際こういう風に動いている。

 では、LLMが頭がいいとはどのような事なのか?これは、長期記憶の量を指している。(殊、記憶力に関しては)
 メメントの主人公も、10分しか最近の事を覚えていられない。10分たったら記憶はリセット。が、前述の通り、常識といえる部分がパーになる訳でない。作中でもカメラを使うし、宿も取るし。

 これと同じく、LLMにも常識ともいえる、長期記憶がある。これは、LLMが学習の段階で、モデル内部に獲得されている。

 ちなみに、LLMにとって常識とは「インターネット上に存在する情報のすべて」になっている。自然な言語運用ができるように学習するため、教科書としての文章がインターネット中から収集される。だから、インターネット上にあることは、大体なんでも知っている状態に。
 なので、知識量でいうと人間は基本的には勝つことは難しい。だって、インターネット上のすべての記事は読めないでしょう?

カットオフ

 ちなみにこの「学習時に利用した知識」の年代を、カットオフと読んだりする。カットオフが2024-12ならば、「インターネット上で2024年12月までに、集めた情報でモデルを学習しているよ」と、いうことになる。
 ざっくりモデルの中には、カットオフ時点までのデータが入っているという認識でok。
 だから最新のことをLLMと議論するには、Web上で検索を行わせるのがよき。

LLMの特徴2 : 意味空間

 これは、LLMの仕組みそのもの......ではないと思う。私がLLMを扱ううちに獲得した、メンタルモデルだと思ってほしい。
 LLMの中には、意味をとった空間がある。それが数学的には、どんなふうに定義される空間なのか知らないけれども、とにかく"空間"があるイメージ。そしてこれは、 になっている。

 ここで言ってる場って、電磁場とか重力場とかといったやつの場。  ちなみに場については、以下のサイトを参考にしてほしい。物理の概念なので、まぁ興味のない人は、適宜呼び飛ばしてもらって。
ざっくりしたイメージとしては、「なんらかの高低差」のこと。物理ではエネルギーの高低差のこと。

https://sawanii.ne.jp/mechanical-energy

 もっと平易な例えをもってくるなら、「砂場」が近いと思う。砂場――もしくは砂浜で、砂を使って水路を作るような遊びをしたことはないだろうか?いわゆる泥遊び的なもの。思い通りに水を流すには、適切な勾配・坂を作ってあげる必要がある。水は重量に引っ張られて、高いところから低いところに流れるから。

 このとき、砂場が水を動かす"場"的な状態になっている(と、ここでは強引にいう)。砂という材料(媒質)の高低差が、水の動き(運動)を作り出す状態。こんな風な運動を生み出す、何らかの高低差を場を称している。
 これがLLMの場合は、意味で行われていると思っている。そのイメージをつけるため、一旦今の砂場から「磁石と砂鉄」に話を変えたい

磁石と砂鉄

 LLMの意味空間への操作を、砂鉄を使って模様を描くことに例えてみる。
 砂鉄は磁石に引き寄せられるので、これをうまく使うことで、模様を描くことができる。強い磁石をおけば、多くの砂鉄が集まるので、色が濃くなる。弱い磁石をおくと、砂鉄はあまり集まらない。このように、砂鉄と磁石で模様を描くことができる。  下のアニメーションのように、濃淡ができるはず。

 砂鉄に対するインパクトは、磁力の強度によって大きく変わる。強力な磁石で大きく動かし、弱い磁石で細かく調節する。こんなイメージ。

 この「磁力の強弱」のようなものが、LLMにも適用される。つまり、影響力が強いワードと弱いワードがある。(ここでの“影響”って、LLMの意味空間・Contextに対してね)

使い方のコツ

 さてさて、ここまでLLMのメンタルモデルを深めた。ので、いよいよ使い方の話。まずは、メカニズムから使い方の基礎的な心得を導く

大きく形をつくり、微調整

 影響力の強いワードは、文章のトピック・ドメインを確定させるようなキーワードのこと。例えば、スローインという単語は、恐らく“強い”ワード。何故なら、スローインという記号…というかラベルは、サッカーというスポーツと強く紐づいている。

 対して弱いワードは、ここまで話題を絞ることはできない。走る蹴るもサッカーを構成するが、一般的に使える用語で、そこに“サッカー性”はあまり強く含まれない。

つまり

  • “強い”ワード = 専門用語(Domain-specific)
  • “弱い”ワード = 一般語

たぶん普通に会話をしていても、

「スローインって、実は手前の走る姿勢が大事」

というフレーズを聞いたら、サッカーの話だと何となく分かるだろう。サッカーという単語は入っていないのに。

 これと同じことをLLMにもできる。“強い”ワードを上手に使うことが、扱うコツだと個人的には思っている。つまり、専門用語をバンバン使いながら、持ちうる情報を伝える。

 だから、LLMに仕事を投げる前には、こちらの言語化が肝要になってくる。"強い"ワードで大きく掴んでおけば、細かい調整は後でつけられる。
 余計な文章での説明をせずに、一撃で会話のトピックを確定させる。これが鉄則。

 例えば、LLMに「おいしい出汁の取り方」を聞くことにしてみよう


うまく使えている例(専門用語や具体的な条件を明示)
「一番出汁を取るとき、昆布は水出しと加熱抽出のどちらが旨味を引き出せますか?また、鰹節を加えるタイミングと火加減のコツも教えてください。」

うまく使えていない例(曖昧・一般的な表現)
「美味しい出汁の作り方を教えて」


こんな感じ。より具体性を持たせることで、LLMがやるべきことを明確して上げると、良い結果がでやすい。

磁石はくっつく

 ここで注意なのは、磁石同士もくっつくてこと。弱い磁石は強い磁石に引っ張られて、くっついてしまう。

 同じように、"強い"ワードは"弱い"ワードを引き寄せる。一度トピックが固定されると、なかなかその流れを変えることは難しい。
 というよりかは、空間に歪みがでて、うまいこと意味が通らなくなる可能性がある。だから、トピックを詰め込みすぎたり、話題を変えまくるのはNG。話題を変えたい時には、新しいチャットを開こう。

 逆にいうと、話題を広げたり、知識を広げる時には、あまり"強い"ワードを使いすぎないのものポイント。

結論!

  1. まず「何をしたいか」を明確にする
     LLMに投げる前に、自分の目的やゴールをはっきりさせておく。曖昧なままだと、返ってくる答えもぼんやりしがち。

  2. 強いワードで「場」を作る
     専門用語や具体的なキーワードを使って、話題の「場」をしっかり設定する。これで、LLMの思考空間をグッと狭められる。

  3. 例や前提を惜しまず与える
     「こういう感じで」「この前提で」など、例や条件を積極的に提示。LLMは文脈が命なので、材料は多いほど良い。

  4. 一度に詰め込みすぎない
     一気に全部伝えようとせず、段階的にやりとりする。LLMの「短期記憶」を意識して、会話を小分けに。

  5. 返答を見て、微調整する
     返ってきた答えを見て、「もう少しこうしてほしい」と追加指示を出す。LLMは“育てる”感覚で使うと良い。

  6. うまくいかない時は、視点を変える
     思った通りの答えが出ない時は、質問の仕方やキーワードを変えてみる。別の「場」を作るイメージで。 ここでは全く違う、新しいチャットを開く。
     新しいチャットにしないと、以前の会話に引っ張れる。傾いた場所でジェンガをするのは、難しい。であれば、完全に壊して、新調したほうがきれいに積み上げられる。


 思っていたよりも長い記事となってしまった。まぁ、半分備忘録なので悪しからず。「場」と「短期記憶」の癖を掴むと、ぐっと使い方が上手くなる気がする。

参考資料

「GPTとは何かTransformerの可視化」

  • 著者 : 3Blue1BrownJapan

LLMのコアのアイディアである、Transformerをわかりやすく解説してくれている。
→ 特に内部の数学的な処理を見える化してくれているから、想像がすごくしやすい