AtCoder生成AI対策ルールの考察
開催中のABCの問題文はコピー禁止と考えるのが無難そう。
なお、「コピー(操作を)しない」ことは「無難」であることの必要条件であっても、十分条件だとはいえない。
はじめに
有名な競技プログラミングサイトの AtCoder で、コンテスト中に問題文を生成AIにコピペして解かせることにより、自分の頭を使わずに素早く問題に正解する行為への対策を主目的としたルールが制定された。
今回は、このルールに関して気になったポイントを挙げていく。
なお、これらには独自の解釈が含まれ、運営側の解釈とは異なる可能性がある。
また、執筆時点のルールに基づいているが、今後ルールは変更される可能性がある。
この記事を参考にした、もしくは参考にしなかったことにより生じた一切の損害について、筆者は責任を負わない。この損害には、やってはいけないことをやっていいと誤解してやることによりBANされることや、やっていいことをやってはいけないと誤解してやらないことにより競技上不利になることなどが含まれる。
ルールの概要
開催中の AtCoder Beginner Contest の「問題として発信されている情報」を、一部の例外を除いて「ソフトウェアに入力として与える行為」が禁止となっている。
例外の一つとして「ブラウザなど、人間が閲覧するためのソフトウェア」は制限の対象外となっているので、普通にWebブラウザで問題ページを開いた (このとき、問題の情報がWebブラウザにダウンロードされる) だけでルール違反になることはなさそうである。
気になったポイント
日本語版と英語版のルールが違う
後述のとおり、英語版にのみ入っている条件があるなど、日本語版と英語版のルールに差異がみられる。
「内容に差異がある場合、○○語版の内容を優先する」的な規定も見当たらない。
どちらもルールであるため、両方に従っておくのが無難そうである。
このルールについて「気づかない対策もちゃんとある」という主張がある。
AtCoderの生成AI新ルール、気づかない対策もちゃんとあるので大丈夫です。 pic.twitter.com/qHpiPjoVVE
— chokudai(高橋 直大)@AtCoder社長 (@chokudai) June 7, 2024
しかし、日本語表示の画面では日本語版へのリンクのみが、英語表示の画面では英語版へのリンクのみが表示されているようである。
そのため、他方の言語版があること、そして他方の言語版の内容が異なることには気づけない可能性があり、危険である。
ソフトウェアで問題の情報に該当する図を描くのは禁止?
日本語版ルールの最初に、以下の記述がある。
AtCoderの開催中のコンテストの問題として発信されている情報の全部または一部を、ソフトウェアに入力として与える行為を禁止します。
「情報と知識」って何だろう オフィス分野|内田洋行
では、以下の記述がある。
「情報」とは何らかの表現(文字・会話・絵図など)を通じて伝えられる内容
すなわち、「情報」とは問題文などの「表現」ではなく、それを通じて「伝えられる内容」を指していると考えられることがわかる。
したがって、問題文をそのまま使わず、問題文の情報を別の表現で表しても (たとえば、問題文の情報を表す図を描いても)、それが問題文の情報であることに変わりはないと考えられる。
そのため、問題文の情報を表す図をペイントソフトウェアやドローソフトウェアで描いたり、テキストエディタでアスキーアートとして表現したりする行為は、問題文の情報をこれらのソフトウェアに入力する行為であり、禁止されると考えられる。
日本語版ルールには
人間が認識した問題文に基づいて人間が出力したものを生成AIに入力として与えるのは許容します。
と書かれているが、裏を返せば生成AI以外に入力として与えるのは(この規定では)許容されないと考えられる。
AIを用いない単純な画像エディタやテキストエディタで図などを描く行為は、「生成AIに入力として与える」行為だとはいえないだろう。
そもそも「そのソフトウェアが生成AIで動いているかどうかを判別する手法は基本的に存在しない」という主張があるにもかかわらず (気付かないが生成AIが使われているケースが考えられるだけでなく、生成AIが使われていると思っても実際には使われていないケースもあるかもしれない)、「生成AI」に限った条件があるというのは、理解に苦しむ。
「なんで生成AIじゃないのも禁止なの?」って話をちょこちょこ見るけど、そのソフトウェアが生成AIで動いているかどうかを判別する手法は基本的に存在しないからです。
— chokudai(高橋 直大)@AtCoder社長 (@chokudai) June 7, 2024
英語版ルールでも
It is permissible to input into generative AI
とあり、「生成AIへの入力」に限って許可する記述がある。
ただし、英語版ルールの冒頭は
It is prohibited to directly input all or part of the information issued as problems in ongoing AtCoder contests into software.
となっており、日本語版には無さそうな「directly」という条件が加わっている。
問題文 (テキスト) をそのまま入力せず、手動で図の形式に変換して入力する行為は、そもそも direct ではないために英語版ルールには引っかからない可能性がある。
とはいえ、日本語版では「directly」的な条件は無く、問題の情報であれば例外を除いてソフトウェア (特に、生成AIではないソフトウェア) に入力として与える行為は禁止されるだろう。
プロキシやリモートデスクトップなどの利用は禁止?
AtCoder のWebサイトの通信は、HTTPSで暗号化されている。
そのため、暗号化された情報が入ったパケットをそのまま転送するルーターを通すことは、「問題の情報をソフトウェアに入力として与える行為」ではないと考えられる。
しかし、一旦HTTPSを復号するタイプのプロキシを用いた場合は、問題の情報がソフトウェアに入力されてしまう可能性がある。
また、リモートデスクトップ(的な動作を行うソフトウェア)で問題文が表示された画面を映す行為も、問題文のスクリーンショットをソフトウェアに入力として与える行為に相当し、禁止される可能性がある。
とはいえ、これらのソフトウェアを用いる目的が人間が閲覧するための情報を転送することである場合、広義で「ブラウザなど、人間が閲覧するためのソフトウェア」に該当し、入力が許容される可能性も考えられる。
なお、実況の録画に関しては、今後のルール改正で許可される可能性が比較的高そうである。
ただし、具体的な許可範囲はわからない。
めちゃめちゃルール練って設定したのにこれは気づかなかった……。
— chokudai(高橋 直大)@AtCoder社長 (@chokudai) June 7, 2024
競技中生配信はもちろんだめだけど、録画して競技後アップロードはOKです。これはルールに加えておきます。(今週間に合わないけど気にしないで大丈夫です)https://t.co/OMzOjAThhi
一部のウイルス対策ソフトの利用は禁止?
ウイルス対策ソフトの中には、表示するWebページの内容を検査するものがある可能性がある。
このようなタイプのウイルス対策ソフトが動作している環境で問題文を閲覧すると、問題文がウイルス対策ソフトに入力として与えられてしまう可能性がある。
これは「人間が閲覧するため」とは考えにくく、前述のプロキシやリモートデスクトップなどよりさらに許容されない可能性が高そうだと考えられる。
コピーは許されてもペーストは許されない?
日本語版ルールの例外として、以下の記述がある。
問題文で与えられる固有の整数や固有名詞などの文字列は、任意の場合においてコピーが許されます。
問題ページでコピーボタンが表示される項目は、任意の場合においてコピーが許されます。
翻訳専門のソフトを利用する場合は、そのまま問題文をコピーして構いません。
これらは、問題文のうち対象の部分の「コピー」を許す記述である。
しかし、「コピー」は許されていても、コピーしたデータの「ペースト」も許すとは書かれていない。
「コピー」だけで自動的に「入力」として取り込むソフトウェアもあるが、多くのソフトウェアでは「ペースト」(もしくは「貼り付け」など) を行って初めて「入力」が行われるだろう。
「ペースト」も含めた一連の操作を「コピー」と呼んでいる可能性も考えられる。
特に、翻訳に関する部分については、この解釈が自然かもしれない。
しかし、ソースコードへの「ペースト」については、以下のように明示的に「一律禁止」となっている。
問題文の一部をソースコードにコピー・ペーストする行為は、GitHub Copilotなどの無自覚な利用につながるため、一律禁止とさせていただきます。
ただの「禁止」ではなくより強いと思われる「一律禁止」であるため、固有の整数や固有名詞などの文字列の「ペースト」も含めて「一律禁止」であると解釈できる。
英語版のルールにおいて、日本語版と同様に、一部の「copying」を許す例外が記述されている一方、「the source code」への「Copying and pasting」は「prohibited」となっている。
コピーボタンを表示すればコピーし放題?
日本語版ルールには、以下の記述がある。
問題ページでコピーボタンが表示される項目は、任意の場合においてコピーが許されます。
英語版ルールにも、以下の記述がある。
Items with a copy button displayed on the problem page can be copied in any case.
ここにある条件は「問題ページでコピーボタンが表示される項目」というだけで、「標準でコピーボタンが表示される」のような条件はない。
さらに、出典はわからなくなってしまったが、AtCoderではブラウザの拡張機能などで表示をいじるのも認められていた気がする。
ということは、問題ページの任意の項目についてコピーボタンを表示するブラウザ拡張機能を使うことで、問題ページの任意の項目の任意の場合におけるコピーが許される可能性がある。
とはいえ、コピーが許されたとしても、前述の通りコピーしたデータのペーストは許されない可能性があることには注意が必要である。
入出力例を用いて書いたプログラムのテスト実行をしてはいけない?
問題に対する答案として自分が書いたプログラムは、当然ソフトウェアである。(コンパイルエラーになるプログラムは、ソフトウェアとはいえないかもしれないが)
さらに、自分が書いたプログラムを実行する際、AtCoderの「コードテスト」・仮想マシン・クラウドシェルなどの他のソフトウェアを利用し、これらの実行用のソフトウェアに自分が書いたプログラムへの入力を入力することがある。
また、日本語版ルールの例外の部分に、以下の記述がある。
問題ページでコピーボタンが表示される項目は、任意の場合においてコピーが許されます。
入出力の値などは許可されますが、入出力の説明文については許可されません。
わざわざ「入出力の値」に言及しているということは、これも「問題として発信されている情報」に該当すると考えられる。
そして、前述の通り「コピー」は許されているが、ソフトウェアへの入力となる可能性が高い「ペースト」は許されるとは言っていない。
「問題として発信されている情報の全部または一部を、ソフトウェアに入力として与える行為」はコピペに限らず禁止され、答案のプログラムはおそらく生成AIではないだろう。
よって、サンプル入力のペーストだけでなく、手打ちによって入力してテスト実行する行為も禁止となると考えられる。
翻訳結果を同じ対話型の生成AIで処理するのは禁止されない?
日本語版ルールには、以下の記述がある。
対話型の生成AIを利用して翻訳する場合については、以下の文章を先頭に書き、その後、問題文をコピーしたテキストまたは問題文のスクリーンショットのみを与えることを許容します。この翻訳文を別のプログラムに入力として与えることは禁止します。
英語版ルールにも、同様の以下の記述がある。
When using interactive generative AI for translation, write the following text at the beginning, and then provide only the copied text or screenshot of the problem statement. It is prohibited to input the translated text into another program.
ここでは、翻訳文を「別のプログラム」に入力として与えることが禁止されている。
しかし、「同じプログラム」(すなわち、翻訳に使用した対話型の生成AI)に入力として与えることは禁止されていない。
さらに、翻訳文を新規にコピペなどするのではなく、チャット形式のAIにおいて翻訳結果を得た後に続けてプロンプトを入力して処理を行うと、単にプログラム内部の状態に基づいて処理させているだけで、「問題として発信されている情報」である翻訳文を「入力として与える行為」にも該当しないとみなせる可能性 (すなわち、禁止されない可能性) がある。
人間が問題文を聞いて生成AIに与えてはいけない?
日本語版ルールには、以下の記述がある。
人間が認識した問題文に基づいて人間が出力したものを生成AIに入力として与えるのは許容します。
一方、英語版ルールには、以下の記述がある。
It is permissible to input into generative AI what a human has output after visually reading the problem statement
英語版では、日本語版には無い「visually reading」という条件がある。
そのため、たとえば目が不自由な人間が (もしくは、目が不自由でない人間であっても) Webページの内容を読み上げてくれる支援技術を通じて (音声で) 認識した問題文に基づいて出力したものは、「問題として発信されている情報」に該当しかつ例外に該当しないならば、生成AIを含むソフトウェアに入力として与える行為が禁止されると考えられる。
そもそも、問題文を「Webページの内容を読み上げてくれる支援技術」のソフトウェアに入力として与える行為はどうだろうか?
文字列をキャラクターに読み上げさせるなどのエンターテインメント性が強いソフトウェアへの入力は禁止される可能性が高そうに思えるが、「支援技術」であれば「人間が閲覧するためのソフトウェア」であるとみなすことができ、許容されると思いたい。
ルール変更の提言
これらの気になったポイントを踏まえ、ルールに以下の変更を行うと、より競技がやりやすくなると思う。
directly に相当する条件を日本語版のルールにも追加する
コピペは禁止、手打ちは許容ということを明確にする
人間が出力したものを生成AI以外のソフトウェアに対しても入力として与えることを許容する
生成AIを使用しているかがわからないという立場とも整合性がとれる
英語版の visually という条件を外す
目が不自由な人間にも入力を与えることを許容する
例外においてそれぞれ「コピー」だけでなく「ペースト」も許す
もしくは「問題文の一部をソースコードにコピー・ペーストする行為」の「ペースト」も外し、「コピー」が「ペースト」を含むと解釈しやすくする
入力を加工せずそのまま転送したり、人間にとって意味がない加工のみを行ったりするソフトウェアへの入力を許容する
プロキシ、リモートデスクトップ系、録画など
人間にとって意味がない加工:画像の (一般的な) 不可逆圧縮など
明示的に制限される「提出するソースコードを書くためのエディタ」と同様にユーザーが意図しない処理が行われる可能性が排除しにくいため、許容するのは難しいか?
ユーザーに情報を返さないか、制作の補助にならない情報のみを返すソフトウェアへの入力を許容する
ウイルス対策、フィルタリング、利用統計など
AIが含まれる可能性もあり、線引きが難しい?
コピーを許す「コピーボタン」は、公式のものに限定する
勝手にコピーボタンを追加しても勝手にコピーを許せないようにする
翻訳文を別でないプログラムに入力として与えることも禁止する
もとの問題文と同程度の例外は認める?
おわりに
今回のルールも含め、出たばかりのものに不具合が多いというのはよくあることである。
今後改善されることを期待したい。
筆者は、ルールの穴をついてズルい行為をすることは推奨しない。
ルールを守るのはもちろんのこと、マナーも守って楽しい競技プログラミングライフを。
(あ、そもそも競技プログラミングをやりたくない場合は無理にやらなくていいよ)
(やりたいけど体力などの都合でできないという場合も、無理にやらなくていいよ)
この記事が気に入ったらサポートをしてみませんか?
コメント