人工知能
芸術
人工創造性

人工芸術家//自分の代わりに機械に作品を作ってもらいたい人の話

人工芸術家

v,1.3 学外展仕様

目次

  • 概要、はじめに
  • まえがき、制作動機
    • 創造性を創造することについて
    • アーティストの定義
    • 機械たちの芸術
  • まだ語りたいことがある-機械達にまつわる様々な話
    • レンブラントの”新作”
    • 17歳の人工知能
    • 人工知能とは
  • 実験手順 - AIは万能じゃない
    • 基礎用語の説明
    • 実際の実験
    • 機械に創造性を移植する方法を想像してみる
  • 終わりに
  • 謝辞
  • 参考文献、bibliography
    • オススメ作品

概要、はじめに

この文章は、この作品についてもう少し詳しく知りたい人のためのものです。前半に作品と研究のコンセプト、後半に実際の実験手順を示しています。コンセプトや、思考の諸処については前半を読む事で8割方済むようになっています。
ついでに言いますと、機械学習やAIのことをよく知らない人が分かった気になってくれると嬉しいです。

1. まえがき、製作動機

a5).png

初めの動機は極めて不純なもので、「自分で作品を作るのはとてもツライのでかわりに機械にやってもらおう」などと言う考えからこの計画は始まりました。

…冗談ではありません、大真面目です。とにかく作品を作るというのはある種の人間にとって非常につらいことで「産みの苦しみ」という言い回しもあるくらいです。時間も精神力も体力だって消耗します。 巷に溢れるイラストが一、二時間でチャチャっと描けるものだと思っている方々が時々おられるようです。そういう人には一度、白紙から一枚の絵が出来上がるまでをノーカット等倍速で且つ瞬きを許さぬ状況で見てもらいたいものです。いや、冗談ですよ。

「面倒事を回避するための面倒を惜しまない」を目標とする私が、自分で作品を作れないなら代わりに作品を作るシステムを作れば良いと考えるのは自然な流れでした。2016年末はまさにお茶の間にもAIブームが来ており、流行りに乗っかる気持ちで”AI”に手を出しました。これが始まりの第一歩です。

機械を使って自分の代わりに作品を作ってもらうとは要するに「自分の作品を作るクローン」のようなものを作ることになります。そういうものを作ったとしてベースは自分ですから、どんな色が好きか、どんなモチーフが、どんな構図が好きかなどおおよそ予想がつきます。これは少しおもしろくありません、方向を変えてクローンではなく自分の記録をベースにして他人の記録を少し混ぜたり、機械独特の癖のようなものを生かして機械独自のアートを作ってもらうように計画を練ることにしました。

そうして紆余曲折あり、「機械に創造力(クリエイティビティ)を持たせる」という目標を設定し、人間の創造性に対する宣戦布告として卒業制作の作品を作ることとしました。

創造性を創造することについて

創造性(クリエイティビティ)とは何でしょうか。
ここは素直に辞書を引くことにします。
"新奇で独自かつ生産的な発想を考え出すこと、またはその能力。創造性についてはさまざまな研究が行われているが、いまだにその本態について明快な結論は得られていない。しかし、いくつかの注目すべき特徴はみられる。高次の創造性――たとえば数学上の発明・発見の過程は典型であり、比較的型にはまった位相を追って進行する。..."(以下略)
(日本大百科辞書ニッポニカより引用)

“新奇で独自かつ生産的な創造性”をマシンに搭載したならば、それはアーティストとしての命を果たせるやもしれません。
マシンに創造性を搭載できたなら、創造性は0や1といった文字列や数値で表せることになります。人類の内にある創造のタネを、数値化できるとしたら?我ら人間以外の生命や存在が我々と同じくらいの創造力を持ったとしたら?
人によってはそんなの耐えられないと言う方もいることでしょう。

ある人は人間の創造力を「記憶の忘却と間違いからなるもの」といいます。
別の人は「不可知の上位存在から授けられるもの」といいます。
ところで私は「みんなが知ってるAとみんなが知ってるBを組み合わせて誰も知らなかったXをつくること」と考えています。
人間の創造性のなんたるかもはっきりしない今、創造力を文字列にしようなど、神をも恐れぬ行為だというかも知れません。が、それはそれで楽しそうなので私はこのまま創造性の探求にいそしむことにします。

