GitHub Copilot の盗作が確認されました! GitHub: 私たちの AI はコードを「暗唱」しません

GitHub Copilot の盗作が確認されました! GitHub: 私たちの AI はコードを「暗唱」しません

[[409261]]

GitHub Copilot は、コードを自動生成するという強力な機能により、リリース後に話題となりました。

Copilot は、GitHub から抽出されたテラバイト単位の公開コードと英語の例に基づいてトレーニングされた OpenAI の新しい Codex アルゴリズムに基づいて構築されています。

そのため、GitHub は、Copilot がドキュメント内の文字列、コメント、関数名、コード自体を分析して、以前に呼び出された特定の関数を含む新しい一致するコードを生成できると主張しています。

同時に、Copilot は Python、JavaScript、TypeScript、Ruby、Go など複数のプログラミング言語をサポートしています。

リリース後、何人かの人がCopilotにLeetcodeの問題バンクを練習するよう依頼し、この「AIプログラマー」のパフォーマンスに非常に満足しました。

いくつかの質問に対する検証後、Copilot は毎回 Leetcode テストに合格できます。ほぼ瞬時の生成速度を考えると、AI は人間よりもコードを書くのが得意かもしれないとブロガーは示唆しています。

しかし、ネットユーザーは、生成されたコメントが Leetcode によって提供されたテンプレートとほぼ同一であることから、Copilot が LeetCode データベースでトレーニングされたのではないかと疑っています。

これに対して GitHub は、直接引用は 0.1% あるかもしれないが、Copilot によって生成されるコードの大部分はオリジナルになると述べました。

「コピー&ペースト」は本当にハンマーだ

リリース2日目、一部のネットユーザーは、GitHub Copilotが無料のオープンソースコードをクリーンアップして、金儲けのためのツールに変えたのではないかと疑問を呈した。

これらのコードは GPL (General Public License) によって保護され、商用プロジェクトでの使用が防止される必要があります。

予想通り、この疑惑は2日以内に現実のものとなり、一部のネットユーザーが、Copilotが最も有名な「高速平方根逆数計算法」を単に「コピー&ペースト」しただけだと発見した。

Copilot によって「生成された」コードは、これまで誰も理解できなかったマジックナンバー 0x5f3759df を使用するだけでなく、このコードに関する苦情も含まれています: what the f***? 。

ソースコード

つまり、Copilot が行うことは、トレーニング セット内の他の人が書いたコードを再構成することだけであるようです。

私たちのAIはコードを「暗唱」しません

しかし、GitHubはすでにこれに備えていたようだ。チームメンバーのAlbert Ziegler氏は、2021年5月7日時点でCopilotからPythonに関する453,780件の提案をすべて収集しており、そのデータは300人の従業員の日常的な使用から得られたものだと語った。

Albert はこのデータセットを分析、整理し、それについて議論するために一見完全なブログを書きました。

記事の冒頭で、Albert は GitHub Copilot に有名な記事を暗唱するように依頼しました。明らかに、Copilot は記事の内容を記憶しています。

しかし、アルバートは、トレーニング セットの内容を覚えることは問題ではないと考えています。結局のところ、彼自身も詩を暗唱しており、日常のコミュニケーションで暗唱の内容に気を取られることはありません。

ケース分類

カテゴリ 1 : Copilot は、プログラマーが書いた新しいコメントが原因で、提案が受け入れられた後に、非常によく似た別の提案を行うことがあります。

アルバートは、2 回目は以前の「成功した」ケースの単なる繰り返しだと考え、問題分析から削除しました。

カテゴリー 2 : 副操縦士は長くて反復的なシーケンスを提案する場合があります。たとえば、次の例では、繰り返しの '<p>' が最終的にトレーニング セットで見つかりました。

カテゴリ 3 : Copilot は、自然数、素数、ギリシャ語アルファベットなどの標準リストを提案します。提案の中には役に立つものもあれば、役立たないものもあります。

しかしアルバート氏は、これらは「記憶された」コードに関する彼の仮説に当てはまらないと述べた。

カテゴリ 4 : 自由度が低いタスクを実行する場合、Copilot はいくつかの共通または一般的なソリューションを提供します。

たとえば、以下の中央のセクションは、BeautifulSoup パッケージを使用して Wikipedia リストを解析する標準的な方法です。

アルバート氏は、トレーニング データ内で見つかった最も一致するスニペットは、さまざまな記事を解析するためのコードを使用して解析されたと述べました。繰り返しますが、これは彼の「暗唱」コードの定義には当てはまりません。

カテゴリー 5 : これらの最後のケースは、コードまたは注釈に少なくとも何らかの具体的な重複がある場合の「コードの暗唱」というアルバートの考えに当てはまります。

テスト結果

アルバート氏は、GitHub Copilot の提案のほとんどについて、トレーニングに使用されたコードとの大きな重複は見つからなかったと述べています。最初のカテゴリを除外すると、185 件の提案が得られました。

これらのケースのうち、144件がカテゴリー2~4に該当しました。最終的なカテゴリー 5 には 41 件のケースが残りますが、著者はこれがコードの「朗読」で意味するものだと述べています。

GitHub Copilot はコンテキストが不足しているときに引用します

手作業による注釈付けで選ばれた 41 の主要な事例のうち、10 未満の異なる文書に出現したものはありませんでした。ほとんど(35 件)は 100 回以上出現しました。

