Skip to content

Instantly share code, notes, and snippets.

@shutosg
Last active May 25, 2016 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save shutosg/26d325e11d389e1e8ff8cd76f8541bd2 to your computer and use it in GitHub Desktop.
Save shutosg/26d325e11d389e1e8ff8cd76f8541bd2 to your computer and use it in GitHub Desktop.
Japanese Translation of http://playground.tensorflow.org/

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

ニューラルネットワークとは、人間の脳の働きを大雑把に真似た、データから学んでコンピュータプログラムを作り上げるテクニックです。まず、"ニューロン"という単位機能の集合体が定義され、それぞれが互いにメッセージをやり取りできるように結合されます。次に、その集合体(ネットワーク)に繰り返し問題を与え、解かせますが、その度に正解を導いた結合間の強さを強め、誤答を導いた結合間の強さを弱めます。より詳細なニューラルネットワークの導入はMichael NielsenのNeural Networks and Deep Learningを参考にすると良いでしょう。また、より詳細な技術的な概要は、Ian Goodfellow、Yoshua Bengio、Aaron CourvilleによるDeep Learningを見てください。

Playgroundの再利用について

自由に使えます。我々はニューラルネットワークの学習の簡易化に少しでも貢献出来ることを願って、PlaygroundをGitHubにてオープンソース化しています。そのため、Apache Licenseに従ってさえいればどんな方法でも無料で利用できます。また、もし追加や改善などの提案があれば、是非我々に連絡を下さい
Playgroundをカスタマイズできるいくつかの制御を以下に提供しています。表示・非表示を下記のチェックボックスで決めたら、このリンクを保存するか、ページを更新してください。

可視化における色付けについて

オレンジと青はネットワークの可視化において、ほとんどの場合、それぞれ負値(オレンジ)と正値(青)を表します。
小さな丸で表される学習データ群は、初めにオレンジか青の色をしていて、それぞれは正負のどちらかに一致しています。
隠れ層において、各層間の線は重みによって色づけられています。青い線による結合は正の重みを表し、その結合はネットワークへの入力に対する出力に使われています。オレンジの結合は負の重みに相当します。
出力層において、各点は元の値に応じてオレンジか青に色付けされ、背景の色はネットワークによって導き出される結果を表します。色の濃さは結果の信頼度を表します。

個人的メモ

大前提の確認

このサイトでは、2次元の値を入力値として与えると1次元の値を出力するニューラルネットワークを可視化している。各パーセプトロン間の線の色は各結合重みを表し、データの色は。青は正の値/重みを表し、オレンジは負の値/重みを表す。

ネットワーク(ニューラルネットワーク全体)の定義

| | ---|---|--- 入力値(2次元) | 各点の座標(X1, X2)(ただし、-6 < X1,X2 < +6)| 出力値(1次元) | -1 or 0 or +1 = オレンジ or 白 or 青 |

学習について

教師データは、「座標とその点の色(オレンジ(-1) or 青(+1))」のセット。

  1. ネットワークに「座標(2次元)」を入力する。
  2. 出力された色と、教師データの色と比べる。
  3. 合っていたら各パーセプトロンの結合を強め(係数を増やす)、間違っていたら結合を弱める(係数を減らす)。
  4. 1〜3を繰り返す。

パーセプトロン(各層を構成する1ユニット)の定義

| | ---|---|--- 入力値(多次元) | 前層の出力値 * 結合の重み = -1〜+1| 出力値(1次元) | -1 or 0 or +1

座標値を元に、出力(-1 or +1)が決まり、その出力に結合重み(-1〜+1)が乗算されて次の層へ渡される。また、各パーセプトロンの平面は、「ネットワークへの入力(2次元値)に対するそのパーセプトロンの出力(1次元値)」を表してる。

入力層

このサイトでは用意されている7種類のパーセプトロンを使用できる。当然単純なものが用意されており、これらの出力と結合重みを乗算した値が次の層の入力の1つになる。

隠れ層

どのようなアルゴリズムで更新されているのかは分からないが、更新ごとに修正を繰り返すことで最終的にそれぞれのパーセプトロンは今までの更新の流れでは最適な解(?)に収束する。(ただしその収束結果が最適とは限らない?)

出力層

入力値に対する最終的な出力値。平面が色ごとに領域分けされており、平面のとある点(座標)を入力とすると、その点の背景色が出力値を表してる。

個人的メモここまで

使用ライブラリ

我々はこの学習用の可視化の需要に応える小さなニューラルネットワークのライブラリを書きました。現実世界でのアプリケーションのためには、TensFlowライブラリを考えてみてください。

クレジット

本ソフトはDaniel SmilkovとShan Carterによって作られました。また、本ソフトはとりわけAndrej Karpathyによるconvnet.jsのデモ、Chris Olahによるニューラルネットワークについての記事など、過去に渡る多くの人々による努力の延長上にあります。そして、オリジナルのアイディアの助けとなったD. Sculley、多くのフィードバックと指導を頂いたFernanda Viégas、Martin Wattenberg、そしてその他のthe Big PictureGoogle Brain teamsにもこの場を借りて御礼申し上げます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment