もう既に記事は出ていますが、その記事を参考にiOSでTensorflowを動かしてみました。
そもそも、Tenforflowとは、Googleが提供する、「ディープラーニング」という技術を使用したサービスです。
今更という感じもしますが、基礎的な理解のメモです。
ディープラーニングとは?
機械学習とは、人間が学習するのと同じように機械が学習することを目指した人工知能研究の1分野です。ディープラーニングは機械学習の中の1つです。
ディープラーニングとは、ニューラルネットワーク(Neural network)を使用して行われる機械学習のことです。
ニューラルネットワークとは何なのでしょう?
ディープラーニングの考えのもととなっているニューラルネットワークは、人間の脳神経回路を真似することによってデータを分類しようというアイデアに基づくアルゴリズムです。
ニューラルネットワークのニューラル(neural)は、ニューロン(neuron・神経細胞)のことで、人間が物事を判断したりするときの神経(脳)の働きにヒントを得て、派生した学習方法です。
ディープラーニングとは、ニューロン(神経細胞)が信号の受け渡しをすることにより情報処理をしているという脳の仕組みを、ニューラルネットワークとしてコンピュータ内に実現し、それを多層化したものです。
一つ一つのニューロン(関数)は単純な判断・計算をしていますが、組み合わせることにより、より詳細なデータを得ることができます。データから学習して発展していくものなので、たくさんのデータを学習させる必要があります(基本的には、数十万単位のデータを学習させる)。
このディープラーニングは既に色々なところで使用されています。
例えば、音声認識、画像認識、Googleが開発している人工知能による碁打ちのAlphaGoなどがあります。
Tensorflowは、Googleが提供する、ディープラーニング技術を使ったサービスの一つです。
Googleが提供する他のサービス(例えば、Google cloud vision API(画像認識)やSpeech API(音声認識))との違いは、学習済みであるかないか、という点にあります。(Tensorflowで既に学習させたものをサービスとしている)
つまり、Tensorflowは、自分のデータを自由に学習させたい!という場合に使用したいサービスです。
Tensorflowについて
Tensorflowの読み方は、日本では、「テンソルフロー」が多く、英語圏では「テンソーフロー」が多いとのことです。
"Tensor"とは、
線形の量を表す概念で、多次元データ構造を表すもの
だそうです。
コア部分はC++、ユーザー向けにはPythonのインターフェースが用意されているそうです。
Tensorflowの特徴は以下です。
1. Deep Flexibility(深い柔軟性):柔軟なニューラルネットワークの構築。C++で低レベル処理を書くことも可能。
2. True Portability(真の移植性):どのようなハードウェア上でも動かすことができる。
3. Connect Research and Production(研究と製品の接続):独自の研究の製品への転用を迅速に行える。
4. Auto-Differentiation(自動微分):勾配降下法(間違えから学び、正しい方法を学んでいく)ベースの機械学習アルゴリズムは、Tensorflowの自動微分の機能から恩恵を受ける。
5. Language Options(言語選択):Pythonインターフェース、C++インターフェース(現時点)
6. Maximize Performance(パフォーマンスの最大化):スレッド、キュー、非同期計算のクラスのサポートを使用すると、ハードウェアを最大限に活用できる。
Tensorflowの利用例
一般の人がTensorflowをどのようにして試しているか調べてみました。
・キュウリの仕分け
キュウリの良し悪しを、画像を学習させて判断する。というもの
・株価の予想
終値が始値よりも高くなるか判定etc...
・消費者感情分析
映画のreviewデータベースを利用して評価分類を行うというもの(評価をpositive,negativeに分ける)
参考