概要
- AIブーム の個人の心理的変遷についての考察
- Markov連鎖 を用いたテキスト自動補完の実装例
- 確率行列 ・ベクトルによる状態遷移の説明
- テキスト生成時の 定常状態問題 とその回避策
- RustとWebAssemblyによる実装上の工夫
AI Buzzはもう退屈
- AIブーム の心理的段階を4つに分類
- 第1段階: 驚嘆
- コンピュータと自然な会話ができることへの感動
- 未来への無限の可能性を感じる段階
- 第2段階: フラストレーション
- 実際の用途では期待ほど役立たない現実
- 情報や論理の誤りが多く、信頼できない
- 第3段階: 混乱
- 自分は興味を失ったが、周囲はまだ盛り上がっている
- 自分の考えが間違いだったのかと疑問に感じる
- 第4段階: 退屈
- 新しい言語モデルが次々登場し、飽和感
- 原点回帰や基礎からの学び直しへの欲求
- Markov連鎖 への関心
- 第1段階: 驚嘆
Markov連鎖によるオートコンプリート
-
Markov連鎖 とは
- Andrey Markov考案の 確率的遷移モデル
- 各状態から次状態への遷移確率で表現
- 例:Aliceがスーパーとプラネタリウムを行き来する確率
-
遷移確率表の作成
- 各状態間の遷移を表形式で整理
- 状態が不確定な場合は 確率ベクトル で表現
- 次状態の確率計算は 行列とベクトルの積 で求める
-
行列による一般化
- 遷移確率表= 遷移行列T
- 現在位置の確率分布= 状態ベクトルs
- 行列積 Ts で次時刻の状態分布を計算
- nステップ先は T^n s で予測
テキスト補完への応用
-
辞書作成
- サンプルテキストから単語リストを生成
- 各単語にインデックスを割り当てる
-
遷移行列の構築
- テキストをインデックス列に変換
- 各単語間の遷移回数をカウントし、 遷移回数行列C を作成
- 列ごとに合計し、 確率行列M へ正規化
-
補完の実装方法
- ユーザー入力の最後の単語を特定
- 対応するインデックスで単位ベクトルを作成
- M × s で次に来る可能性の高い単語を算出
- 最も確率の高い単語を候補として提示
テキスト生成と定常状態問題
-
素朴な生成方法の課題
- 常に最頻単語を選ぶと、 定常状態 に収束し単調な出力になる
- ランダム性を加えても、長期的には同じ問題に直面
-
筆者の解決策
- ランダムな対角行列R を生成
- R × s の最大値インデックスを選択し、ランダム性と多様性を確保
実装面での工夫
- Rust+WebAssembly によるパフォーマンス重視の実装
- HashMap でインデックス変換・遷移回数管理を高速化
- ユーザーインターフェースとして
- 「Choose Word」ボタンや右矢印キーで自動選択
- 候補単語をタップして手動選択も可能
まとめ
- AIブームの心理的変遷 と、原点回帰としての Markov連鎖 への興味
- 確率行列 を活用したシンプルなテキスト補完・生成手法
- 定常状態問題 を回避するための工夫
- 実装を通じて得た気付きと、技術的な楽しさ