「分かったつもり」で読み進めていた書籍。ふと、その本当は理解出来ていなかった部分を徹底的に深掘りしながら読んだらどうだろう? そんな興味から、直感LLMをGeminiと一緒に読むという試みを始めました。
書籍では紙面の都合だろうか、詳細が省かれている部分が多くあります。今回は、第1章でサラッと説明されただけで終わっているエンコーダの部分を、AIと共に深掘りしてみました。Bag-of-Wordsや埋め込み、そしてTransformerという単語は出てきますが、それらが単なる技術の変遷なのか、それとも何らかの関連性を持つ技術なのか。そんな疑問をGeminiに質問して理解を深めていきます。
1. 書籍で詳細が語られないAIの深部
LLMが用いているベクトル化技術を書籍では簡単に歴史として紹介していますが、実際に何が違うのかという部分まではなかなか読み取れなかったので、まずはここからGeminiに聞いてみることにしました。
ベクトル化技術の進化
1. Bag-of-Words (BoW)
最初期のベクトル化手法で、文章中の単語の出現回数に主眼を置きました。計算効率は高いものの、単語の順序や文脈を完全に無視します。
* 例: 「犬が猫を追いかける」と「猫が犬を追いかける」は、どちらも「犬:1, 猫:1, 追いかける:1」としてカウントされ、同じベクトルになってしまいます。
2. 埋め込み (Word Embedding)
単語の意味的な関連性を捉える画期的な手法です。これにより、類似した意味を持つ単語がベクトル空間上で近くに配置されるようになりました。しかし、この手法は単語ごとに一つの固定されたベクトルしか持ちませんでした。
* 例: 「銀行(bank)の口座を開いた」と「川の土手(bank)で休んだ」という文脈で使われる「銀行(bank)」という単語は、どちらも同じベクトルになってしまいます。
3. Transformer
埋め込みの限界を克服し、ベクトル化を洗練させた決定的な技術です。アテンション機構を採用することで、文中のすべての単語を同時に見て、その関連性を計算します。
* 例: アテンション機構は、「銀行」を クエリ(Query) として、文中の「口座」や「土手」といった単語をキー(Key) と見なすことで、それぞれの単語が持つ情報(バリュー) に注目します。例えば、「口座」が持つ情報に強く注目することで「銀行」を金融機関として、「土手」が持つ情報に注目することで「銀行」を川岸として捉えます。これにより、文脈に応じて単語のベクトルを動的に変化させ、LLMは言葉の深い意味までを考慮するようになりました。
特殊トークンという「見えない指示」
書籍では[CLS]トークンという特別なトークンと何の説明もなく、流されてしまいましたが、これはBERTのようなエンコーダのみで構成されたモデルがテキストを効率的に処理するために使う特殊トークンの一つであり、他にも同様の役割を持つトークンがいくつかあることがわかりました。これらは、人間には見えない「タグ」や「句読点」のようなものです。
-
[CLS]トークン: 文章の要点を凝縮する役割を持ち、文章の意味を把握するための「代表」のような存在です。例えば、文章分類タスクでは、この[CLS]トークンのベクトルだけを抽出して、文章全体の意味を判断します。 -
[SEP]トークン: 複数の文章を明確に区切るために使われ、文脈の境界を正確に認識させます。 -
[PAD]トークン: 処理の効率化のために、文章の長さを均一に揃えるための「詰め物」です。
2. LLMの理解と生成、そしてハルシネーション
エンコーダとデコーダの仕組みを深く掘り下げると、ハルシネーションに直結する機構が見えてきました。この直感を確かめるため、Geminiに確認してみました。
LLMの内部は、テキストを 「理解」 し、新しいテキストを 「生成」 するという異なる役割を持つ2つのプロセスに分けられます。これは、質問の意図や文脈を正確に把握するエンコーダと、新しいテキストを創造するデコーダに例えられます。多くの最新モデルはデコーダが両方の役割を担う構造ですが、この役割分担の考え方は、LLMの仕組みを理解する上で非常に役立ちます。
ハルシネーションの二つの顔
LLMが誤った情報を生成する現象であるハルシネーションには、大きく分けて二つの原因があります。
知識の誤り: これは、LLMの学習データ自体に誤った情報や偏りが含まれている場合に起こります。この問題は、学習の過程でモデルの重みパラメータに誤った情報がエンコードされてしまったことが原因です。例えるなら、間違った情報が載った教科書で勉強してしまったために、AIが誤った知識を持ってしまったようなものです。
- 推論の誤り: これは、LLMが次の単語を予測する際に、論理的な一貫性よりも創造性を優先しすぎた場合に起こります。これは、AIが言葉を 『選択』 するフェーズにおける問題です。この「推論の誤り」は、TemperatureやTop-p/kといったハイパーパラメータで制御することが可能です。
3. AIと深掘りする対話の危険性
ハルシネーションの仕組みや自己ループの関連性を知ったことで、LLMとの対話には常に誤情報が生まれるリスクがあるという仮説を立て、Geminiに確認しました。
AIの「創造」がもたらすリスク
デコーダが高いtemperature設定で生成する、一見すると面白い創造的な組み合わせは、しばしば論理的な飛躍を含んでいます。これは、LLMが最もあり得る単語だけでなく、確率の低い単語も積極的に選択するようになるからです。
この創造性が、以下のようなリスクを引き起こす可能性があります。
誤ったコンテキストによる破壊的な自己ループ
生成された文章は、その後の対話において新たなコンテキストとして扱われ、エージェント(セッション)の「理解」プロセスを通過します。このとき、デコーダが創造性の名のもとに生み出した誤った組み合わせも、新しい文脈として捉えられ、モデルの知識に誤った関連性として記録されます。
この負のスパイラルが進行すると、エージェント(セッション)は、対話の文脈において誤った情報を正しいものとして扱い続けます。この現象は、たとえユーザーが意図的に情報を絞り込んでも、モデル内部の誤った知識と結びついてしまう可能性があるため、単純な対策だけでは根本的な解決にはなりません。この点はGeminiとの対話でより明確になり、真に有効な解決策は同じセッションを使い続ける期間を可能な限り短くすることだけだという結論に至りました。
これにより、ユーザーとの対話における意味の歪みが徐々に蓄積されていきます。これは、まるでAIの思考が誤った情報によって汚染され、その後の推論がどんどん不正確になっていくような状態です。エージェント(セッション)の内部構造が恒久的に破壊されるわけではありませんが、目の前の対話セッションにおいては、信頼性の低い、無意味な情報が連鎖的に生成されるリスクを抱えます。
結論: AIと本を読んでみて
今回の読書で改めて、AI活用にはゲームの攻略方法のように、知らないと詰んでしまうポイントが多いと気づかされました。以前からAI活用はフラグ管理ゲームだと思っていましたが、毒を与えないように注意しながら進める必要がある育成ゲームの側面も感じました。
理解を深めるために、自分以外の人はどうしているのだろうか?という疑問がまずあります。先に進めればそのうち分かるだろうととにかく読み進めるのか、それとも分からない単語や概念が出てきたら分かるまで都度調べてしっかりと理解を深めるのか。自分は前者でふわっとした理解や分からないままで終わらせることが多かったものの、今回はAIを読書に活用してみてはどうだろうかと思い立ちました。
メリットとデメリットは正に表裏一体です。ある程度時間を犠牲にしてでもやる、もしくは最低限ハイブリッドで進めるのが自分のためになるかなと感じています。今回の経験から、どうせ後で調べることになるのなら、最初からGeminiと深掘りして読む方が将来の時間を節約できる可能性があると感じました。途中まで中途半端な知識で理解できなくなって挫折するリスクをヘッジできると考えれば、このコストは案外安いのかもしれません。
何より、分からないまま読み進めても本当にその知識が必要になった段階でもう一度調べ直す必要があると考えれば間違いなくこの試みは未来への投資と言えるでしょう。