競技プログラミングとChatGPTを含むAIについて
はじめに
この記事は、ChatGPTを受けての競プロ周りの情報、およびchokudai個人の意見を発信したものです。基本的にはAtCoderの運営についても同方針を取る予定ですが、方針が変わり次第、AtCoderのHP/Twitter等で告知されます。
現在のAtCoderにおける競プロAIの実力についての事実
AtCoderのコンテストに対するソースコードはインターネット上に多くあり、おそらくそれを学習してChatGPTなどが作成されているため、過去問を利用して解ける/解けないを判定すると、過剰に解ける側に寄ってしまいます。
そこで、最新のコンテストで調査した事例について、Twitterからいくつか引用します。
ABC280にChatGPTを参加させてみました。結果はC問題まで解くことができ、順位は7245人中5290位でした。
— Izumi Satoshi (@izumisatoshi05) 2022年12月3日
A問題→ノータイムで正解
B問題→ノータイムで正解
C問題→1度未知のテストケースについて不正解を出すも、可能性を独力で思考し、3度目の提出で正解
(続く)#AtCoder
ChatGPTとイチャイチャしながらABC 279を解いてみた。
— Izumi Satoshi (@izumisatoshi05) 2022年12月1日
A,B,Cまでは間違いを指摘し合ったり褒め合ったりしながら順調に進んだけど、D問題でタイムアウトするのをどうしても解決できなかった。
ChatGPTと仲良くなれるし、凄く楽しいので、暇な人は是非どこまでいけるかやってみてほしい。
C問題までは解け、D問題は難しい、といった感じでした。
ABC279の正解状況
ABC280の正解状況
これらの結果を見た限りでは、「AtCoderの茶色に届くかどうかくらいの力がある」というのが、ChatGPT単体での実力だと思います。分布で言うと赤の矢印のあたり。回によっては茶色上位くらいまでは行くかもしれませんが、緑は厳しそうに見えます。
実は競技プログラミングAIというのは2022年2月の頃にDeepMindから発信されており、その時は、別サイトにて「上位54%の実力」と言われていたため、競プロの実力自体は特別新しい結果ではなく、ライトユーザーが簡単に試せるようになった点や、対話でコードを変更出来る点が新しい点ではないか、と考えています。
競技としての楽しさと競プロAI
AtCoderで提供する競技プログラミングは、教育的な面もありながら、最も重点を置いているのは競技性です。スポーツとして様々な人に楽しんでもらうのが、AtCoderの運営意義となります。
ChatGPTの登場で、競技性がどう変わるか、という話ですと、初心者~初級者帯においては少し楽しくない方向に変わり、中級者帯においてはほぼ変わらないか、新しい楽しみが生まれる、というのが現在の考えです。
前半部分はあまり楽しくない方向性に変わるかな、と思っています。問題文を張り付けてAIの出力を提出することは、やり方を考えてコードを書くことと比べて一般に楽しくはありませんし、AIの出力を読んで手動で軽微なバグ修正を行う、というのもあまり楽しくはなさそうです。
後半部分は、AIがそのまま解ける問題はほぼ存在せず、普通に使う分には何も変わらないのが現状です。後々紹介しますが、対話によってアルゴリズムをAIと作り上げていく、ということが可能であり、こちらは面白いかもしれない、と考えています。
いずれにせよ、現時点においては、ある程度の順位を取るには、自力でアルゴリズムを考え、コードを書くことが不可欠であり、ChatGPTで上位を獲得できる、という状況ではなく、競技性は崩れていないと言えそうです。
教育面についてと競プロAI
競技プログラミングに参加するためには、これまではプログラミングの知識が必要でした。ですが、今後競技プログラミングをやる上では、日本語でのAIとの対話のみでコードを生成・修正する、という選択肢が生まれます。
様々なものがAI化されていく中、今後「AIと対話する能力」の重要性は高まっていくでしょう。その点において、AIと対話しながらコードを作っていく、という行為は、むしろ良いことだと言えます。
一方、AtCoder Beginner ContestのA~C問題がChatGPTなどで解けるようになってしまうと、これらの問題は、自力で書くよりAIツールを使った方が良い、ということになり得ます。こうなってしまうと、競技プログラミングを学び始めたばかりの初学者が、簡単な問題でコーディングの基礎を身に着けることのないまま、AIに解けない高難易度問題に挑戦する形になり、学習を阻害する恐れがあります。使用することで瞬間的には成績が伸びるかもしれませんが、頭打ちが早くなりそうです。
AtCoderでの競プロAIでの使用可否
以上により、AtCoderにおいて、AIを使って回答することは、禁止ではないが、コピペだけの利用については非推奨、としたいと思います。
禁止をしない理由は、
- AIが書いたコードか人間が書いたコードかを見分けることは困難であり、そもそも禁止することが難しい
- 多くのユーザにとって、現時点では、競プロの楽しみを阻害するものにはなっていない
という点が挙げられます。
コピペのみでの取り組みを非推奨とする理由は、
- 初学者の理解を妨げたり、モチベーションの減少につながりやすい
- 単純にゲームや競技として見た時に面白くない
という点が挙げられます。
監視体制が取れるオンサイトコンテストのみ禁止、というのも今後ありえなくはないですが、そのレベルで「コピペだけで良い成績が取れる」となるのは現時点ではないと考えています。
AIの登場における競プロ自体の価値の変化
この章については、状況がすぐに変わるので、あくまで現時点で自分が知り得ているものについての言及となります。
AtCoderでは、以下のコンテストを提供しています。
Algorithm系
Heuristic系
- AtCoder Heuristic Contest
このうち、競プロAIで解けたことが確認できているのは、AtCoder Beginner Contestの前半の問題のみとなります。
Beginner Contestという名前に反して、上位者でも楽しめるコンテストではありますが、扱う内容は教育を意識した基礎的なものであり、アドホックな実装が少ないものとなります。Regular ContestやGrand Contestでは、その問題に合わせた思考が必要となりますが、こうした問題はまだ競プロAIでは解けていません。
競プロ以外を見た時に、チャットAIでは以下のような傾向があるように思えます。
- 単純に覚えれば良いもの、書き方を参照すれば良いものは答えられる
- 工夫が必要なものはあまり答えられない
- 単純なバグなどは自力で修正出来るが、根本的なロジックは修正出来ない
となった時に、問題に合わせたアドホックな計算量改善が出来るAtCoderのようなアルゴリズム設計能力は、現時点でAIが解決できていないジャンルであり、むしろAI登場前よりも相対的に価値が高まっているのではないか、と個人的には感じています。
「どれだけ幅広い典型的な知識や落とし穴を知っているか」の価値が落ちているように感じ、その問題固有の特徴に対して、もう少し上のレイヤーで物事を考える部分に価値があるのかな?と思います。
もちろんこれはあくまで現時点での話であり、今後はどうなるか分かりません。特に、競技として明確であるために、入出力の仕様などがはっきりしている競技プログラミングは、比較的AIで扱いやすそうなジャンルです。いつブレイクスルーが起き、人間を越えるAIが出てきてもおかしくない状況です。ですが、イラストAIの急激な進化を見ると、何が出来るようになるか、何が出来ないままになるかは、一切予想がつかない、と言ってもいいのではないかと思います。
まとめ
ChatGPTの登場は衝撃的でしたが、現状競技プログラミングに与える影響は小さいと言えます。今後、AIの進化などにより、状況が変わればまたルールの検討などを行いますが、今のところは特に制限せずとも、競技性が大きく変わることはなさそうです。
今後もAIの動向については注視していきたいと考えています。
競技プログラミングの在り方 ~「競技プログラミングを我々が終わらせる」を受けて~
NewsPicksのプロピッカーになりました
4/1よりNewsPicksのプロピッカーになったので、NewsPicksについて考えていること、なんでプロピッカーの活動をしようと思ったか、あたりをブログに書いておきます!
続きを読む