🔙

遺伝的アルゴリズムちゃん―botの解説と功罪

はじめに

この記事は、2021年5月に本論で述べる事件があった直後に勢いで執筆したものである。
勢いで書いたために内容が相当稚拙であったが、旧サイトの残骸から発掘され、どうやら検索からの流入があったよう1なので加筆して公開することとする。

本論

参考Link
(1)遺伝的アルゴリズムで最高にエッチな画像を作ろう!

(2)「遺伝的アルゴリズムで最高にエッチな画像を作ろう!」がまるで意思があるかのように1日で大きな変貌を遂げてしまう→その原因も判明する - Togetter

(3)Tuku & Hikaria(Bot作成者)

(4)同氏が公開したソースコード Ubuntu Pastebin

(5)遺伝的アルゴリズム - Wikipedia

まとめ:
人間の二択投票元に遺伝的アルゴリズム(GA)でエッチ絵生成するプロジェクトがとある人のbotによって操作された。
技術的解説とBotの功罪についてポエムを書き散らしておきます⁉

GAの技術的解説

ググれ,「遺伝的アルゴリズムで最高にエッチな画像を作ろう!」を見て理解しろ…と言いたいですが一応解説を。

GAの原理

簡単に言うと:最適なパラメタのセットを探すのが目標

〔わかりやすいように加筆する〕

「遺伝的アルゴリズムで最高にエッチな画像を作ろう!」の実装

(1)より引用

【一世代の個体数】
40
【一画像を構成する図形の数】
3000
【図形の情報】
位置、大きさ、色、透明度、矩形か楕円か
【試合回数】
2000
【生存する個体数】
5
【突然変異確率】
1% *途中から減らしました
【交配方法】
まず、適応度が最上位だった個体が他の生存個体と5回交配し、後の30回は生存した5個体からランダムに選ばれた2個体が交配する。 交配時は、選ばれた2個体の遺伝子からランダムに3000個の遺伝子を被りなく選んで子供を作る。

(1)/js/draw.js をしっかり読めばもっとわかりそうだが、自信がないのでやめておく。
重要なのは内部的に40個体いるということ。

実際にやりとりされるデータ
draw.js クライアント
fish.wav 効果音
n.png (n=0…39) 各世代の画像
aza n.png アザラシ(?)の素材
checkMaking.php よくわからん
gameNum.json 各世代の得点(適応度)
makingGene.json よくわからん(真偽値)
generation.json 世代数
addNum.php(POST) 投票

Botの実装

(4)記載のソースコードを読み解く。

やっていることは比較的単純で、

  • Reference画像と各世代画像の差分2を取る

  • もっとも差が小さいものに投票しまくる

これを繰り返しているだけです。他のユーザーを圧倒する速度で投票が行われるので間違いなく最も票数が多くなります。

単純とは言いましたがasyncやaiohttpが使われており非常に力が入ったプログラムだと思います。ちなみに私は書けません。

Botを走らせた行為は善か悪か

私は彼の行為を今批判されているほどの行為であるとは思っていません。
というのも、

  • もともとのサイト自体そういった攻撃に対する防御策が一切取られていない

  • そもそも投票システムが成り立ってたのが奇跡

    • cf. コイルショック
  • 事後とはいえ作者が容認する考えを示したこと

  • ピークはすでに過ぎていて安定状態だったこと

    • 本来の目的であったGoogleからのエッチ判定報告は2/11(3ヶ月ほど前)に達成

    • 14500世代前後から介入したと考えられるがその時点で殆ど変化なし

      • 直近に顔の向きが変わってるがそれが介入による変化なのか不明
  • 攻撃手法(=ソースコード)を公開していること

  • サーバーに危害を加える目的ではなかったこと

みんなで育てた生物をキチ㊙イが殺したみたいな意見も見受けられたが正直ずれてる気がする。表現するなら「みんなで遊んでた砂場が一週間後には別物になってた」が適当かと思う。性的なものという点で奇妙な感情移入(というか表現)をする人がいるのは面白い。

おわりに

当時のこと

bot製作者が中国人だとかでほぼ人種差別紛いの言論があったし、いわゆるオタクが一斉に叩いてたので逆張り精神でそれらの言論に対するカウンター的なものとして書いたんだと思う。
ただ、「くだらない」(と当時思っていた)言論と議論の質は正直どんぐりの背比べなもので、改稿作業中も自分の馬鹿さ加減に嫌になった。


  1. kris.failは検索避けをしていたが、旧サイトを保存しているサブドメインがGoogleに拾われていた。 ↩︎

  2. どんな差分の取り方してたっけなあ。 ↩︎