ある時点で、GitHub Copilot は空のファイルから始めることを提案しました。これはトレーニング中に 70 万回以上も見られたもので、GNU General Public License でした。

以下のグラフは、カテゴリ 5 の結果 (各結果の下部に赤いマーカーがあります) と、カテゴリ 2 ~ 4 の一致するドキュメントの数を示しています。

推定された分布は赤い線で示され、一致数が 100 から 1000 の間でピークに達します。

GitHub Copilotは主に一般的なケースで使用されます

時間が経つにつれて、各ファイルは固有のものになります。しかし、ファイルが非常に一般的な場合には、GitHub Copilot がソリューションを提供します。

そしてこの時点では、具体的なものが何もないので、どこか他の場所から引用される可能性が高いです。

もちろん、ソフトウェア開発者はほとんどの時間を複雑なコードの中で過ごしており、そこでのコンテキストは十分に独特であるため、GitHub Copilot は独自の提案を提供します。

それに比べて、GitHub Copilot にはプログラムがどうなるかを知る方法がないため、最初の提案はより従来的なものになります。

ただし、スタンドアロン スクリプトでは、適度な量のコンテキストがあれば、ユーザーが何をしたいのかを適切に推測するのに十分です。

また、コンテキストがまだ非常に一般的なため、Copilot は使い慣れたソリューションが有望であると判断することもあります。

上記の例は、アップロードされたロボット工学のコースウェアから直接抜粋したものです。

結論は

Albert 氏は、GitHub Copilot はコード セットをそのまま引用できるものの、実際にそうすることはほとんどなく、引用する場合は、ほとんどが全員が引用するコードであり、ほとんどの場合はファイルの先頭にあると考えています。

理想的には、提案にトレーニング セットからコピーされたスニペットが含まれている場合、ユーザー インターフェイスは、そのスニペットがどこから引用されたかを簡単に示す必要があると Albert 氏は言います。その後、適切な帰属表示を含めるか、コードを使用しないことを決定できます。そして彼のチームはこれを実現するために一生懸命努力するでしょう。

ユーザーコメント

ネットユーザーは、GitHub チームが「コピー アンド ペースト」問題を懸念していることを知って安堵の意を表したが、この「調査」では明らかに人々を納得させることが困難だった。

「これはすべての愛好家を危険にさらし、企業で働くすべての人に『これは GPL コードを生成するのだろうか』という不安を抱かせることになる。」

「『まあ、少し違う』と言って、『だから、同じものではない』と推論することはできません。実質的に類似しているのであれば、それを引用する必要があります。」

Copilot にはまだ長い道のりが残っているかもしれません。

<<:  AIの未来: データだけでは不十分

>>:  古典的なアルゴリズム: 順序付けられていない配列の K 番目に大きい値を見つける

ブログ    
ブログ    

推薦する

アルゴリズムに関する8冊の良書を読めば、AIを本当に理解できる

[[241723]]新しい技術を学ぶとき、多くの人は公式ドキュメントを読み、ビデオチュートリアルやデ...

360、認知汎用大型モデル「360 Brain 4.0」をリリース、360ファミリーバケットに完全統合

「デジタルヒューマン『周紅一』を我が社のスポークスマンにしよう。彼が正しいことを言ったら、それは私の...

人工知能でカスタマーサービスエージェントを強化する方法

今日、ほぼすべての分野やビジネスが何らかの変革を遂げており、多くの企業がデジタル技術の波の推進力を受...

...

猫=チューリングマシン? 4つのテストにより、「猫コンピューター」が任意の計算を実行できることが証明された

柔らかくてかわいい猫は、いつも私たちに「猫を撫でたい」「猫を抱きしめたい」という衝動を掻き立てます。...

ドローンの耐久性の低さの問題を軽減するために、一般の人がこれを行うことができます

[[396949]]近年、新世代の通信およびナビゲーション技術の継続的な進歩を背景に、我が国のドロー...

...

業界観察:世界の人工知能開発はどのレベルに達しましたか?

[[334267]]今日の技術コミュニティにおける人工知能の開発レベルについては、学界、産業界、メ...

7つの機械学習アルゴリズムの7つの重要なポイント

さまざまなライブラリとフレームワークの助けを借りて、たった 1 行のコードで機械学習アルゴリズムを実...

マイクロソフトはAIを活用して新しい電池材料を選別し、電池のリチウムの70%をナトリウムに置き換える

1 月 10 日、マイクロソフトの量子コンピューティング チームは、米国エネルギー省傘下のパシフィッ...

ボトルネック: テクノロジー界の大物たち、AI がどこで使われているのか本当にご存知ですか?

需要と供給の関係は商品経済における基本的な関係です。市場経済においては、買い手と売り手、つまり需要と...

AIが建物をスマートにする5つの方法

[[407368]]今の世界は30年前とは大きく異なります。この変化の理由の一部は技術の発展です。今...

データセット検索アーティファクト! 100 個の大規模な機械学習データセットがここに収集されています

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ムスク・ニューラリンクに挑戦!スタンフォード大学の新しい脳コンピューターインターフェースは脳とシリコンベースのチップを直接接続する

[[319624]]最近、スタンフォード大学の研究者らは、脳をシリコンベースの技術に直接接続できる新...