SENAN

4人の仲間が交代で書く雑記

TensorFlowのお勉強 その1

   

2015年の終わり頃に話題になった、「TensorFlow」(テンソルフロー)。
Googleが発表した、機械学習のオープンソースライブラリです。

私は昔ちょっとだけ機械学習をかじっていたこともあり、このTensorFlowに興味が湧いてきたので、今更ながら勉強してみることにしました。

これから少しずつ、TensorFlowについて調べたことや考えたことを記事にまとめていこうと思います。

機械学習とニューラルネットワーク

機械学習の手法に「ニューラルネットワーク」というものがあります。
TensorFlowを学ぶ上で、このニューラルネットワークが肝となりそうなので、簡単に説明します。

ニューラルネットワークは、生物の脳神経の仕組みを数式で再現して学習に用いようという手法です。
生物の脳は、神経細胞(ニューロン)同士がシナプスという構造を介してネットワークを構成しています。
ニューロンは他の複数のニューロンからシナプスを通じて信号入力を得ます。
しきい値を超える入力を得たニューロンは信号出力を行い、その信号はシナプスを通じてまた別のニューロンに伝えられるというわけです。

TensorFlow1

シナプスは可塑性を持っていて、これによって信号の伝達効率(結合強度)が変化します。
各シナプスの結合強度が変化することで、入力パターン別に反応するニューロンが変わります。
これが脳が学習する仕組みだと考えられています。

TensorFlow2

これを数学的な有向グラフを用いて、ノードをニューロン、エッジをシナプスに見立てて再現したものがニューラルネットワークなのです。

TensorFlow3

TensorFlowとは?

TensorFlowは機械学習のライブラリと銘打っていますが、厳密には「データフローグラフ」というものを扱うためのライブラリのようです。

※ データフローグラフというのは下記のようなグラフのことだそうです。

  • 閉路を持たない有向グラフ(有向非巡回グラフ)である。
  • ノードが数学的な演算を表す。
  • エッジが多次元データ配列(テンソル)を表す。

このデータフローグラフによってニューラルネットワークを実現することができるので、機械学習に役立てようという趣旨のようですね。

最大の特長は、分散処理を手軽に行えることのようです。公式の概要ではこんなことを謳っています。

  • CPU、GPUのいずれでも動く。
  • 普通のPC、サーバ機、モバイル端末などプラットフォームも問わない。
  • 複数の異なるリソースに演算を自由に振り分けられる。
  • 環境に応じてソースを書き分ける必要がない。

機械学習には膨大な計算がつきものですが、有り物のデバイスを総動員した効率的な分散処理が期待できそうです。

*****

次回は、試しにTensorFlowにちょっと触ってみようと思っています。

【今回読んだもの】

 - プログラミング