GPT-3.5ベースのChatGPTのコーディング能力は「古い問題には有効も新しい問題では困難に直面する」ことが明らかに

GPT-3.5ベースのChatGPTのコーディング能力は「古い問題には有効も新しい問題では困難に直面する」ことが明らかに - 画像


GoogleやMistral AIなどからプログラミングに特化したAIツールが登場しており、大手テクノロジー企業のCEOが「AIがコードを書くのでもうプログラミングを学ぶ必要はない」と発言するなど、AIによるプログラミングは注目を集めています。そんなAIによるプログラミング能力を分析した研究が公開されており、AIモデルがトレーニングされたタイミングによっては困難に直面することがあることが判明しました。
No Need to Lift a Finger Anymore? Assessing the Quality of Code Generation by ChatGPT | IEEE Journals & Magazine | IEEE Xplore
https://ieeexplore.ieee.org/document/10507163


ChatGPT Code: Is the AI Actually Good At Writing Code? - IEEE Spectrum
https://spectrum.ieee.org/chatgpt-for-coding
ソフトウェアエンジニアリング関連の査読付き科学ジャーナルであるIEEE Transactions on Software Engineeringの2024年6月号に掲載された最新の研究論文では、OpenAIのチャットボットであるChatGPTによって生成されたコードを機能性・複雑性・セキュリティという3点から評価しています。その結果、ChatGPTは機能的なコードを生成する際に、タスクの難易度・プログラミング言語・その他のさまざまな要因に応じ、0.66~89%と非常に幅広い成功率を示すことが明らかになりました。AIは人間よりも優れたコードを生成することもできますが、分析ではAI生成コードに関するセキュリティ上の懸念も指摘されています。
論文の著者のひとりであるグラスゴー大学のソフトウェアエンジニアリング講師のユーティアン・タン氏は、AIコード生成について「生産性の向上とソフトウェア開発におけるタスクの自動化という点で利点をもたらす可能性があります」と指摘していますが、モデルの長所と限界を把握することも重要であると強調しています。タン氏は「包括的な分析を行うことで、ChatGPTベースのコード生成で発生する潜在的な問題や制限を明らかにし、生成技術を改善することもできます」と語りました。

GPT-3.5ベースのChatGPTのコーディング能力は「古い問題には有効も新しい問題では困難に直面する」ことが明らかに - 画像


研究ではAIコード生成の限界を詳細に調査するため、GPT-3.5ベースのChatGPTにC言語、C++、Java、JavaScript、Pythonという5つのプログラミング言語で、テストプラットフォームのLeetCodeから集めた728種類のコーディング問題を解かせるというテストを実施しています。
ChatGPTのコーディング能力は全体的に優秀で、特に2021年以前からLeetCodeに存在しているコーディング問題を解決しようとする時に、非常に優れたパフォーマンスを発揮したそうです。例えば、ChatGPTは低・中・高という3つの難易度の問題に対して、それぞれ89%、71%、40%の確率で機能的なコードを生成することに成功しています。
しかし、2021年以降にLeetCodeに投稿されたコーディング問題になると、ChatGPTは機能的なコードを生成する確率が著しく低下するそうです。これは難易度が低い問題であっても同様で、「そもそもChatGPTは問題の意味を理解できないケースがあります」とタン氏は指摘しました。この理由について、タン氏は「ChatGPTには人間の持つ批判的思考能力が欠けているため、過去に遭遇したことのある問題にしか対処することはできません。ChatGPTが比較的新しいコーディング問題にうまく対処できない理由がこれです」と語っています。
なお、ChatGPTは同じコーディング問題を解いた人間のコードよりも、50%も実行時間およびメモリのオーバーヘッドが小さいコードを生成することができるそうで、AIコード生成が優れていることも明らかです。

GPT-3.5ベースのChatGPTのコーディング能力は「古い問題には有効も新しい問題では困難に直面する」ことが明らかに - 画像


研究チームはLeetCodeからフィードバックを受け、ChatGPTが独自のコーディングエラーを修正する能力についても調査しています。この調査によると、ChatGPTはコンパイルエラーの修正は得意なものの、自身の間違いを修正するのはあまり得意ではないことが判明しています。これについてタン氏は、「ChatGPTはアルゴリズムの問​​題の意味を理解していないため、誤ったコードを生成する可能性があります。つまり、単純なエラーフィードバック情報だけでは不十分というわけです」と記しています。
他にも、研究チームはChatGPTで生成されたコードにはヌルテストの欠落など、脆弱(ぜいじゃく)性が存在していると指摘。ただし、脆弱性の多くは簡単に修正可能であるとも指摘されています。
この他、C言語で生成されたコードが最も複雑で、次にC++とPythonが続き、これらは人間が書いたコードと同程度の複雑さだったことも明らかになっています。
研究結果について、タン氏は「これらの結果に基づくと、ChatGPTを使用する開発者が、ChatGPTが問題をよりよく理解したり脆弱性を回避したりできるように、追加情報を提供することが重要であることがわかります」「例えば、より複雑なプログラミング問題に遭遇した場合、開発者は可能な限り関連する知識を提供し、潜在的な脆弱性に注意する必要があることをプロンプトでChatGPTに伝える必要があります」と語り、ChatGPTを使ったコーディングにおけるヒントを記しています。

ジャンルで探す