最も驚いたのは、私は機械学習の背景がなく、モデルのトレーニング標準プロセスも、多くの技術的詳細も理解していなかったことです。私が行ったのは、Solに要求を出し、結果をフィードバックし、彼女自身が問題を特定し、実験を設計し、継続的に改善するのを待つことだけでした。文章作成者:Anshu
記事編集、出典:ME News
これは私が初めて「AGIがもう来ているようだ」と実感した瞬間だ。
私はGPT-5.6 Solを使用して、独自の自動修正モデルを訓練しました。結果として、この17億パラメータのローカルモデルは、テストセットでの性能がGPT-5.6 Solをわずかに上回りました。
最も驚いたのは、私は機械学習の背景がなく、モデルのトレーニング標準プロセスも、多くの技術的詳細も理解していなかったことです。私が行ったのは、Solに要求を出し、結果をフィードバックし、彼女自身が問題を特定し、実験を設計し、継続的に改善するのを待つことだけでした。
このプロセスには一切のコストがかかりません。
すべては、ますます深刻化する「タイピング問題」に由来する
長くAIと対話していると、自分のタイピング能力がますます悪くなっていることに気づきました。
私は高速入力に慣れてしまい、スペルや文字の順序、抜け字のチェックを丁寧に行わなくなってしまいました。自分のタイピング能力を再訓練する代わりに、よりAI時代に合った解決策として、さらに多くのAIを使って問題を解決することにしました。
従来の自動修正は入力中に常に文字を修正するため、かえって思考を妨げやすいです。私のアイデアは、ユーザーが邪魔されずに素早く入力できるようにし、たとえ誤りがたくさんあっても、入力完了後にAIが一括で修正するというものです。
同時に、このモデルを可能な限り小さくしたいです。
モデルが小さければ小さいほど、実行速度が速く、消費電力が低く、完全にローカルで実行するのに適しています。効率性、バッテリー持続時間、あるいは単なる実験的な興味のために、私は、十分に小さなローカルモデルが自動修正をどの程度まで実現できるかを確認したいと思います。
そこで、私は自分でトレーニングすることに決めました。
Solを自動実験研究員にしましょう
このプロジェクトのインスピレーションは、Andrej Karpathy の「autoresearch」実験から来ています。
私は Codex の /goal モードを使用して、Sol のためのサイクルワークフローを設計しました:
実験を選択し、実行して結果をドキュメントに記録する。失敗した場合は、その路線を断念し、次に実験を計画しながら、すでに検証済みの誤りを繰り返さないようにする。
私はいくつかの必須通過入力サンプル、厳格な遅延目標、そして最終的に達成したい効果を提供しただけで、その後はSolに自分で実行させました。
次に起こったことは、私の予想をはるかに超えました。
Sol は、Qwen 3.5、Gemma 4 および Liquid LFM 2.5 を含む複数の候補ベースモデルをまず検索・比較しました。その後、Hugging Face 上で実際のタイピングテキストに関連するデータセットを見つけました。
しかし、実際のデータはまだ十分ではありません。
よりユーザーの実際の入力に近いスペルミスを生成するため、Solは「指でMacキーボードを打つ」シミュレーターを書きました。これはキーボードの物理的なレイアウトに基づいて、指の着地点をガウス分布でシミュレートし、以下の一般的なエラーを生成します:
- 隣接するキーを押してください;
- 文字の順序が逆転しています;
- 繰り返し入力;
- 文字が欠落しています;
- 複数のキーを同時に指で押す。
基礎モデル、テキストデータ、キーボード誤りシミュレーターを用いて、SolはMLXを介して私のMacBook上で微調整されました。
1時間もかからずに、動作するプロトタイプを作り上げました。
問題は、最初のバージョンの精度がそれほど良くないことです。
最初のボトルネック:トークナイザーがスペルミスを理解できない
Solは関連論文を読み、一連のテストを設計した結果、モデルの主要なボトルネックは訓練データではなく、トークナイザー、すなわち分詞器であると判断した。
大規模言語モデルは通常、文字単位でテキストを理解するのではなく、まずテキストをトークンに分割します。通常の単語は安定した意味単位に分解できますが、スペルミスはしばしば元のトークン構造を破壊します。
これは、人間にとって明らかに見える文字の誤りが、モデルにとっては完全に新しいトークンの組み合わせに変わる可能性があることを意味します。
モデルは誤りを真正に「理解」することはできず、誤った綴りと正しい綴りの対応関係を機械的に記憶するだけです。この方法では汎化能力が低く、モデルが原本持つ言語知識を十分に活用できません。
SolはまずGoogleのByT5を試しました。
ByT5は、従来のTokenizerに依存せず、バイト列を直接処理するモデルです。今回の試みにより明確な改善が見られましたが、ByT5はリリースが早期であり、モデル自体が習得している言語知識に制限があるため、最終的なパフォーマンスはGPT-5.6 Solのレベルに達することはできませんでした。
さらに調査した後、Solは、問題を「Tokenizerを完全にキャンセルする」ことで解決する必要はないことに気づいた。
代わりに、エンコーダー・デコーダーアーキテクチャのモデルであるT5Gemmaを選択しました。
単に次のトークンを予測するモデルとは異なり、Encoder-Decoder モデルは、エンコーダーが入力を完全に理解した後、デコーダーが修正されたテキストを生成します。さらに、Sol はエンコーダーに対して後続のトレーニングを実施し、スペルミスを含む入力をより正確に認識できるようにすることができます。
このルートはモデルの性能上限を大幅に引き上げます。
二番目のボトルネック:従来の損失関数がモデルに「変更しない」ことを促す
モデルアーキテクチャを変更した後、新しい問題が発生しました。
モデルは一部のエラーを正確に修正できるようになりましたが、他の明らかなスペルミスを無視することがよくあります。入力にエラーが含まれていても、そのままコピーしようとする傾向があります。
Solは、問題が最も一般的な交差エントロピー損失関数に由来することを特定しました。
自動修正データでは、ほとんどの文字は元から正しいため、実際に修正が必要な文字はごくわずかです。標準的な交差エントロピーを用いて学習すると、モデルにとって最も安全な戦略は「できるだけ変更しない」ことです。
原文をコピーすれば、ほとんどの場所で正しい答えが得られますが、積極的に変更すると誤りが生じる可能性があります。
言い換えれば、従来のトレーニング目標は、モデルが変化しないことを報酬としています。
この問題を解決するために、Solはカスタム損失関数を設計しました。
まずバイトレベルで元のテキストと対象テキストをアラインし、動的計画法アルゴリズムを用いて2つのテキスト間の最小編集パスを計算し、どの位置がコピーであり、どの位置が真正な挿入、削除、または置換であるかを識別します。
この基础上、Solは「正しい修正」に対応するトレーニング重みを大幅に向上させ、文字を単純にコピーすることによる報酬を低下させました。
複数のパラメータ調整を経て、モデルの修正精度が大幅に向上しました。
三番目のボトルネック:モデルが一度間違えると、戻ることができない
最後の主要な問題は、自己回帰生成メカニズムから来ています。
モデルはテキストを生成する際、既に生成された内容に基づいて次のトークンを予測するのみです。前のいずれかのステップで誤りが発生した場合、以降の生成はその誤った結果の上に構築され、モデルは真に戻って修正することはできません。
理論的には、モデルを推論モデルのようにまず「思考」してから回答するように訓練することは可能ですが、これにより遅延が大幅に増加し、即時応答が必要な自動修正シナリオには適していません。
Solは、より洗練されたソリューションであるビームサーチ(Beam Search)を見つけ出しました。
モデルは、これまでは各ステップで確率が最も高い単一のパスのみを選択していましたが、今後は複数の可能性のある生成ブランチを同時に保持し、異なる訂正結果を並列に探索します。検索が終了した後、累積対数確率が最も高い完全なパスが選択されます。
これは単一の推論を並列検索に置き換えることです。
Beam Search は最終的な結果を明確に改善しましたが、検索が完了するまでユーザーが任何の出力を表示できないという体験上の問題を引き起こしました。
Sol はその後、非常に賢明な観察をした。
各検索ラウンド後、現在保持されているすべてのブランチを比較できます。これらのブランチが同じ开头を持つ場合、その「最長共通プレフィックス」は必ず最終結果に含まれます。
したがって、システムはこの内容をユーザーに即座に表示できます。
検索が継続されるにつれて、弱いパスは段階的に排除され、残った枝の共通プレフィックスも次第に長くなっていきます。最終的に、ユーザーが見るのは一瞬で表示される結果ではなく、継続的に生成される修正テキストです。
Solは、MacBookのGPUを用いて並列デコードを行うカスタムMLX推論パイプラインを構築しました。
最終的に、最初のトークンの出力遅延は約40ミリ秒に抑えられ、速度が十分に速く、プロセス全体がローカルで完了します。
最終結果:17億パラメータモデルがGPT-5.6 Solを上回る
最終評価指標として「エラー削減率」を採用し、数値が高いほど、モデルが入力エラーを修正した量が多いことを示します。
評価結果は以下の通りです:
- Appleの自動修正:49.66%
- GPT-5.6 Luna:82.47%
- GPT-5.6 Terra:87.64%
- GPT-5.6 Sol:90.56%
- 私たちが訓練した17億パラメータのモデル:91.02%
このローカル小モデルは、GPT-5.6 Solをわずかな差で上回りました。
また、データ漏洩やモデルの「不正」の有無を特に確認しました。テスト時には、訓練データに含まれていた単語を積極的に除外し、モデルが誤りと正解のマッピングを機械的に記憶しているわけではないことを検証しました。
プロジェクトの最終コストは:
一次モデルのクォータリセットと0ドルの現金支出。
本当に私を震撼させたのは、最終スコアだけではない
プロジェクトの過程では、対比学習、GRPO、DPO、動的マスキングなど、多くの展開されていない実験が存在します。
すべての試みが成功したわけではありませんが、Solは自発的に資料を読み、問題を特定し、仮説を立て、実験を設計し、結果を分析して、失敗からの教訓をもとに次の試みを計画しました。
私にとって、本当に衝撃的なのは「17億パラメータのモデルがGPT-5.6 Solを上回った」という事実そのものではない。
さらに、機械学習の背景が全くない人でも、AIを活用して、かつて専門の研究チームでなければ実現できなかった実験プロセスを完了できるようになりました。
私はすべての下層知識を掌握しているわけでも、最初から完全な技術路線を設計していたわけでもありません。私は自分が何を解決したいのかを明確にし、それからSolに答えを探し続けるよう促し続けました。
それはコードを書くだけでなく、研究者、エンジニア、実験設計者の役割も担っています。
これはおそらく、私が初めて本物の「AGI」を実感した瞬間だ。
経験がなくても、実験を始めるのをためらわないでください。
AIが一般の人々が専門的な壁を越えるのを支援するとき、かつて遠く unreachableに思えた多くの技術プロジェクトが、もはや遠くない可能性がある。
