トレンドトピック
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
翻訳:大規模な言語モデルが実際にソフトウェアを構築できない理由
コンラッド・アーウィン著
私が多くの時間を費やしていることの 1 つは、ソフトウェア エンジニアへのインタビューです。 これは明らかに難しい作業であり、私にはコツがあるとはあえて言えません。 しかし、それは私に有能なソフトウェアエンジニアが何をするのかを考える時間を与えてくれました。
ソフトウェアエンジニアリングのコアサイクル
真の愛好家を見ると、常に次の手順をサイクルで実行していることがわかります。
* ニーズのメンタルモデルを構築します。
* 書く(うまくいけば?!) ) 要件を実装するコード。
* コードが実際にどのように動作するかのメンタルモデルを構築します。
* 2 つの違いを見つけて、コード (または要件) を更新します。
これらのステップを達成する方法はたくさんありますが、効果的なエンジニアの素晴らしいところは、明確なメンタルモデルを構築して維持する能力です。
大規模言語モデルのパフォーマンス
公平を期すために言うと、大規模な言語モデルはコードを書くのに非常に優れています。 また、問題を指摘したときにコードを更新するのもうまくいきます。 また、コードの読み取り、テストの書き込みと実行、ログの追加、(おそらく)デバッガーの使用など、実際のエンジニアが行うすべてのことを行うことができます。
しかし、彼らにできないことは、明確なメンタルモデルを維持することです。
大規模な言語モデルは、自分たちが書いたコードが実際に使用可能であると思い込んで、終わりのない混乱に陥るでしょう。 テストが失敗した場合、それが修正コードかテスト修正かを推測することしかできません。 イライラすると、すべてを切り取って最初からやり直します。
これは、私がエンジニアに期待するものとは正反対です。
ソフトウェアエンジニアは、作業中にテストします。 テストが失敗した場合、メンタルモデルを使用して、コードを修正するかテストを修正するかを決定したり、決定を下す前に詳細情報を収集したりできます。 イライラしたときは、人とコミュニケーションをとって助けを求めることができます。 すべてを削除して最初からやり直すこともありますが、問題をより明確に理解した上で選択することです。
しかし、それはすぐになるでしょう?
モデルの能力が向上するにつれて、これは変化しますか? 恐らく。。 しかし、これにはモデルの構築と最適化の方法を根本的に変える必要があると思います。 ソフトウェアエンジニアリングには、単にコードを生成する以上のモデルが必要です。
人は問題に遭遇したとき、一時的に文脈全体を脇に置いて、目の前の問題の解決に集中し、目の前の大きな問題に戻ることができます。 また、全体像と細部を切り替えて、細部を一時的に無視して全体に焦点を当て、必要に応じて部分を掘り下げることもできます。 「コンテキストウィンドウ」により多くの単語を詰め込んだだけで生産性が向上するわけではなく、私たちを狂わせるだけです。
大量のコンテキストを処理できますが、これらの生成モデルには現在、明確なメンタル モデルを維持する能力に直接影響するいくつかの深刻な問題があることがわかっています。
* コンテキストの省略: モデルは、見落とされているコンテキスト情報を見つけるのが苦手です。
* 近近性バイアス: コンテキスト ウィンドウを操作するときに、深刻な近近性バイアスの影響を受けます。
* 幻覚: 彼らはしばしば、存在すべきではない詳細について「空想」します。
これらの問題は克服できないわけではない可能性があり、研究者はモデルにメモリを追加して、私たちと同様の思考スキルを発揮できるように取り組んでいます。 しかし残念ながら、今のところ、彼らは(ある程度の複雑さを超えた後)実際に何が起こったのかを本当に理解することができません。
2つの類似した「メンタルモデル」を同時に維持し、違いを見つけ、コードを更新するか要件を更新するかを決定することができないため、ソフトウェアを構築できません。
それで、今はどうするでしょうか?
明らかに、大規模な言語モデルはソフトウェアエンジニアにとって役立ちます。 コードを迅速に生成し、要件とドキュメントの統合に優れています。 一部のタスクでは、これで十分です:要件は十分に明確で、問題は一晩で完了できるほど単純です。
そうは言っても、ある程度複雑なタスクでは、実行可能なソリューションを最終的に生成するために反復するのに十分なコンテキストを正確に維持することはできません。 ソフトウェアエンジニアは、要件が明確であり、コードが実際に主張する機能を提供していることを確認する責任があります。
Zed では、人間と AI エージェントが一緒にソフトウェアを構築できる未来を信じています。 しかし、私たちは(少なくとも今のところ)あなたがハンドルを握るドライバーであり、大規模な言語モデルはあなたの指先で使えるもう1つのツールにすぎないと固く信じています。
62.82K
トップ
ランキング
お気に入り