最終更新日:
ソフトウェア開発プラットフォームを開発・提供するGitHubは6月末に、コードを生成するAI「GitHub Copilot」を発表しました。Visual Studio Codeの拡張機能である同AIを使えば、英語でプログラミングしたい内容をコメントとして記述すると、そのコメントを反映したコードが生成されます。
同AIの学習には、GitHubで公開されているコードが大量に使われました。それゆえ、まれに学習データとしたコードをコピーして出力してしまいます(コピー出力事例は記事本文参照)。こうした出力は、コードの著作権を侵害するリスクをはらんでいます。さらに言えば、コードをコピーしたのか、学習データにもとづいて新規に生成したのかを判別するのが難しい、という問題もあります。
以上のような懸念事項があることにより、GitHubの利用を止めたユーザや、GitHub Copilotの使用を禁じようとする企業のセキュリティ担当者がいます。
もっとも、GitHub Copilotは少数のテスターを対象としたテクニカルプレビューの段階にあり、製品版がリリースされるまでには上記の懸念事項が払拭されるかも知れません。
ちなみに、Bergdahl氏は世界各地の100のAI導入事例を集めた著作『This Is Real AI: 100 Real-World Implementations of Artificial Intelligence』を執筆しており、日本のAmazonからも購入できます(ただし英語版のみ)。
なお、以下の記事本文はJacob Bergdahl氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。また、翻訳記事の内容は同氏の見解であり、特定の国や地域ならびに組織や団体を代表するものではなく、翻訳者およびAINOW編集部の主義主張を表明したものでもありません。
そのためにGitHubを放棄した人もいる
GitHubは、最近輝かしい製品を発表した。それは、Copilot(本来は「副操縦士」という意味の英単語)と呼ばれる人工知能(AI)だ。このAIは機械学習を利用したソフトウェアで、自分でコードを書くことができ、非常に素晴らしいプログラミング生成機能を備えている。しかし、GitHubから撤退する人や、訴訟を心配する人がいるのも事実だ。
このAIは、他のOpenAIを利用したコード生成ツールと同様に動作する(※訳註1)。ユーザがAIに書いてほしい内容についてのコメントを書くと、AIがその内容に関するソースコードを実現する。そんなCopilotのユニークなところは、自動補完候補を絶え間なく提案するなど、ユーザに対してイニシアティブをとることだ。
Microsoft Power Apps搭載ソース生成機能とGitHub Copilotの比較
Microsoft Power Appsコード生成機能 |
GitHub Copilot |
|
ベース言語AI | GPT-3 | OpenAI Codex(GPT-3をソース生成用にファインチューニング) |
対応プログラミング言語 | Microsoft Power Fx | Python、JavaScript、TypeScript、Ruby、Goに高度に対応。そのほかに数十のプログラミング言語に対応 |
使用方法 | Microsoft Power Appsの機能として使用 | Visual Studio Codeの拡張機能として使用 |
ちなみに、GitHubは2018年よりMicrosoft傘下となっているので、上記2つのアプリは実質的にMicrosoftの管理下にある。
Copilotはとても素晴らしいと思わないだろうか。私のことをご存知の読者は、私がしばしば人工知能に興奮していることもご存知だろう。Copilotのような技術を解説した本まで出版しているほどだ。しかし、機械学習をめぐっては多くの問題があり、GitHubはCopilotを発表した初日からそうしたジレンマを経験することになった。通常、機械学習アプリケーションをめぐるドラマの発端はデータにあり、Copilotをめぐる騒動もその法則に従っている(※訳註2)。具体的にはCopilot の場合、アルゴリズムを構築するためにGitHub がどのようにデータを収集したかが問題なのだ。
残念ながら、ユーザはアルゴリズムが特定のコードをCopilot自身で作ったのか、ライセンスで保護されたコードリポジトリから盗んだのかを知る術がない。
他の機械学習アルゴリズムと同様に、Copilotはうまく動作しているもの(コード)に関するデータを与えられることで、そのやり方(コードの書き方)を学習する。GitHubによると、このAIはGitHubリポジトリから抽出した何十億行ものコードを使って訓練された。そのため、Copilotがユーザのためにコードを書くときには、その何十億行ものデータを利用していることになる。
残念ながら、ユーザはアルゴリズムが特定のコードをCopilot自身で作ったのか、ライセンスで保護されたコードリポジトリから盗んだのかを知る術がない。
私が盗んだと言うのは、まさに文字通りの意味で言っているのだ。
あるソフトウェアエンジニアは、Copilotに(コメントで)「私について(about me)」ページを書くように頼んだところ生成されたコードの画像をTwitterに投稿した。滑稽なことに、このコードは実在の人物のページからそのまま引用されている(※訳註3)。
Congrats @davidcelis, you get a shout out if #GitHubCopilot tries to generate an "About me page" pic.twitter.com/cWBsPgjiuu
— Kyle 🦚 ∞ (@kylpeacock) July 1, 2021
個人データが生成されてしまう可能性に関して、GitHub CopilotのFAQでは以下のように回答している。
GitHub Copilotは公的に利用可能なコードを使って訓練しているため、その訓練セットには公開された個人データが含まれていました。内部テストの結果、GitHub Copilotの提案に訓練セットの個人データが逐語的に含まれていることは非常にまれであることがわかりました。場合によっては、モデルは個人データのように見えるもの(eメールアドレス、電話番号、アクセスキーなど)を提案しますが、実際には訓練データのパターンから合成された情報で構成されています。テクニカルプレビューでは、標準形式で表示されたときにメールをブロックする基本的なフィルターを実装しましたが、十分に努力すれば、モデルにこの種のコンテンツを提案させることは可能です。
以上のように実在の個人データを生成してしまう可能性は皆無ではない。大規模な訓練データから個人データを抽出する行為は「訓練データ抽出攻撃」と言われることもあり、GoogleのAI研究部門はこの種の攻撃を論じた記事『大規模言語モデルにおけるプライバシーの懸念事項』を公開している。
ほかにもCopilotのひどく滑稽なソースコードのサンプルがある。あるユーザがアップロードしたGIFには、ビデオゲーム『Quake III Arena』(※訳註4)のリポジトリからそのまま引用した関数をAIが書いている様子が収められている。オリジナルのコメントも含まれているほどだ(※訳註5)。
I don't want to say anything but that's not the right license Mr Copilot. pic.twitter.com/hs8JRVQ7xJ
— Armin Ronacher (@mitsuhiko) July 2, 2021
以上がCopilotの根本的な問題点である。どのコードがCopilot自身で考えたもので、どのコードが別のソースからそのままコピーしたものなのか区別できないのだ(※訳註6)。
GitHub Copilotはコードシンセサイザーであり、検索エンジンではありません。GitHub Copilotが提案するコードの大部分は独自に生成されており、以前に見られたものではありません。約0.1%の確率で、提案には訓練セットから引用された逐語的なスニペットが含まれている可能性があることがわかりました。この結果は、モデルの動作に関する詳細な調査です。こうしたコードをコピーしてしまうケースの多くは、十分なコンテキストを提供しない場合(特に、空のファイルを編集する場合)、または問題に対する一般的な、おそらくは普遍的な解決策がある場合に発生します。訓練セットを反復してしまうまれなコードのインスタンスを検出し、GitHub Copilotの提案についてリアルタイムで適切な決定を下せるように、オリジントラッカーを構築している最中です。
回答で言及されているオリジントラッカーが実装されれば、コピーされたコードが特定できるようになるだろう。
また、Twitterで注目を集めたほかのユーザは、このソフトウェアがオープンソースのコードを商用製品にロンダリングするための手段であると指摘した(※訳註7)。
github copilot has, by their own admission, been trained on mountains of gpl code, so i'm unclear on how it's not a form of laundering open source code into commercial works. the handwave of "it usually doesn't reproduce exact chunks" is not very satisfying pic.twitter.com/IzqtK2kGGo
— eevee (@eevee) June 30, 2021
GitHub Copilotは、GitHub運営元自身が認めているように、GPLコードの山で訓練されているのだが、そうした仕組みがオープンソースコードを商用作品にロンダリングする形式ではないかどうかは私にはわからない。「GitHub Copilotは、通常、正確な(コードの)チャンクを再現しない」というごまかしでは、あまり満足のいくものではない。
なお、ツイートに引用されている文章は、訳注6で翻訳したGitHub Copilotのコードコピーに関する回答。
GitHubの利用規約によると、GitHubのプラットフォームを利用するユーザは「(中略)(GitHub運営元である)私たちと私たちの法的後継者に対し、サービスを提供するために必要な範囲で、ユーザのコンテンツを保存、アーカイブ、解析、表示する権利、および付随的なコピーを作成する権利をユーザは承諾する」とある。しかし、Copilotの学習データとしてソースコードが使われることは、ユーザがサービスを申し込んだときに考えていたことでは全くないかも知れない。
個人的には、機械学習を利用したアシスタントを使ってコードを早く書けるようになる未来を信じている。しかし、GitHub Copilotはそんな未来ではない
CopilotのFAQにおいて、「GitHub Copilotの助けを借りて作成したコードは、ユーザに帰属する」とGitHubは主張している(※訳註8)。しかし、人気のプログラマーサイト「Hacker News」では、Copilotが著作権を侵害していると主張する人たちがいる。このAIは、最初の所有者が商用利用を許可しているコードのみを使用できるはずだが、ライセンスに関係なくあらゆるコードを使用していることは明らかだ。
GitHub Copilotはコンパイラやペンのようなツールです。GitHub Copilotが生成する提案、およびその助けを借りて作成するコードは、あなたに帰属するものであり、あなたがその責任を負います。自分で作成するコードの場合と同様に、コードを注意深くテストし、レビューし精査することをおすすめします。
また、「コードの記述を支援したGitHub Copilotに関するクレジットを表記する必要はあるのか」という問いに対して、以下のように回答している。
いいえ、GitHub Copilotの助けを借りて作成したコードはあなたに帰属するものです。すべての友好的なロボットは時折の感謝の言葉を好みますが、GitHub Copilotのクレジットを表記する義務はありません。コンパイラを使う場合と同様に、GitHub Copilotの使用の出力はあなたに帰属します。
以上の回答から、GitHub Copilotはツールに過ぎないので著作権を有する資格はない、というのがGitHubの公式見解なのがわかる。
Hacker Newsの別のスレッドでは、このツールを使用すると、知らず知らずのうちに著作権のあるコードを使用してしまい、訴えられるかも知れないという懸念が表明されている。あるユーザはCopilotを「法的時限爆弾」と呼び、別のユーザは個人的な逸話を付け加えている。「私は大企業の製品セキュリティを担当しているが、すでにCopilotを禁止する方向に舵を切っている […]」
このような状況から、GitHubを放棄する人もいる。
個人的には、機械学習を利用したアシスタントを使ってコードを速く書けるようになる未来を信じている。しかし、GitHub Copilotはそんな未来ではない。このAIの場合、データの収集と利用に関して、あまりにも多くの懸念事項がある。
今後、同じようなサービスが続々と登場すると予想しているが、倫理的かつ賢明に作られたものでなければ、本当の意味で成功しないだろう。
・・・
コードを生成するAIを作っているのはGitHubだけではない。これらの新しいアルゴリズムは、開発者にどのような影響を与えるのだろうか。AIはプログラマーに取って代わるのだろうか。以下の記事をチェックして頂きたい。
原文
『GitHub’s AI Copilot Might Get You Sued If You Use It』
著者
Jacob Bergdahl
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん