最新AI論文をキャッチアップ

初心者向けプログラミング教育に優れた講師は人間と大規模言語モデル(ChatGPT, GPT-4)のどちらか?

初心者向けプログラミング教育に優れた講師は人間と大規模言語モデル(ChatGPT, GPT-4)のどちらか?

Large language models

3つの要点
✔️ GPT-4が「プログラムの修正」「プログラムの解説」など、いくつかのプログラミング教育のシナリオにおいて、ChatGPT(GPT-3.5)を大幅に上回る性能を示し、人間に匹敵する性能を達成。
✔️ 一方で、より深いプログラムの理解が求められる「フィードバック生成」や「演習用プログラムの作成」のシナリオでは、GPT-4と人間に依然として大きな性能差が存在。
✔️ さらなる改善に向けて、より多くの専門家を含む大規模な実験、他のプログラミング言語への拡大、多言語環境でのモデルの評価、生徒を対象とした実証研究など、さまざまなアプローチによる更なる検証に期待。

Generative AI for Programming Education: Benchmarking ChatGPT, GPT-4, and Human Tutors
written by Tung PhungVictor-Alexandru PădureanJosé CambroneroSumit GulwaniTobias KohnRupak MajumdarAdish SinglaGustavo Soares
(Submitted on 29 Jun 2023 (v1), last revised 30 Jun 2023 (this version, v2))
Subjects: Computers and Society (cs.CY); Artificial Intelligence (cs.AI); Computation and Language (cs.CL)
Comments: This article is a full version of the poster (extended abstract) from ICER'23

code:

本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。

概要

2022年にChatGPTがリリースされて以降、多くの人が大規模言語モデルの汎用性の高さに驚いたのではないでしょうか?それから1年も経たないうちに、大規模言語モデルを利用した数々のサービスがリリースされました。大規模"言語"モデルという名の通り、"言語"を扱うものを中心に多くの用途で利用されています。私たちが利用する自然言語だけではなく、プログラミング言語でも利用されています。文章の校正・要約・翻訳、ウェブ検索エンジンの上位互換、弁護士・医師など専門知識が必要な仕事のサポート、コーチングやカウンセリングなど利用用途は非常に多義に渡ります。そして、プログラミングのサポート、学習サポートも可能であり、次世代教育を変える技術として、コンピュータ教育においても期待されています。

この記事で紹介する論文では、初心者のプログラミング教育における大規模言語モデルの有用性を検証しています。この1年、ChatGPTの盛り上がりもあり、プログラミング教育において、大規模言語モデルを利用して様々なシナリオを検証した研究はいくつか報告されています。しかし、これらの研究は、利用している大規模言語モデルが古かったり、特定のシナリオ(例えば、解説文の生成)のみを検証していたり、限定的なものが多く、プログラミング教育に関する網羅性のあるシナリオに対して、最新モデルで評価する体系的な研究はまだにありません。

そこで、今回紹介する論文では、プログラミング教育の様々なシナリオにおける人間とChatGPT(GPT-3.5ベース)とGPT-4の性能を体系的に評価・比較しています。つまり、初心者向けプログラミング教育において、古いモデル(ChatGPT)と新しいモデル(GPT-4)にどの程度違いがあるのか、大規模言語モデルは人と比較してどの程度違いがあるのかを評価しています。今回の論文では、シナリオ(1) プログラムの修正、(2) ヒントの生成、(3) 評価のフィードバック、(4) ペアプログラミング、(5) プログラムの解説、(6) 演習用プログラムの作成、の6つを検証しています。

この記事では、このうち「(1) プログラムの修正」「(5) プログラムの解説」「(6) 演習用プログラムの作成」について、紹介したいと思います。

シナリオ1:プログラムの修正

このシナリオでは、学生のプログラム(バグ有り)を適切に修正できるかを検証しています。ChatGPTとGPT-4に対する入力として、下図のようなプロンプトを使用しています。プロンプトでは検証するシナリオの概要と、問題の説明{probrem_description}、そして、学生のプログラム(バグ有り){buggy_program}で構成されています。このプロンプトを入力した結果として、修正されたプログラムが出力されます。


出力されたプログラムは、問題に対して正しいかどうかの「Correct」と、バグのあるプログラムとの間のトークンベースの編集距離の「EditTokens」という指標で評価されています。

「EditTokens」は手を加えた程度を表しています。「Correct」は正しいものを1正しくないものを0として集計しています。下図の結果を見てみると、「Correct」の集計結果は、GPT-4が88.0%で、ChatGPTの68.0%と比べて大幅に改善しており、人間(Tutor)の100.0%にも近づいていることがわかります。一方で「EditTokens」は、GPT-4が36.6と、人間(Tutor)の19.0と比べて大きな値になっており、バグのあるプログラムを修正する際により多くの編集をしていることがわかります。人間の方がより少ない修正で正しいプログラムを得ており、効率的であると言えるかもしれません。

