こんにちは!
CYBIRD Advent Calendar 2024 19日目担当の@cy-n_aoです。
18日目は@CR_さんの「SES歴5年で学んだこと、感じたこと」でした。
一年ぶりに参加させていただきます。
普段はサーバサイドエンジニアをしています。
今回の記事は仕事内容とは全然関係ないんですが、個人的に興味のあるネタを書いていきたいと思います。
はじめに
AIが台頭してきている昨今、利用している人も増えてきているかと思います。
しかしそれに伴い自作品をAI学習して欲しくないと考えているクリエイターの著作物が無断で学習されてトラブルになっている事象もかなり増えているように思います。
そこで、エンジニア目線も入れた「AI学習されたくない人が対策のために何を基準にアップロード先を決めればいいのか?」に関して少しでもまとめられればと考えて記事にしました。
そもそもAI学習ってなに?
ChatGPT
やGoogle Gemini
といったAIロボットがネットワーク上のwebサイトやSNS上の内容を収集(クロール)し取り込む(学習していく)こと
機械学習と呼ばれ、AI出力を行う上で必要な情報を追加してAIとしてより高度なものになるように情報を蓄積する機能です。
この「学習」にはAI作成時の一番最初に行われる基礎学習、AI作成後に特定のデータのみを取り込んで行う追加学習などいろいろ種類がありますが、
そこまで書くと長くなるので今回は一旦割愛します…!
GoogleやYahoo!といった検索用のサーチエンジンなどでも同じようにWeb上をクロールしてデータを取得していますが、データ取得後の根本的用途が異なるので今回の話とは別の話になります。
AI学習の問題点
AIはその性質上、AIとして完成する前にこの世に存在するあらゆるものからデータを収集して学習するため、時には誰かが作った絵や文、漫画、音楽・ボイス、写真といったいわゆる「著作物」と呼ばれるものまで収集して学習している現状があります。
もちろん無断です。クリエイター側に許可などとっていない場合がほとんどです。
各所団体・個人創作者の中でも、機械学習を「無断学習」と称して、「無断学習をしないでほしい」と訴えている方々もたくさんいます。
また、自分でネット上に上げたものを学習されるだけではなく、無断転載など悪意のある人や問題意識のない第三者がアップロードした物も対象になってしまうので、これも大きな問題になっています。
なお、「著作物のAI学習」について日本の行政機関としては以下見解のようです。
AI開発のための情報解析のように、著作物に表現された思想又は感
情の享受を目的としない利用行為は、原則として著作権者の許諾なく
行うことが可能です
・・・(中略)・・・
AI生成物に、既存の著作物との「類似性」又は「依拠性」が
認められない場合、既存の著作物の著作権侵害とはならず、
著作権法上は著作権者の許諾なく利用することが可能です。
これに対して、既存の著作物との「類似性」及び「依拠性」が
認められる場合、そのようなAI生成物を利用する行為は、
① 権利者から利用許諾を得ている
② 許諾が不要な権利制限規定が適用される
……のいずれかに該当しない限り、著作権侵害となります。
…簡単に言うと、「著作物であっても学習するのはOK。でもAI出力したものが著作物と似てるものを公表するとアウト(になる場合もある)」ということです。
ただし、これは日本の文化庁の見解のため、海外はそうではない場合があります。
海外のwebサイトは国外の会社が運営・サーバ管理をしているので、それぞれの国の基準やサイトの利用規約を遵守する必要があります。
また、先述したとおりクリエイター側が学習NGと主張している場合も少なくありません。
Webスクレイピングについて
AI学習と似たような挙動の一つに、「Webスクレイピング」というものがあります。
というか、やってる事はAI学習≒Webスクレイピングです。
Python
などをPCにインストールしてちょっとコーディングすれば誰でも簡単にスクレイピング自体はできてしまいます。
macでやってみた
macをつかってPython
でWebスクレイピングをやってみます。
先にHomebrewのインストールを済ませておきます。
[1] pyenvインストール
※pyenv
とは、Python
のバージョン管理ができるツールです。
$ brew install pyenv
インストール確認
$ pyenv -v
pyenv 2.4.19
環境変数を設定
$ vi ~/.$(basename $SHELL)rc
以下を追記します
eval "$(pyenv init --path)"
シェルの再起動
source ~/.zshrc
[2] Pythonインストール
pyenv install -list
でインストールしたいバージョンを調べ、
Python
をインストールします
今回は3.13.0をインストール
$ pyenv install 3.13.0
$ pyenv global 3.13.0
以下のコマンドで、インストールしたバージョンが表示され選択できていればOK
(*がついている方が選択中)
$ pyenv versions
system
* 3.13.0 (set by /Users/*****/.pyenv/version)
[3] pipインストール
インストール用ファイルをダウンロード
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
実行
python get-pip.py
インストール確認
$ pip -V
pip 24.3.1 from /Users/****/.pyenv/versions/3.13.0/lib/python3.13/site-packages/pip (python 3.13)
ダウンロードしたインストールファイルの削除
rm -f get-pip.py
[4] ライブラリのインストール
スクレイピングに使用するライブラリ、RequestsとBeautiful Soupをインストール
pip install requests beautifulsoup4
インストール確認
$ pip list
Package Version
------------------ ---------
beautifulsoup4 4.12.3
certifi 2024.8.30
charset-normalizer 3.4.0
idna 3.10
pip 24.3.1
requests 2.32.3
soupsieve 2.6
urllib3 2.2.3
[5] コードを書く
# ライブラリのインポート
import requests
from bs4 import BeautifulSoup
# Webページへアクセス
url = "https://example.com"
response = requests.get(url)
html = response.text
# HTMLの中身を取得
soup = BeautifulSoup(html, "html.parser")
title = soup.find("h1").text
p_text = soup.find("p").text
# 出力
print (title)
print (p_text)
[6] 実行!
接続したURLのページの中身が表示されればOK
$ python request.py
私はPython
やったことないです。
この記事を書くにあたってインストールから実施しました。
でもできてしまいました。
画像の取得や動的に処理するなどはもう少しライブラリを入れたり処理増やしたりと工夫が必要ですが、基本処理はとても簡単にできるということですね…
ネットに上げた著作物へのAI学習は防げない のか
結論から言うと「完全には防げないがある程度抵抗することはできる」です。
「そもそもネットに上げず、誰にも公開しなければ学習されないだろ」という物理的な方法をとればOKってのはもちろんそうですし、「ネットに上げたらほぼ取られると思った方がいい」という話も、まあそうだとは思います。
でもそれで何もしなかったら楽しいインターネットライフなんてできなくなると私は思うんですよね。AI学習されたくない人が対策しつつアップロードしたっていいと思うし、試行錯誤するのも楽しいと考えています。
ですので今回は「アップロードしない」以外の方法を探っていきたいと思います。
それぞれみていきます。
1.robots.txtを確認する
robots.txt
とは、クロールしてるロボット全般に「クロールしないでね」ってお願いするテキストファイルです。
これが書いてあると良識あるbotは止まってくれますが、あくまでも「お願い」なので破ってクロールすることもできてしまいます。
とはいえ「書いてあればクロールしません」とガイドラインを提示している企業もあるので、一定の効果はあると思います。
配置先は必ずhttp://[ドメイン名]/robots.txt
にします
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-Agent: Google-Extended
Disallow: /
こんな感じに、クローラーごとに指定して禁止します。
Disallow=禁止
ロボット全部禁止って書くならこうなります。
User-agent: *
Disallow: /
2.metaタグを確認する
robots.txt
でなくmetaタグ
に書かないとダメなAIもあるようなのでここの記述も確認必要です。
<meta name="bingbot" content="noarchive"> // Microsoftのbing系bot
<meta name="msnbot" content="noarchive"> // Microsoftのbing系bot
<meta name="pinterest" content="nopin"> // ピンタレスト
<meta name="robots" content="noimageai, noai"> // DeviantArt
AIボットじゃないのも記載してありますが、大体こんな感じ
3.利用規約に「AI学習禁止かつAIに使用しません」といった旨の記述があるところにする
そのままの意味です。これもrobots.txt
やmetaタグ
と同じでやろうと思えばクロール自体はできます。
ただ規約違反となるため、アカウントの停止やアクセスブロックなどの措置を取られる可能性があります。
4.AI学習に使うよと発表していないところにする
上記よりはちょっと弱いですが、除外するツールの選定基準には使えるかと思います。
5.cloudflareを搭載しているところにする
AIボットをブロックする機能が登場しています。
AIndependence(AIとの分立)を宣言しましょう:AIボット、スクレイパー、クローラーをワンクリックでブロック
これを搭載し機能を有効にすると、既存のボットはもちろん新しいAIボットを見つけるたびにブロックしてくれるみたいです!
搭載している場合はお知らせなどで発表してくれていると思うので、チェックしてみると良いかも。
6.限定的に公開する
サイトによって様々な公開方法が用意されている場合があります。
この公開方法を強くすればするほど突破しにくくなるので、クローラーが通る可能性も下がっていきます。
強さ | 閲覧設定 |
---|---|
弱 | 非会員でも閲覧可能(設定なし) |
↑ | ログインユーザ(会員)のみ公開 |
↓ | フォロワーにのみ公開 |
強 | パスワード限定公開 |
会員かつフォロワーかつパスワード必須っていう強固なところも探せばあります。
調べてみた所感:意外といろいろある
これらの対策はAI学習以外のWebスクレイピングにも効果を発揮します。
AIには興味ないけどWebスクレイピングはやってみたい、と言う方も上記のようにロボット対策をしているサイトへはスクレイピングしない方がいいです。
スクレイピングしたことがバレると後々問題になったりすると思います。取り扱いは慎重に!
最後に
つらつらと書いてしまったのでまとめというまとめにはなりませんが、一旦のまとめ。
AI学習を防止する方法は様々なものがあります。自分の状況やスタンスに合わせて選んでいきたいですね。
ただ、先述した「全くの第三者がネットに上げてしまったもの」についての対策は一切できない方法にはなっているので、それについては別の手段をとるなど対応する必要がありますね…
AIを使いたい人もAIから自分の著作物を守りたい人も双方幸せになれるような未来があると嬉しいなと思う今日この頃です。
この話題は今後も引き続き注視していきたいと思っています。
ひとまず今回はこの辺で。
ここまで読んでいただきありがとうございました!
明日のCYBIRD Advent Calendar 202420日目は@yoooosuさんの記事です。お楽しみに!
※この情報はこの記事を書いた時期(2024年11月〜12月頃)に調べた内容が元になっています。
この記事公開後以降に更新された情報については記述の限りではないので、ご留意願います。