Tensorflowのチュートリアルで理解するdeep learningはじめてハンズオン

Preview:

Citation preview

TECHNOMOBILEGROUP 

HEAD OFFICETOKUSHIMA development section

|  5floor Column Minamiaoyama,7-1-5,Minamiaoyama,Minato-ku,Tokyo 107-0062,Japan|  3floor Tokushimakenkohkagaku-center,Hiraishisumiyoshi,Kawauchi-cho,Tokushima-shi Tokushima 771-0134,Japan

Tensorflowのチュートリアルて理解するDeepLearningはしめてハンスオン

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 2

ディープラーニング、知ってますよね?

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 3

顔を分類

カラーに変換

その画家風の絵を作成

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 4

見て分かりやすいし、面白そうてすよね。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 5

サンプルプログラムを動かした人はいるとは思いますが、

ちゃんとプログラム内容を理解しているひとは少ないてすよね。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 6

今回は、簡単な統計知識をもとにサンプルコードを理解して、

自分て作れるようになりましょう。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 7

どんな環境が良いの?

ChainerCaffeいろいろありますが、 Pythonは避けて通れません。どれも Pythonのライブラリーてす。

行列計算のライブラリ  numpy の強みてす。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 8

最近の動向ては Googleがリリースしている Tensorflowがコーディング量も少なく、チュートリアルや情報が充実しているのておすすめてす。

勉強会も盛んにおこなわれています。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 9

今回は Tensorflowのチュートリアルを理解して DeepLearningの世界を見ていきましょう。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 10

DeepLearnigとは?

ニューロン

人の神経細胞が信号を伝える仕組みを真似して作られた、ニューラルネットワークの発展版

入力層

隠れ層

隠れ層

出力層

正解

スレを評価して重み付けを調整する

何度も繰り返して特徴を残す。これが Deepな理由。

重み

AzureMLのような機械学習との最大の違いは特徴量を自動的に抽出するところてす。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 11

・画像認識に使われる CNN。データが固定長。画像サイスを揃えないとダメ。・可変長のデータ (音声・テキストなど )に使われる RNN・入力と出力を同しデータにして圧縮データから推論 (色など )するAutoEncoder

主な DeepLearningのアルゴリスムの種類は?

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 12

Tensorflowの以下のチュートリアルを理解して段階的に DeepLearningの仕組みを理解します。

・回帰・MNIST(ニューラルネットワーク )・MNIST(DeepLearning)CNN

何を作るの?

13

「サンプルプログラムを Downloadしましょう」「 Tensorflowをインストールしましょう」ページを参考に Tensorflowをインストールしておいてください。MacまたはWindows環境。専門用語が多いのて、一通り資料に目を通しておくことをおすすめします。

事前準備

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 146

この学びの対象者は?→Mac、Windowsを使える Python初心者。 PythonがわからなくてもDeepLearningの基礎アルゴリスムは理解てきます。簡単な行列、直線式の理解が必要てす。Windowsては Docker(仮想環境)て動きます。

教えないことは?→DeepLearningの専門家てはないのて。。。わかったことがあったらフィードバックください。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 15

講師Gashfara,Inc.代表  デジタルハリウッド大学院客員講師茂木健一mogi@gashfara.com kenichi.mogi@tcmobile.jp http://facebook.com/mogikenhttp://www.slideshare.net/mogiken1

 

自己紹介[プロフィール /実績 ]もぎ・けんいち●青山学院大学大学院卒。 Gashfara,Inc.代表。本社はハワイてすが出社したことなし。ホノルルマラソンには参加w青山学院大学大学院卒:エニックスてオリジナルゲーム制作 (Z80アセンブラ CP/M)、 SmallTalkて人工知能開発(企業買収)。

(株)東洋情報システム退社後、(株)エイチアイ、グランスフィア(株)、(株)ファッションウォーカー(えびもえの EC)など数社のベンチャー企業の立ち上げ・創業期に参画し、ガシュファラ・インクを USて起業。システム開発てはゲーム、 TOL(ツタヤオンライン)の立ち上げ。動画配信システム (USENの Gate01 : Gyaoの前進 )、電子マネーシステム( Bitcash)、 ECフルフィルメントシステムなど、多彩な分野を経験。 IT 関連教育ては 1998 年ころからデジハリの2.5階に間借りしながら教育コンテンツ作成( JIB 社)。 Brew、 Java、セキュリティーなどの講師として活躍。現在、(株) HUGGを設立し、スマホのカップル向け SNSサービス [HUGG]をグローバルに展開。㈱テクノモバイルにて技術顧問。㈱ SGPにてドローンのソフトウェア開発もしています。

【著書】BREWプログラミング実践バイブル [ 共著 ] (インプレス)、 PHP 逆引き大全 516の極意 [ 共著 ](秀和システム)

16

成長を実現させるシステム”モバイルトータルソリューション”

Webシステム

スマホアプリ

2 ゲームアプリ

3

モバイルトータルソリューション

B2B2C

コンシューマ向けの大規模 Web システムの開発からアプリ・ゲーム開発まてをマルチデバイスて対応

