自律生成AIとオートコンプリートの違いを愛するようになった方法

'自律生成AIとオートコンプリートの違い'の愛着方法

新しい生成型AIのコードツールは、コードを合成することで開発者がより迅速に効率的に仕事をするのを助けます。ChatGPTや他のLLMアプローチによって、このような生成型AIが広範な一般のユーザーにも利用可能になりました。開発者たちはそれに魅了されています。

しかし、コードツールのための生成型AIというものの基本的な違いがしばしば見過ごされています。そして、これらの違いは、開発者のタスクに対してどのアプローチがより良いかを知る上で重要な情報を提供します。コードツールのための生成型AIは、基本的に2つのカテゴリに分類されます。トランスフォーマーベースの大規模言語モデル(例:Copilot、ChatGPT)と強化学習ベースのシステム(RL)です。

RLとCopilotのようなLLMの最大の違いは、Copilotが一般的なコードの記述のための対話型のコード提案ツールであるのに対して、強化学習ベースのシステムは人の助けなしにコードを生成できるという点です。RLの例として、Diffblue Coverがあります。これは完全に機能するユニットテストのスイートを自律的に作成することができます。

Copilotは人間の開発者と協力して、ボイラープレートの作成や「外国の土地」(第三者のAPI)への呼び出しなどの煩雑で繰り返しの多いコーディングタスクを処理するために設計されています。Copilotにコードのユニットテストを提案させることはできますが、数百万行のコードを指し示して数時間後に正しくコンパイルおよび実行される何万ものユニットテストを得ることはできません。

なぜなら、それらは本質的に異なるもの、またはツールであり、開発者はまず何を達成したいのかを考えてからどちらのアプローチを選ぶ必要があるからです。

強化学習は複雑な問題を解決するための強力なツールとなり得ます。RLシステムは事前に収集されたデータを使用して学習するため、ラップトップ上で高速に実行され、特に大規模なデータセットに対して効果的です。

従来、オンライントレーニング(AIモデルが実世界と対話して学習すること)のコストは高すぎました。OpenAI、Google、Metaからの新しいLLMは、そのコストを吸収することでその費用の大部分を除去しました。しかし、開発者は生成されたコードを確認する必要があります!

たとえば、ユニットテストの作成を考えてみましょう。Copilotは1つのテストを書き、異なるテストを書くように誘導するための「プロンプトエンジニアリング」が必要であり、また結果の提案を編集して正しくコンパイルおよび実行するための時間が必要です。一方、RLは各アクションの影響を理解し、報酬を受け取り、その報酬を最大化するためにパラメータを再形成することができます。これにより、モデルはどのアクションが報酬を生み出すかを学習し、それを最大化するために従う方針(ストラテジー)を定義します。そして、ほら、自律的にコンパイルおよび実行されるユニットテストが生成されます。

トランスフォーマーモデルに基づくコード補完ツールは、与えられたテキストを分析して、次の単語やトークンを予測します。これらのトランスフォーマーモデルは大きく進化し、生成型AIを世界中のニュース見出しに載せました。彼らの出力は魔法のように見えます。GPT-2は2019年2月に最初にオープンソースモデルとしてリリースされたものの1つです。それ以来、これらのモデルのパラメータ数は大幅に拡大し、GPT-3.5では2022年11月に1750億までスケールアップしました。

OpenAI Codexは、GitHub CoPilotで使用される約50億のパラメータを持つモデルであり、オープンソースのコードで特に訓練されています。そのため、簡単なコメントからボイラープレートコードを生成したり、過去に見た例に基づいてAPIを呼び出したりするタスクに優れています。これらのモデルのワンショット予測の精度は、明示的に訓練された言語モデルと比較可能なレベルに達しました。残念ながら、GPT-4はブラックボックスです。モデルの開発に使用されたトレーニングデータの量やパラメータの数はわかりません。

LLM AIによるコード生成ツールは素晴らしいもののように見えるかもしれませんが、予測不可能であり、プロンプトの品質に大きく依存しています(LinkedInでの新しいプロンプト「エンジニアリング」の投稿が引き起こされるキュー)。これらは基本的にテキストパターンの統計モデルであるため、合理的に見えるが根本的に間違っている、または有名な幻覚的なコードを生成する可能性があります。

たとえば、GPT-3.5では、人間の強化学習がループに組み込まれており、人間によって回答がランク付けされ、改善された結果が得られます。さらに、人間が書いた応答のトレーニングも行われます。しかし、これらのモデルによって生成される微妙なミスを特定するという課題は残ります。これは意図しない結果を生み出す可能性があります。例えば、ChatGPTが関与したドイツのコーディング会社OpenCageの問題です。これらの問題は、これらのモデルのトレーニング中にどれだけのトレーニングデータやパラメータが使用されたかに関係なく、解決されることはありません。

さらに、大規模言語モデル(LLM)はテキストを処理することで学習します。しかし、学習の大部分はテキストや言語とは何の関係もありません。まるで教科書を読んでバスケットボールを学ぶか、ピックアップゲームをしてバスケットボールを学ぶかのようなものです。

強化学習はテキストに頼らずに実際に行動することに焦点を当てることで、LLMとは異なります。そして、ユニットテストの文脈では、このプロセスによってシステムは反復的に改善され、カバレッジが高く読みやすいテストを生成し、結果として開発者にとってより効果的かつ効率的なテストプロセスを提供することができます。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more