1720276187
2024-07-06 12:00:01
この記事は当社の独占記事の一部です IEEEジャーナルウォッチシリーズ IEEE Xplore と提携して。
プログラマーは数十年にわたって AI モデルのコードを書いてきましたが、今や一巡して AI がコードの記述に使用されています。しかし、AI コード ジェネレーターは人間のプログラマーと比べてどうなのでしょうか?
6月号に掲載された研究 IEEEソフトウェアエンジニアリングトランザクション OpenAI の ChatGPT によって生成されたコードを、機能性、複雑さ、セキュリティの観点から評価しました。結果によると、ChatGPT は機能的なコードを生成するという点では、タスクの難易度、プログラミング言語、その他のさまざまな要因に応じて、成功率が 0.66% から 89% と非常に幅広く、成功率もさまざまです。
AI ジェネレーターは人間よりも優れたコードを生成できる場合もありますが、分析により AI 生成コードに関するセキュリティ上の懸念も明らかになりました。
ユーティアン・タン氏は、この研究に参加したグラスゴー大学の講師です。同氏は、AI ベースのコード生成は、生産性の向上とソフトウェア開発タスクの自動化という点でいくつかの利点をもたらす可能性があると指摘していますが、これらのモデルの長所と限界を理解することが重要です。
「包括的な分析を行うことで、ChatGPT ベースのコード生成で発生する潜在的な問題や制限を明らかにすることができます… [and] 生成技術を改善する必要がある」とタン氏は説明する。
これらの制限をより詳細に調査するために、彼のチームは、C、C++、Java、JavaScript、Python の 5 つのプログラミング言語で、LeetCode テスト プラットフォームからの 728 のコーディング問題に対処する GPT-3.5 の能力をテストしようとしました。
「2021年までにChatGPTがアルゴリズムの問題でより良い結果を出せる理由として合理的な仮説は、これらの問題がトレーニングデータセットで頻繁に見られるということだ。」 —グラスゴー大学のユティアン・タン氏
全体的に、ChatGPT はさまざまなコーディング言語での問題を解決するのにかなり優れていましたが、特に 2021 年以前に LeetCode に存在していたコーディングの問題を解決しようとするときに優れていました。たとえば、ChatGPT は、簡単、中程度、難しい問題に対して、それぞれ約 89%、71%、40% の成功率で機能的なコードを生成することができました。
「しかし、2021年以降のアルゴリズム問題になると、ChatGPTの機能的に正しいコードを生成する能力が影響を受けます。簡単なレベルの問題であっても、質問の意味を理解できないことがあります」とタン氏は指摘する。
たとえば、ChatGPT の「簡単な」コーディング問題に対する機能コードを生成する能力は、2021 年以降 89% から 52% に低下しました。また、「難しい」問題に対する機能コードを生成する能力も、この時期以降 40% から 0.66% に低下しました。
「2021年までにChatGPTがアルゴリズムの問題でより良い結果を出せる理由として合理的な仮説は、これらの問題がトレーニングデータセットで頻繁に見られるということだ」とタン氏は言う。
本質的に、コーディングが進化するにつれて、ChatGPT はまだ新しい問題や解決策に触れていません。ChatGPT には人間の批判的思考能力が欠けており、以前に遭遇した問題にしか対処できません。これが、ChatGPT が新しいコーディングの問題よりも古いコーディングの問題に対処する方がはるかに優れている理由を説明できます。
「ChatGPTはアルゴリズムの問題の意味を理解していないため、誤ったコードを生成する可能性があります。」 —グラスゴー大学のユティアン・タン氏
興味深いことに、ChatGPT は、同じ LeetCode の問題に対する人間の解決策の少なくとも 50% よりも実行時間とメモリのオーバーヘッドが小さいコードを生成できます。
研究者らは、LeetCode からのフィードバックを受け取った後、ChatGPT が独自のコーディング エラーを修正する能力についても調査しました。彼らは、コンテンツまたは問題を理解しなかったために ChatGPT が最初に誤ったコーディングを生成した 50 のコーディング シナリオをランダムに選択しました。
ChatGPT はコンパイルエラーの修正は得意でしたが、自身の間違いを修正するのはあまり得意ではありませんでした。
「ChatGPTはアルゴリズムの問題の意味を理解していないため、誤ったコードを生成する可能性があります。そのため、この単純なエラーフィードバック情報だけでは不十分です」とTang氏は説明します。
研究者らはまた、ChatGPT で生成されたコードにはヌルテストの欠落などかなりの脆弱性があることも発見したが、その多くは簡単に修正可能だった。また、結果によると、C で生成されたコードが最も複雑で、次に C++ と Python が続き、人間が書いたコードと同程度の複雑さだった。
Tangs 氏は、これらの結果に基づいて、ChatGPT を使用する開発者が、ChatGPT が問題をよりよく理解したり脆弱性を回避したりできるように、追加情報を提供することが重要だと述べています。
「例えば、より複雑なプログラミングの問題に遭遇した場合、開発者は可能な限り関連する知識を提供し、潜在的な脆弱性に注意する必要があることをプロンプトで ChatGPT に伝えることができます」と Tang 氏は言います。
あなたのサイトの記事から
ウェブ上の関連記事
#ChatGPT #コード #は実際にコードを書くのが得意ですか