アーティストの定義

アーティストは大抵、0から10までをアーティスト本人が作っているのだと考えられています。実際、多くの方が自らの手で作品を練り上げるのですが例外もまた存在します。そういうアーティストはコンセプトや設計を自分で作ったのち実際の製作は他のスタッフに任せて、自分は要所要所で指揮を執るといった具合に作ります。とても大きな作品や、建築物を想像すると分かりやすいでしょう。こうして作られたものだって、立派なアーティストによる作品です。
機械学習の分野は非常に広く深く(ディープラーニングだけに)、全てを自分がコントロールするのは不可能に等しいことです。すでに先駆者が居る分野であれば彼らの知恵を借りてしまうのが懸命でしょう。車輪を再開発するにはあまりにも時間が足りません。これは私を指導してくださっている教授の受け売りですが…作りてである私は全てを自作する職人(craftsman)ではなく各所に指示を出す監督(director)としてあらねばならないのです

機械達のための芸術

有史以前からアートや芸術というものは大方”人間”の手で作って、信仰するものだったり、神だったり、”人間”のため作られるものです。今の時代だと”人間”が作って、”人間”が評価するものがほとんどを占めます。ざっくり言うと人の価値観が作品に関わる上での大きな柱となってるわけです。今まで数えきれない数の「人のための芸術」が作られたでしょう。そして話が飛躍しますが1940年代にコンピュータの始祖達が生まれてから80年ほど経ちました。あとちょっとで100年になりそうですし、そろそろ機械による機械のための芸術を真面目に作ってみてもいいかなと思うのです。
作り始めに人間がどうしても絡んでくるのがだいぶネックではありますがそこはまぁ人なる上位存在が機械に芸術を教えた的な解釈で目を瞑ることにします。あっすみません半分冗談なんです石を投げないでください!人間が機械の上位存在なんて思ってませんから!石を投げないでください!!あぁ!石が窓に!窓に!

この話は考えれば考えるほどドツボにハマっていきます。
機械達の美意識とは、基準とは、何をもってして芸術とその他を分けるか、誰が機械の価値観を定義して保証してくれるのか、そもそも機械のための芸術って何のために作るんだ、機械は感動とかできるのか?
うーん、全く妙案が出てきません。一生考え続けないとダメっぽいですね

a2).png

まだ語りたいことがある-機械達にまつわる様々な話

本当のところはですね、戦闘妖精雪風の雪風についてですとか、最近話題の量子コンピュータとか、もっと色々とりとめのない話をしたかったのですが文を書くのが世界で7番目くらいに苦手だったのであまり書き進められませんでした。南無。

レンブラントの”新作”

2016年の始めにレンブラントの新作絵画が作られたことはご存知でしょうか。新しく”発見された絵画”ではありません。新作です。
人工知能が過去のレンブラント作品を学習して、作品にもっともよく登場したモチーフで絵画を描いたのです。見たことのない方は一度見てください。下記のリンクのトップページにあるのがそれです。

THE NEXT RENBRANDT : https://www.nextrembrandt.com/

見ましたか?どうでしょう、ぱっと見で人が描いたようにしか見えないと思います。それもただの画像というわけではなく”絵画”なので絵の具と筆跡による表面の凹凸も再現されており、実物は絵画のテクスチャも再現していると。つまり2年前の時点でマシンパワーさえあれば機械はここまで精巧に絵を描いてみせるのです。
※レンダリングに500時間(およそ21日に匹敵)、出力された絵画は150GBほどある、凹凸情報は140Mピクセル、などなかなかにエグい数字が並んではいますが

すごくないですか?私はすごいと思います。機械たちは絵を描くためのパワーを十分に持っているわけです。あとは想像力をもった魂(とても扇情的なワードですね)を与えればりっぱなアーティストになれるだろうと考えています。3DプリンタやCADに転用できれば彫刻も作れるでしょう。夢が広がりますね!!!

17歳の人工知能

ほんの数日前、11/29の記事で頭を抱えたくなるものを見ました。今年の10月に海の向こうで17歳の高校生が人工知能の論文を発表したとのこと。

