近年、ディープラーニングをベースとした人工知能が脚光を浴びています。

ディープラーニングは、人間の脳を模倣したニューラルネットワークという技術が元になっています。その応用範囲は広く、眼の病気を診断したり、簡単な会話をすることが出来るようになりました。

本記事では、そのニューラルネットワークの仕組みを可視化してブラウザで直感的に理解できるようにしたTensorFlow Playgroundを使いながらステップ・バイ・ステップで使い方を解説しながら紹介します。

現在注目されているAIがどのような仕組みで動いているのかを知りたい方は、まずはこの記事を通して感覚を掴むことをオススメします。

TensorFlow Playgroundとは

TensorFlow Playgroundは、A Neural Network Playgroundとも呼ばれ、Daniel SmilkovさんとShan Carterさんが開発したニューラルネットワークの仕組みを理解するための教育コンテンツです。

こちらのリンクからアクセスしてください。

A Neural Network Playground

すると、不思議な音楽プレイヤーのような画面が出てきたかと思います。

TensorFlow Playgroundトップ

ニューラルネットワークを理解しよう

このTensorFlow Playgroundで遊びながら、ニューラルネットワークを直感的に理解していきましょう。

ニューラルネットワークとは

本来、コンピュータは計算機として活用されて来ました。人間よりも高速に、休む間もなくずっと数値演算することが出来ます。さらに、計算ミスもしません。

一方で、以下の画像に写っている2種類の動物を答えるという問題はどうでしょうか。

犬と猫

この問題を解くことは、コンピュータにとっては非常に難しい問題になります。一方で、私たち人間にとっては簡単な問題です。人間どころか、カラスや豚などの小さな動物ですら、こういった動物を区別することは出来ますね。

ニューラルネットワークは、実際の脳の仕組みから着想を得て、脳の内部にあるニューロンの働きをコンピュータで模倣した技術です。

こういった複雑な問題をコンピュータで解けるようにすることが、今の人工知能に求められていることなのです。

それぞれのグラフの解説

それでは、実際にTensorFlow Playgroundを動かしてみましょう。

まずは、一番左側にあるDATAというところを見てみてください。

DATAに注目

ここでは、ニューラルネットワークに覚えさせたい問題に対応するデータを指定します。これを、訓練データと呼びます。一つ一つ入力に対応する答えを教えてあげることで、複雑な問題に答えることができるプログラムを作成するイメージです。

TensorFlow Playgroundでニューラルネットワークに教えてあげる問題は、座標平面上の点を2種類に分類するタスクです。

DATA部分

選択できるデータは4種類ありますね。今回は左上の中心付近が青色の点で、その周りをオレンジ色の点が囲っているもので説明します。これを、プログラムで組もうとしたら少々面倒くさいかもしれません。正解のデータがあれば、手っ取り早くニューラルネットワークに教えてあげるほうが早いでしょう。

次に、OUTPUTに注目します。

OUTPUT部分

ここには、ニューラルネットワークの出した答えとデータが可視化されています。

OUTPUT

上図の左側を見てください。オレンジ色の点と青色の点があります。背景がうっすらと青とオレンジ色に分かれていますね。この背景の色が、ニューラルネットワークの答えです。まだニューラルネットワークは何も学習していないので、答えが出せない曖昧な状態になっています。

下にあるShow test dataというチェックボックスをクリックすると、テストデータが表示されます。テストデータは、ニューラルネットワークに教えるためには使わないデータで、このデータを使ってニューラルネットワークが正しく学習できたかを検証します。

なぜ訓練データとテストデータに分かれているのでしょうか?理由は、一般的な入力値に対しても正しく求めて欲しいデータを答えられるモデルを構築できているかを検証するためです。教えた答えだけを全て暗記してしまっては意味がないからですね。

右側は、Discritize outputのチェックボックスをチェックした時の図です。答えが曖昧でも、最終的にどちらの答えになるのかをハッキリさせることが出来ます。

次に真ん中のグラフを見てみます。

ニューラルネットワークに注目

ここは、ニューラルネットワークのモデル部分になっています。

ニューロン

3列の四角いセルが、隣の列のセルと繋がっていますね。右側2つのセルはニューロンです。ニューラルネットワークは、各ニューロンの役割と、各ニューロン同士の接続度合いを調節しながら複雑な問題を解く方法を学んでいきます。

左の部分は、ニューラルネットワークに与える特徴量になります。特徴量とは、画像では各ピクセルの色が含まれるでしょう。ユーザーの行動を元に広告キャンペーンを最適化したい場合は、ユーザーの過去の行動ログかもしれませんね。

このモデルでは、という名前がついた値を特徴量として渡していますね。これは、座標と、座標の値です。

実際に動かしてみよう

それでは、実際にこのモデルを動かしてみましょう。左上にある再生ボタンを押します。

再生ボタンに注目

するとこんな感じになります。

ネットワークの学習

OUTPUTを見てみると、二種類の点を見事に青とオレンジ色に分類することが出来ました!

そして、ニューロンをじっくりと観察してみます。それぞれのニューロン同士の接続の太さと色が変化していることが分かると思います。そして、二層目のニューロンでは、一層目のニューロンよりも複雑なヒートマップになっていますね。

ディープラーニングでは、この層の数を増やしていきます。こうしていくことで、より複雑な特徴を掴むことが出来るようになるのです。

まとめ

TensorFlow Playgroundを使って、ニューロンの動きを観察しながらニューラルネットワークを直感的に理解できるように解説してみました。

実際に1個のニューロンが出来ることはシンプルで非力に見えますが、こういったニューロンが協調していくことで複雑な問題を解けるようになっていくことは興味深いですね。

よくよく考えると、コンピュータでは原理的には0と1を足し合わせることしかできません。ですが、私たちはコンピュータを使って音楽を聴くことや動画を視聴することも出来ます。さらには、インターネットで世界中の人と繋がることができるようになりました。

今後、ニューラルネットワークはどこまで進化するのでしょうか?この記事を通して、そんな可能性を感じてもらえると嬉しいです。