読者です 読者をやめる 読者になる 読者になる

アプリとサービスのすすめ

アプリやIT系のサービスを中心に書いていきます。たまに副業やビジネス関係の情報なども気ままにつづります

書籍『Tensorflowで学ぶディープラーニング入門』の内容まとめ(1章)#Tensorflowコードの仕組みを理解する

ディープラーニングを学ぶ上で、Google が提供するTensorflowの学習は避けて通れません。2015年に発表されてからまだ十分な学習環境が整っていないので、一部の書籍やネット上の情報で学ぶしかないのが現状です。今回はTensorflowのチュートリアルの1〜4までをカバーしてる(はずの)書籍『Tensorflowで学ぶディープラーニング入門』を読破したので、内容をまとめてみようと思います。

学習メモですが、なるべく理解度を上げるため汎用的に説明したつもりです。書評というより、「この本を通して何ができるか」をわかるように書きました。
また一記事にまとめると長くなるので、1章のまとめでは2記事にまとめ、Tensorflowの基本的な使い方を載せた記事はこちら


今回は1章を通してわかること、Tensorflowのコードの仕組みと機械学習の考えをまとめておきます。2〜5章は多層ニューラルネットワークの仕組みを理解しながら、テクニックを身につける内容ですが、詳細はこちらの記事。



目次
・この書籍がカバーしているTensorflowのチュートリアルの範囲
・Tensorflowの役割

この書籍がカバーしているTensorflowのチュートリアルの範囲



Tensorflowのチュートリアルは下記のようになっています。

 
Tensorflowチュートリアル
・MNIST For ML Beginners
・Deep MNIST for Experts
・TensorFlow Mechanics 101
・Convolutional Neural Networks

以下省略


上記の内容を簡易に要約すると

機械学習が始めての方はここから
・他のパッケージでDeep Learningに慣れていおり、MNISTも知っているならここから
・MNISTを使って、もう少し規模を大きくしてTensroFlowの仕組みを学ぶ
・CIFAR-10のデータセットを利用したCNNの入門コース

以下省略

参考サイト「TensorFlowで始める深層学習 (1)そもそも何が出来るの?

 



この『Tensorflowで学ぶディープラーニング入門』の主な趣旨は、MNISTという画像セットを使ってTensorflowのコードを実装しながら、多層ニューラルネットワーク(CNN)の仕組みを理解しようというものです。
Tensorflowのチュートリアルでいえば1〜4の範囲までを網羅とまではいかなくても、学習したのと同じ効果が得られるでしょう。この書籍で学べるのは、主に学べるものは次のようになっています。



・Tensorflowのコードはどのような仕組みで使用するのか(1章)
・MNISTデータセットを使ったCNNの全体像の理解を通したテクニック(2〜5章)



今回は1章で学べることとして
機械学習の基本的な考え
・Tensorflowの役割

を淡々と書いていきます。学習記録なので、専門用語とか平気で使いますが、なるべくわかりやすく書いたつもりです。




Tensorflowの役割



機械学習では大きく分けて、
・教師ありアルゴリズム
・教師なしデータアルゴリズム

にわかれます。

『Tensorflowで学ぶディープラーニング入門』のチュートリアルでは、教師ありアルゴリズムであるディープラーニング(特にCNN)をコードを用いて、実際に実装することが目的です。



機械学習の根本的な考え方
機械学習ではあるデータの背後にある「数学的な構造」をコンピュータで見つけ出すことです。例えば、ある土地の平均気温のデータを予測してほしいと頼まれた場合、数年の気温データをもとにその先の気温を予測します。

f:id:trafalbad:20170320112621j:plain

例えばこんなデータが与えられたとしたら、このデータの背後にある数年先の気温を予測してくれるような「数学的な構造」を見つけ出すことです。数学的であるということは、ある程度の規則性をもっているということです。

数学的な構造を見つけ出すと言ってますが、これは一般的には物事を分類する問題(例:画像を分類する)と、予測する問題(例:株価の予想)に該当します。




そのためには以下の手順の作業をします(これは「最適化アルゴリズム」と呼ばれるものです)
①与えられたデータを元にして、未知のデータを予測する数式を立てる
②2乗誤差関数(損失関数)を求める
③勾配降下法を使って2乗誤差関数を最小にする

主な数式は割愛しますが、この3ステップのアルゴリズムを行うことで、データの背後にある「数学的な構造」を見つけ出すことが可能になります。



機械学習にはニューラルネットワークディープラーニング)がなぜ必要か
さっきは平均気温を求めるという予測問題を例に出しましたが、ニューラルネットワークの必要性を示すために分類問題を例に出します。

機械学習では「最適化アルゴリズム」でデータを分類、予測したりできます。しかし一般的にはこの問題はとても複雑なため、単純に最適化アルゴリズムの3ステップを行なっても対処できません。

例えば、下の図は癌にかかっている患者、かかっていない患者を分類してしたものです。

f:id:trafalbad:20170320112647j:plain
単純な分類問題とかなら下の図のように1本の線だけで済みます。しかし普通は3つ以上のものを分類しなければならないので、より複雑な線(関数)が必要になります。複雑になることは変数が増えるのですが、変数が増えて問題が複雑になると「最適化アルゴリズム」だけでは対処できなくなります。




そのためにニューラルネットワークという技術が必要になるのです。ニューラルネットワークでは複雑な問題に対処するために、その構造はより複雑さになります。


f:id:trafalbad:20170320112707j:plain
層内のノードを増やしたり、ノードの層を増やしたりする

そしてその構造が複雑になり、多層に渡るニューラルネットワークが構築されたものが多層ニューラルネットワーク(CNN)、つまりディープラーニングとなります。





Tensorflowは機械学習でどのような役割を果たすのか?
Tensorflowは「最適化アルゴリズム」やCNNを、実際にコンピュータで実装するためのコードをまとめたライブラリです。

Tensorflowのコードを用いれば、「最適化アルゴリズム」のステップで登場する、損失関数や勾配降下法をコードを使って実装できます。さらにCNNを実際にコンピュータでコードを使って実装することもできるわけです。

Tensorflowにはディープラーニングに必要な役割を持つ特別な関数が用意されているからです。つまり、Tensorflowを用いることでコンピュータを使って、ディープラーニングを構築することができるようになります。



Tensorflowの役割をざっとまとめました。本当はTensorflowのコードを使って「最適化アルゴリズム」の3ステップを実際に行い、気温を予測するところまで書くつもりでした。が、長すぎるので続きは次の記事で書いています。


f:id:trafalbad:20170320112810p:plain:w200
AmazonTensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~

広告を非表示にする