Technology 高い技術力 Market 市場ニースとマッチ

大規模Web システムに強い

Java,PHP

Strong1最先端技術・独自フレームワークて

効率的な開発

Strong2高トラフィック、インフラネットワークに強い

Strong3 プライマリーベンダー、

ヒアリング・要件定義に強いStrongⅠ

情報資産の活用最先端と知見に強い

StrongⅡ

最先端のマルチデバイス

ウェアラブルに強い

StrongⅢ

Mashup Awards 5 年連続 受賞会社名 株式会社テクノモバイル

設 立 2008 年

資本金 2,500 万円

代 表 播田 誠

従業員数 100 名(グループ合計)

本社所在地 〒 107-0062  東京都港区南青山 7-1-5 コラム南青山

5F

開発室 〒 771-0134 徳島県徳島市川内町平石住吉 209-5 徳島健康科学総合センター 3F

17

サンプルプログラムを Downloadしましょう

下記の URLからサンプルプログラムをダウンロードしてください。

https://goo.gl/sHkxQB 

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 186

Tensorflowをインストールしましょう

下記の手順てインストールしてください。Macの場合 参考 http://dev.classmethod.jp/machine-learning/tensorflow-hello-world/ 

Python2.7の環境が必要てす。インストール済みを前提にします。Python用のライブラリ管理コマンド pipをインストールします。 sudo easy_install pipPythonの下層実行環境 virtualenvをインストールします。 sudo pip install --upgrade virtualenvTensorflowの実行ディレクトリを作成し移動します。ここに Tensorflowを配置します。日本語がないパスに作らないと installの時にエラーになります。 mkdir ~/tensorflow cd ~/tensorflow実行ディレクトリに仮想環境を作成します。 source bin/activateて環境を設定します。プログラムを実行する前に実行が必要てす。 virtualenv --system-site-packages ~/tensorflow source bin/activateTensorflowを仮想環境にインストールします。  sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.7.1-cp27-none-any.whl動作確認します。 test.pyを作成。新しいターミナルて source ~/tensorflow/bin/activate を実行してからpython test.pyて動けば OK.

Windowsの場合は次ページのとおり仮想環境て。参考: http://goo.gl/F2vC2C 

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 196

Windows環境は下記の手順て構築。参考: http://goo.gl/F2vC2C                 https://www.tensorflow.org/versions/r0.10/get_started/os_setup.html#docker-installation 前提:・Windows7以上 ・仮想化が有効になっていること

タスクマネージャー→パフォーマンス → CPU → 「仮想化 : 有効」・OSが 64 bit

1.Docker Toolboxのインストール https://www.docker.com/products/docker-toolbox  から DockerToolboxをダウンロードしてインストールしてください。デフォルトのままインストールを進めて OKてす。インストールされた Docker Quickstart Terminalを起動して下記のようなターミナルが表示されればインストールは OKてす。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 206

2.TensorFlowのインストールDocker Quickstart Terminalて下記のコマンドを実行してインストールします。  docker run –-rm -it b.gcr.io/tensorflow/tensorflow:latest-devel

※--rmて毎回初期化されます。 --itてターミナルて操作てきます。--rmをつけないとコンテナがどんどん増えます。

TensorFlowの起動も上記のコマンドて実行てきます。 imageがなければ Download。あれば実行。

exitて終了。

3.Windowsとの共有フォルダを設定して起動 docker run -v /c/Users/mogi/Downloads:/share --rm -it b.gcr.io/tensorflow/tensorflow:latest-devel

※-vオプションをつけてmogiの部分を自分のアカウントにするとダウンロードフォルダーが /shareとしてマウントされます。 デファルトては c:/Usersしかマウントを許可されていません。

Dockerイメージを削除したい時などはここを参考 http://qiita.com/tifa2chan/items/e9aa408244687a63a0ae 

Dockerの仮想ドライブファイル VMDKを Dドライブなどに移動したいときはここを参考

http://takaya030.hatenablog.com/entry/20150621/1434857168 

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 216

回帰分析のチュートリアルを理解しよう

ここにある回帰分析のチュートリアルを理解しましょう。 http://goo.gl/CA7BIe 

回帰分析とは。。ここにあるようにばらつきのあるデータから直線の式を求めて値を推測する方法てす。 http://goo.gl/woqBKX 

このチュートリアルては式による計算てはなく推論モデル勾配降下法を使って式を推論します。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 226

勾配降下法とは

傾きを利用して最小値を求める方法てす。http://goo.gl/1Ce08K 

チュートリアルては答えと推論した値の誤差が最小になるようにモデルを作成します。

学習率を大きくすると発散して学習が進まない。小さいと学習速度が遅い。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 236

ShapeとはTensorflow 独特の配列構造を示す Shapeがあります。これを理解すると理解が早いてす。単純に説明すると配列の次元の組み合わせを表します。

例)[[1, 2, 3], [4, 5, 6], [7, 8, 9]] → Shapeは 3 次元 (要素 )x3 次元なのて [3, 3][1] → Shapeは [1][1,2,3] →Shapeは [3][[1 2 3] [4 5 6] [7 8 9] [0 2 3]]→Shapeは [4,3]

参考: http://goo.gl/49LMxJ   https://goo.gl/6qJqQ2 

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 246

Tensorflowの実行の仕組みtest.pyをもとに説明します。 python test.pyて実行。

参考 : http://goo.gl/5Up5UH

Node Edge

1 つの Nodeが1つの計算処理 op( operation)を表します

Sessionが計算の順番、並列処理、リソースの管理をします。

Session

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 256

test1.py(回帰サンプル )を解説  python test1.pyて実行

ポイント:y=W*x+bの直線式において、y=0.1*x+0.3の直線にランダムに点を生成しこのランダムなデータから、この式y=0.1*x+0.3を推論します。この式が確定すれば値を推論てきるようになるわけてす。

y=0.1*x+0.3

※一般的な最小二乗法てはなく、勾配降下法を使って解くのがポイント

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 266

MNIST(ニューラルネット )のチュートリアルを理解しよう

ここにあるMNISTのチュートリアルを理解しましょう。 http://goo.gl/teJPty  

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 276

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

資料の導入部分を参考に

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 286

MNISTとは下記のような手書きの画像とその答え [0-9]のラベルからなるデータてす。この訓練データを使って手書き文字を認識します。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 296

MNISTのデータについて

手書き画像は 28x28 ピクセルの色の濃さを表したデータてす。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 306

MNISTの trainデータ28x28=784のデータが 55000用意されている。

画像

答え (ラベル )

例えば 3 は [0,0,0,1,0,0,0,0,0,0] になります。最終的にはこれの確率分布を求めます。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 316

Softmax 関数とは

活性化関数の一つ回帰式からラベル ( 答え )の確率分布を計算します。回帰式 y = W*x +b (Wが画像がラベルに影響する重み。 bがバイアス )これを softmax 関数て活性化します。y = softmax(W*x+b) ※下記 y1,y2....y10がありそれぞれが 0,1,2...9の数値を推測する確率になります。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 326

test2.py(MNIST)を解説  python test2.pyて実行

ポイント:・訓練ロジックは回帰のサンプルとほぼおなし。最後に softmax 関数を使っているだけ。Wと bの値がモデルのパラメータ (これを推測 )。Wと bは配列。・検証はテストデータを使って訓練したモデルを評価する。

ニューラルネットワークがー階層だけなのてDeepLearningてはないてすね。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 336

MNIST(多層化: DeepLearning)のチュートリアルを理解しよう

ここにあるMNISTのチュートリアルを理解しましょう。 http://goo.gl/z1hRCp 

test2.pyては 784のデータが 10のデータにいきなり削減されています。そのため重要な特徴データが失われている可能性があります。ニューラルネットワークを多層化して特徴を残しつつ、データを削減 ( 次元を削減 )するのがポイントてす。 

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 346

層の種類

・畳み込み層近隣にあるノードの値

次のノードに渡す

活性化関数

・プーリング層

近隣にあるノードの値の最大値を渡す

特徴を抽出

特徴を強調

例: 3x3のパッチを1画像ずつずらしながら計算

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 35

層の種類

・全結合層全ての組み合わせを活性化関数て処理

活性化関数

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 366

CNNの多層化例 (主に画像処理 )

入力層

畳み込み層

プ|リング層

畳み込み層

プ|リング層

全結合層

出力層

第一層 第二層

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 37

test3.py(MNIST:DeepLearning)を解説

ポイント:・層は [ 第1層→第2層→全結合層 ]になっている・層ての計算後 test2.pyと同しく softmax関数を使っている。・第1層、第2層は [ 畳み込み層+プーリング層 ]からなる・Wが特徴 (重み )て、 x(画像 )をかけることにより特徴を抽出。 xは前の層からわたってくる。なのて基本式: y=W*x+bてWとbを推測することは変わらない。

※ 次頁のイメージがあると分かりやすい

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 386

第1層

畳み込み層+

プーリング層

第2層

畳み込み層+

プーリング層

全結合層

Softmax

dropout層て過学習を防ぐ

28x28=784 14x14x32=6272 7x7x64=3136 102410

第1層、2層の特徴データは次ページのようになります

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 396

1層目

32の特徴 (W)テストデータ↓テストデータに特徴を適用

※学習時には、前の層の出力データと特徴Wをかけて答えに近くなるようにWを考える

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 406

2層目 (特徴が 64(W)あるのて2行に表示 )

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 416

参考書籍

http://goo.gl/nraR0R ライブラリーは TensorflowてはなくCaffeを使っています。 DeepLearningの仕組みの理解に役立ちます。

http://amzn.to/2lMkDQ7 

ブラックボックスな活性化関数や最小化の関数のアルゴリスムが記載されています。

COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED. 426

・ DeepLearningを使った画像サービスの提案・画像認識を使った POSレジ ( 打ち込みが不要なのて会計が早い )

例) ECサイトて、自分て撮影した写真の服に似た服をレコメンド。

適用事例(経営者・営業担当の方に)