THE長文日記

長文とか短文とかのクレームは一切受け付けません

テレビばっかり見てなさい  知能が高いとはどういうことか AIから考える

 

 「あの人は地頭がいい」


 なんて言ったりします。


 「彼の頭脳は明晰だ」


 とも言います。

 この「頭の良さ」は多分に感覚的なもので、「あの人頭いいよねー」という言葉がそのまんま、かなり頭のわるい発言に聞こえてしまうのです。


 とはいえ、頭が良さそうに見られなければ商売にならないプログラマー稼業は、頭の良さについて常にそれがどういうことなのかついつい考えてしまいます。


 AIを扱っているということは、要するに知能を扱っているということなので、どうすればいい知能が育つのかという興味は、そのまま仕事に直結します。


 最近、互いが互いに敵対するようにして学ぶ、敵対生成ネットワーク(GAN)を学習させていると奇妙な現象に気づきました。

 

https://i.gyazo.com/010483333131ff4bb85e575f5dcbc506.png


 GANでは、一方があるランダムな特徴次元から画像を生成し、もう一方が本物か偽物かを学習することで物体の特徴を掴みます。


 このネットワークの凄いところは、基本的にはラベルデータが不要なことです。

 

 言ってみれば。どんな画像を与えても学習されます。

 では、どれくらいの画像を与えればいいでしょうか。


 GANで充分な訓練をした生成器にランダムに特徴ベクトルを与えると、こんな感じになります。

https://i.gyazo.com/131837179894375d7fea561f20c10759.png

 人間の走り書きした手書き数字を学習したので、たしかに走り書きのような数字が見て取れますね。

 これは7万字の手書き数字を学習した結果でした。画像生成に使った特徴次元は100次元です。

 ここでひとつ疑問が生まれます。

 なぜ、手書き数字なのに100次元の特徴ベクトルを使うのか。

 手書き数字なら、ふつうは10次元くらいでいいと考えられないでしょうか。だって数字ですからね、0から9までの10種類を表現できれば本当は充分なはずです。


 そこで20次元まで落としてみました。

 20次元まで落とすと、なんとこうなってしまいます。

https://i.gyazo.com/5e768d7e4e8c4d0a8ffeb0a51c246620.png

 なんとも冴えない結果になってしまいました。

 20次元まで落とすと、なにを見せても判別できなくなってしまうのです。


 また、逆にどのくらいの学習データが必要なのかも検証してみました。

 MNISTには7万字の手書きデータがありますが、10クラスでそれぞれ7000サンプルずつなんていう都合のいいデータばかりではありませんので、たとえば1000だけで学習させると

https://i.gyazo.com/aa698a62990ad84991a1c38f0d5b2819.png

 バグったんじゃないの?と疑いたくなるレベルです。

 20次元に落としたときよりもさらに悪い結果になりました。

 さきほどの20次元の学習では、判別できないものの、なにか文字のようなもの、数字ぜんぶが混じったようなものはうっすらと見えました。


 しかしこれでは、このAIがなにを学習しようとしたのかすらわかりません。

 ちなみに1000じゃまずいなら1万はどうだ、ということで1万サンプルで学習させてみると・・・

https://i.gyazo.com/d64ef1b7563d263ce53368e01009d970.png

 まるで、ダメ!

 やっぱりバグってんじゃないの?と思ってあわてて同じプログラムで7万字学習させるとうまくいく。

 うーむ。ピーキーだな。


 じゃあ3万字ならどうだ、と思ったらなんとなくうまくいきました。

https://i.gyazo.com/cae5f4a69f064ee3df86126613edd8e2.png


 上手く行ってはいるけど、よく見ると全体が白っぽいというかグレーっぽいところあるでしょ。

 あれがこじらせると、さっきみたいに全体がグレーになっちゃったり、全体にまんべんなくノイズっぽくなっちゃったりするんだろうなと思われ。


 ということは、GANの場合、AIが賢くなるためには2つの条件があることがわかった。

 ひとつは、特徴次元。これが極端に小さいとたとえ10種類の数字ですらも判別できなくなる。人間は「あれは1、これも1」と覚えているけれども、実際には10種類ではなくもっと多くのパターンの数字を認識して、その中でまとめていると考えられる。7の真ん中に線を引くとか、たしかに普通に見たら違う図形だもんな。


 もうひとつはデータ量。そしてこれは結構大事だということもわかる。

 クラス数と関係しているかはわからないけど、少なくとも28x28の784次元を学習させるのには、3万くらいのデータが必要らしいと考えられる。1万から3万の間のどこで学習が成功するかは今調査中。


 人間の頭のなかにも複数のニューラル・ネットワークがあり、それが相互に接続されている状態と考えることができる。


 GANのように、あるニューラル・ネットワークがランダムな特徴ベクトルからなんらかのイメージを作り出し、それを判別するようなネットワークが脳の中にあってもそれほど不思議ではない。完全に同じということはありえないが、似たような仕組みで学習している可能性はある。


 ということは、知能を高めるにはとにかくいろんなものを見る、つまり学習データセットを増やすことが大事になる。


 その意味で、実はテレビが一家に一台ある時代の子供は、それがなかった時代の子供よりも知能的にはずっと賢くなってる可能性が高い。


 人間は本能として賢くなりたい、新しい道具を使いこなしたいという欲望を持っている。進化欲、進歩欲とでも言うようなものだ。


 子供が夢中になるものには、常にそういう要素がある。


 そしてテレビの次に流行したテレビゲームは、これまで一方的に与えられるだけだった視覚情報を、コントローラによって関与し、変化させることができるという点で画期的であり、これが子供の知能を飛躍的に高めることに貢献した可能性も考えなければならない。


 少し前に話題になった「ゲーム脳」とは真逆に、もしかするとゲームやテレビは子供の脳の発達にとってより重要な役割を果たしているのではないかという可能性である。


 ただ、ゲームが悪影響になることがあるとすれば、面白すぎてテレビを見る時間が相対的に減ることが挙げられる。


 家でじっとしているよりは、テレビを見たり、博物館や美術館、展覧会や海外旅行に連れていく方が、子供の脳は発達する可能性が高いのかもしれない。


 問題は今現在、子供を含め、知能を適正に測る手段が我々にはほとんど存在していないことである。

 だから、子供の知能が高いとか低いとかは、実際にはわからない。


 僕に言えるのは、少なくとも生物の神経細胞を模して作られたAIという知能が高くなるためには、どのような場合でも学習用データ・セットが多くて、多様性に富んでいれば富んでいるほど良い、という観測上の事実を指摘することだけだ。


 知能が高くなったからといって学校の成績が上がるわけではないのでそこんとこ勘違いしないように