https://wired.jp/2017/11/29/high-schooler-shaking-up-ai/

https://s3-us-west-2.amazonaws.com/openai-assets/MLSH/mlsh_paper.pdf

15歳で自分のニューラルネットを訓練してただとか、OpenAI 1 という組織でインターンしてるだとか、事実は小説よりも奇なりを地で行くワードがたくさん出てきます。素晴らしいことだけれど一方で何歳も年上の私がプログラム言語の文法でわーわー悩んでろくに何もできない奴だと思うと頭が痛くなりますね。

15歳でニューラルネットを自在に訓練するのは無理でも、いい年したプログラマ職の人や趣味でプログラムを書いているひとたちが自前のニューラルネットを書いて動かして遊んでいる事例はわりとたくさんあります。
AIや深層学習や機械学習はなにも大企業や天才ハッカーだけが使えるものではなく、実はその辺の(私のような)クソガキでも作り得るものなのです。

人工知能は万能じゃない

人工知能は万能ではありません。ある方の言葉を借りれば「機械学習は直感を鍛えているに過ぎない」と言います。乱暴な言い方が許されるならば「人の手に負えない大量のデータを、強大なマシンパワーとアルゴリズムでゴリ押して分析すること」と言えます。
人工知能という言葉の響きのおかげでAIというのは嘘をついたり、ギャグを投げかけると笑ったり、みたく人と同じように思考するものと考えている人も多いですが、実際のところそういった会話系AIよりたくさんの情報を分析する系AIのほうが圧倒的に多いはずです。それも大抵は「ある特定の情報に特化して分析するために訓練される」一点特化型のプログラムが大半で、映画や小説に出てくるような、ターミネーター的に人類を脅かせるくらい何でもできるスーパー強いAIが現実になるにはもうちょっとだけかかりそうです。

a4).png

実際の制作についての説明

ここからはこの作品においてどういった技術を使っているのかを手順を追って説明します。
最初に基礎用語の説明を載せるので機械についてちんぷんかんぷんな方でも雰囲気程度は掴んで頂けるかと思います。

2. 序論、基礎用語の説明

簡単な知識や用語の解説をします。以降の文章に直接出てこない用語もありますがこの手の話に興味があるなら知っておいて損はないと思います

  • パーセプトロン
    ニューラルネットワークの基礎をなす。2つの入力を元に0もしくは1の出力を行う簡易な構造をさします。

    • 発火 ここでは出力信号が0の時を「発火していない」、1を「発火している」とします。パーセプトロンの出力が1だと「発火した」などと使います
  • 機械学習
    英語でmachine Learning と書きます。深層学習とは似ているようで異なるもの

− ディープラーニング(深層学習)
AIの言葉と共にこれも時々使われる気がします
機械学習とは似ているようで違うもの

  • データセット
    プログラムの中でとても重要な要素です。教師、見本に当たるもので、形式は画像であったり文章であったり音声など様々です。
    画像分類をする場合は一つのパターンについて5万から10万枚の画像が必要十分とされています。
    例えばおにぎりの画像を識別するためにはいろんなおにぎりの画像を万単位で用意する必要があるってことです。

  • 行列
    数学用語で縦と横に広がりを持つ、数値のかたまりのようなものを指します。
    機械学習の基本は行列同士の計算で成り立っています。
    関連する大事な分野として線形代数やベクトルがあります。

  • 配列
    プログラム用語。行列と同じく一つ以上の数値のかたまり。しかし行列と配列は似て非なるもの。行列と異なるのは2次元以上の広がりを持てることで、3次元、5次元、12次元と際限なく増やしていけます。

  • python
    プログラミング言語の一つです。計算を得意とし、機械学習に適した言語といわれています。無料で利用できます。
    ・・・
    pythonの哲学を詩の形にまとめた「The Zen of Python」という物があります。pythonの中に仕込まれたイースターエッグで、pythonに限らずものづくりをする上で心得ておきたいことが19こ書いてあるので誰でも一度は読んでほしい詩です。
    参考URL:
    python公式サイトリファレンス(英語) - https://www.python.org/dev/peps/pep-0020/
    プログラマが持つべき心構え (The Zen of Python) - https://qiita.com/IshitaTakeshi/items/e4145921c8dbf7ba57ef#%E6%9C%80%E5%BE%8C%E3%81%AB

  • ライブラリ
    行列計算やラベル付与など、特定の作業を簡便に行えるように作られたプログラムの集まりです。これらをコード内で引用することで素直に書こうとすると数百行かかるような機能でも2,3行で済むなど、その恩恵は凄まじいものです。ここでは計算等々に役立つライブラリとpythonがあらかじめパッケージされているAnacondaという便利なものを使います。

  • CNN
    Convolutional Neural NetWork の略。
    畳み込みニューラルネットワークともいいその名の通り神経の仕組みを模した構造を持っています。
    部分から全体をあぶり出すような、あるいは全体から部分を紡ぎあげる構造をしています。

  • DCGAN
    Deep Convolutional Generative Adversarial Networks の略
    画像生成に威力を発揮するアルゴリズムです。
    adversarialは反対の、敵対するといった意味を持ち、DCGANのベースになっているGAN(Generative Adversarial Networks)は模倣者と識別者の2つの役割を一つのセットとして成り立っています。
    模倣者は学習データをもとに画像を生成します。識別者は画像を本物か偽物かを判定します。ホンモノの画像と模倣者の作った偽画像を見て本物は本物、偽物は偽物と判定できるようにします。模倣者は識別者が本物と誤認するような画像を生成します。これを無限に繰り返すことでより本物らしい画像を作るのがGANの手法です。
    これをディープラーニングへ転用したのがDCGANです。

(参考)DCGAN- http://pip-install-deeplearning.hatenadiary.jp/entry/2016/01/21/232837

  • processing
    グラフィック描画に適したプログラム言語です。初期のデータセットのほぼ全てをprocessingで作りました。javaベース。

  • vvvv
    Processingよりもさらにグラフィックに特化した言語です。概念的でグラフィカルな図を作成するために使用しました。windows専用ソフトウェア

  • qiita
    Qiitaは、プログラミングに関する知識を記録・共有するためのサービスです。(公式サイトより引用)
    簡易な装飾記法が使えるサービスで勉強に行き詰まった時はしばしばお世話になりました。

  • stackOverFlow, teratail
    とても乱暴に言いますと「プログラマ用の知恵袋」です。インターネットの海広しといえど、調べても本を読んでもわからないことはあります。そういう時にはやはり人に聞くのが一番手っ取り早い、らしいです。実際そうでした。teratailに質問を書き込んで助けを乞うたところ10分で回答が来てとてもびっくりしました。

    • transfer Leaningについて 直訳すれば移転学習となります。深層学習で得られた学習結果を他のプログラムへ応用(すなわち移転)しようというのがtransferLearningとされています

3. 作品の制作手順、結果

プログラミング言語はpython3x, 2x,ほかライブラリとしてtensorflow, numpy, matplotlibなどを使います。

3.2 一つ目の制作、プロトタイプ

まずはごく簡易な分類のプログラムを作ります。
numpyとkerasを主に利用してコードを書き、機械学習の基本構造を実践することを目的とし
ます。
先人の残したコードを模倣して、自分の学習用のデータに合った形へ書き換えていきます。

3.2.1 データ作成

使用するデータ画像は自分で書き出した丸と多角形のモノクロ画像です。
レイヤー 1.png

28*28ピクセルのモノクロ画像を1つの図形に付き3~6万枚ほど、processingを用いて作成しました。ランダムな図形を表示し、フレームごとに画面をpng画像として保存するプログラムです。
レイヤー 3.png

28*28=784のノードから始まる三層のモデルを作ります。
イメージとしてはこのような感じです。
レイヤー 7.png

入力784-784-4出力
総計算回数は784*784+784*4=61,7792回くらいということになります。
複雑なように見えますが、やってることは総当たり戦のようなものです。やたらに数が大きいので怖気づいてしまいますが要は同じような計算を繰り返してるだけです。その上計算そのものはコンピュータに任せるので割と楽です。
4種類の図形があるので出力は4つとします。

今回はプログラム上の構造を把握するのが目的なので少なめに、1図形につき3千枚ほどをピックアップして、計1.6万枚ほどで実験します。

画像データ整形

画像データはピクセルが二次元形状に並んだものなので1次元の形状にします。
通常の画像だと1ピクセルにつきR、G、Bの3つ値を持っているのでこれも操作する必要がありそうなのですが、今回使う画像はモノクロで1ピクセルにつき1つの値しか持たないので特に操作は必要なさそうです。

また、ピクセルの値は本来0~255を取るのですが、0~1の値に変換したいのでこれも整値を操作します。

画像の図形ごとにフォルダ分けして各フォルダごとに図形を区別するためのラベルを振ります。

 実行

学習、訓練にはReLu関数というものを使います。しきい値というものを設定して入力がしきい値より低ければ0、高ければ入力の値をそのまま出力するという関数です。

各画像のデータとラベルを紐づけて学習して、終わりに答え合わせ用のデータで機械が予想したラベルと実際のラベルがあっているかどうかクイズと答え合わせをものすごい速度で行います。
これが分類の流れです

実行です。これはものの数分で終わりました
image.png
…。
なんということでしょう。正解率は脅威の38%です。半分を切ってます。これじゃ人がやったほうがまだましというものです。
42 2 であったらもっと面白くネタにできたのですが中途半端すぎてネタにもなりません。
ちょっと試しに別の画像を使って同じ学習をさせてみましょう。
・・・

image.png
試しに10倍の数のデータで学習させてみましたが全く変化がありません。ちなみに学習にかかった時間は10倍どころではなく、2,3時間はかかりました。
200の繰り返し学習(エポック)でコレだけの数字なので1000でも200000回でも大した上昇は見込めないでしょう。
他にも改善すべきところがありますが、モデルよりも学習データのほうに問題があったであろうことは容易に想像できます。このことは次のプロトタイプで原因を探ることにします。

悲しみのデータセット

そんなことを言いながらよくよく見ると、データセットに不備がありました。これではできるものもできません。
まずは混ざったデータを取り除き、データとしてふさわしくない画像を取り除き、枚数をもう少し減らした上で再度試すことにします。分類画像も丸と三角の2つに減らします。
分類結果.PNG

どうでしょう。見事に100%です。数回やってみて99%, 100%を連続で叩き出しました。
いいですね、テキストでしか結果を見られないのであまり達成感はありませんが確かにここで機械学習が行われたと思うととてもうれしいですね。

3.3 二つ目の実験

実験と銘打っておきながらデータセットもコードももとからあるものを使用します。申し訳ない

DCGANを使ったtensorflowによる画像生成です。DCGANについては用語説明でごく軽く触れてあるので説明を省略します。
MNISTという有名な手書き数字のデータセットをを使ってコンピュータに数字を書いてもらいます
A tensorflow implementation of "Deep Convolutional Generative Adversarial Networks"  https://github.com/carpedm20/DCGAN-tensorflow

さてそれでは実行してみましょう。ラベルクイズをするだけの分類プログラムと違い画像を書き出す必要があるのでスピードは当然こちらのほうが遅いと思われます。

14epochを完了するまでにおよそ19時間かかりました。恐ろしい!
19時間の学習の成果がこれです(gifアニメーション)

1511978474HmUEoz9J7Dpqwq41511978474.gif  

test_arange_99.png  

謎のモヤモヤした雲から徐々に数字っぽいものが形作られていくのがわかるでしょうか。実際に目の前でだんだん画像が数字っぽくなっていくのを見ると感動ものですよ。まるで出産に立ち会っているかのような…そんな経験は今のところしたことがありませんが。
この程度のことで喜んでいると本職の方から鼻で笑われそうですがとにかく個人所有レベルのPCでもこれくらいの画像生成なら可能だということもわかりましたし、いつになるかもわからない次のステップへのモチベーションにもなりました。

機械に創造性を移植する方法を想像してみる

…もう前の章は終わってしまいました。はい、人にお出しできるレベルの実験はこれだけです。言語習得から頑張ったので許してくれとはとてもとても言えませんが、罵倒の代わりに役立つ情報や役立つ批評や本のお勧めをしてくれると身体から嬉し涙が逆流します。(訳:親切にしてくれてありがとうございます)

さてここまでは既存の方法をなぞってコンピュータにAIぽいことをしてもらっていました。
では機械に創造性をもたらすためにはどんな方法をとればいいのか、門外漢なりに考えていくつか案を出すことでこの文の締めとさせていただきます。

GANの方法を応用してディスクリミネータ役に時々ドジってもらう
- 機械による機械のための芸術について定義する
- 機械に機械自身の歴史(人の人生に当たるもの)を記録させ、利用する  
- 解像度の概念を持たない液晶画面
- パーセプトロンに変わる思考単位を作る。人間の神経をモデルにしたパーセプトロンでなくより機械の価値観に沿ったモデルを作る
- 機械の価値観、機械の美意識を誰が保証するのか、考える
- コンピュータ達の間違いや記憶の欠落、劣化、忘却を意図的に発生させてみる

・・・。

謝辞

全く関わりのなかった分野の勉強と考察のため、多くの方の助けをいただきました

(全省略)

参考文献-bibliography

斎藤康毅: ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装, オライリー・ジャパン
岡崎章夫: はじめての画像処理技術 第2版, 森北出版
Bill Lubanovic, 斎藤康毅, 長尾高弘: 入門Python3, オライリー・ジャパン
ポール・グレアム: ハッカーと画家 コンピュータ時代の創造者たち, オーム社
E・H・ゴンブリッジ :美術の物語 ポケット版 ,ファイドン
ケヴィン・ケリー:インターネットの次にくるもの, NHK出版
クジラ飛行机: Pythonによるスクレイピング&機械学習[開発テクニック],ソシム
群れは意識をもつ:郡司ペギオ-幸夫, PHPサイエンスワールド出版
銀河ヒッチハイクガイド:ダグラス・アダムス, 安原和見, 河井出文庫
TEXT 線形代数
高校数学でわかる線形代数
芸術脳と科学
Simone Bianco 他: Image Aesthetics, http://www.ivl.disco.unimib.it/activities/image-aesthetics/
(順不同)
卒業論文・修士論文を書く人へ http://isabelle.cc.kyushu-u.ac.jp/~amano/how_to_write/
generative adversarial nets http://datascienceassn.org/sites/default/files/Generative%20Adversarial%20Nets.pdf

OpenAI:Requests for Research https://openai.com/requests-for-research/#inverse-draw

機械達のことをもっと知ってみよう -色んな作品

人工知能やAIの登場する作品、機械と人間の闘争を描いたもの、その他考察の一助になった作品を紹介します。

谷崎潤一郎: 陰影礼賛, 中公文庫

  • 懐古主義のおじさんが和式を懐かしむエッセイとも言う。しかして語り口は丁寧で10年後にまた読みたくなる文章です。

神林長平: いま集合的無意識を、,早川書房
神林長平: 戦闘妖精・雪風<改>, 早川書房
神林長平: グッドラック戦闘妖精・雪風, 早川書房

- 雪風シリーズは名作なので是非オススメします。空戦とツンデレAIが好きな貴方にどうぞ。

神林長平: あなたの魂に安らぎあれ, 早川書房

A・A・スクエア: フラットランドの冒険

  • 一人の2次元の住民が3次元のの世界を認識し、啓蒙するまでの自叙伝風短編です。自分の世界の上位に位置する存在を認識するのがどういうことか、それを掴むきっかけになります。二次元と聞いて可愛い女の子を想像した方は少し落ち着いてから作品タイトルをググって概要を読んでください。

映画:
アップルシード
楽園追放

ps用ゲーム:
オメガブースト, ポリフォニーデジタル

ps2用ゲーム:
アーマードコア3, フロムソフトウェア
Z.O.E zone of the enders
ANUBIS Z.O.E zone of the enders

ps3用ゲーム:
アーマードコア ヴァーディクトデイ, フロムソフトウェア

psvita,3ds用ゲーム:
電脳世界からの脱出


  1. OpenAI. is a non-profit AI research company, discovering and enacting the path to safeartificial general intelligence. 

  2. めっちゃでかいコンピュータがはじき出した人生、宇宙、すべての答えのこと