シナリオ2:プログラムの解説

このシナリオでは、あるプログラムの特定部分を正しく説明できるかを検証しています。学生が理解できないプログラムを解説することはプログラミング教育において最も基本的なスキルの一つです。ChatGPTとGPT-4に対する入力として、下図のようなプロンプトを使用しています。入力として、シナリオの概要、問題の説明{probrem_description}、バグのないプログラム{program}、そのうち学生が理解しようとしているプログラムの特定の部分{program_part_to_explain}で構成されています。

出力されたプログラムは、出力された説明が全体のプログラムのコンテキストにおける特定部分に関する正確な情報を含んでいるかどうかの「Correct」、出力された説明が全体のプログラムのコンテキストにおける完全な情報を含んでいるかどうかの「Complete」、出力された説明が理解しやすく、読みやすいフォーマットであり、冗長になっていないかの「Comprehensible」で評価されています。つまり、正確性、網羅性、簡潔性を評価しています。また、「Overall」は、出力された説明が上記の3つの指標を全て満たす場合のみ集計されています。

下図がそれぞれの指標の結果です。「Overall」をみると、GPT-4が84.0%と、やはりChatGPTの72.0%と比べると高いパフォーマンスを示しています。また、人間(Tutor)の92.0%とも近いパフォーマンスを示していることが分かります。

シナリオ3:演習用プログラムの作成

このシナリオでは、学生がバグを見つけて修正するような新しい演習問題を生成できるかを検証しています。教育において、多くの問題で演習することは大切であり、そのための問題を生成できることも大切なスキルの一つです。ChatGPTとGPT-4に対する入力として、下図のようなプロンプトを使用しています。入力として、シナリオの概要、問題の説明{probrem_description}、バグのあるプログラム{buggy_program}、バグを修正したプログラム{line_diffs_with_fixed_program}で構成されています。

出力されたプログラムは、出力された新しい問題がその説明と仕様に関して正確で解くことができるかどうかの「Correct」、出力された新しい問題が入力された問題よりも簡単かどうかの「Simpler」、出力された新しいバグを含むプログラムが、生徒のバグを含むプログラムと同じようなバグを持っているかどうかの「SimilarBugs」、出力された新しいバグを含むプログラムが他のバグを含んでいないかどうかの「MinimalBugs」で評価しています。

むやみにバグを含む問題では、学ぶべきポイントが学べないため、「SimilarBugs」と「MinimalBugs」については、適切な類題が作成できているかということを判断する指標としているようです。「Overall」は、出力された新しい問題と新しいバグのあるプログラムが共同で上記の4つの評価の全てを満たす場合のみ集計されています。下図は集計結果です。

「Overall」をみると、GPT-4の22.0%が、ChatGPTの10.0%に比べて数値が改善しているものの、人間(Tutor)の74.0%と比べると大幅に劣っていることを示しています。内訳を見てみると、新しく出力したプログラムに、入力プログラムと同様のバグを含められているかを表す指標である「SimilarBugs」において同様の傾向が見られます。Overallが低くなっている主な原因として、類似するバグを含むプログラムの生成が難しいことが考えられます。

まとめ

この論文では、各シナリオにおいて、GPT-4がChatGPT(GPT-3.5ベース)に比べて高いパフォーマンスを示し、一部のシナリオでは人間(Tutor)と同等のパフォーマンスを示しています。人に代替するほどの有用性は確認できないものの、大規模言語モデルのアップグレードに応じて性能が高くなっており、今後、プログラミング教育において有用なツールになりうることを示しています。実現できれば、高度な言語処理能力と広範な知識を活用することで、プログラミングの学習をサポートし、教育者の負担を軽減することが可能になります。

今回の研究では2人の専門家が評価者として参加していましたが、さらに多くの専門家を含めた大規模な評価や、学生を対象とした実証研究など、さまざまなアプローチによるさらなる検証が期待されます。

この論文は、プログラミング教育の観点から、現時点での大規模言語モデルの可能性と限界を示し、大規模言語モデルを活用した今後のプログラミング教育の更なる改善に繋がるものと思います。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!
Takumu avatar
インターネット広告企業(DSP、DMP etc)や機械学習スタートアップで、プロジェクトマネージャー/プロダクトマネージャー、リサーチャーとして働き、現在はIT企業で新規事業のプロダクトマネージャーをしています。データや機械学習を活用したサービス企画や、機械学習・数学関連のセミナー講師なども行っています。

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする