dl-with-python01_handout

49
and , Python : 次回以降で取り上げる話題,データ,プロジェクト,質疑応答のために slack のチームを作成しました。今回参加されなかった方でも自由に参加 できます。チーム名は deeppython.slack.dom です。ご参加ください。

Upload: shin-asakawa

Post on 25-Jan-2017

540 views

Category:

Science


1 download

TRANSCRIPT

Page 1: dl-with-python01_handout

and 主催, 「Pythonで実践する深層学習」 出版記念企画

目次:

次回以降で取り上げる話題,データ,プロジェクト,質疑応答のために slack のチームを作成しました。今回参加されなかった方でも自由に参加できます。チーム名は deeppython.slack.dom です。ご参加ください。

Page 3: dl-with-python01_handout

## 謝辞

本勉強会を開催するにあたって尽力くださいました DGLab & ナビプラス株式会社 宮本隆志様, 梅染充男様, 宮島壮洋様 コロナ社営業部  秋浜直治様, に深く感謝いたします。

本書出版の労をとってくださったコロナ社編集部,金泰造様,柏原牧人様, この場を借りてお礼申し上げます。

本書,草稿に目を通してくださった亀田雅之様,岩井健二様,青木瑠璃様,ありが とうございました。

また,もくもく勉強会主催吉澤和香奈様,株式会社ロボ研山瀬翠星様のご協力に感 謝いたします。

最後に,岩船幸代さんのいつも変わらない援助に感謝いたします。

自己紹介 Who am i へ

Page 4: dl-with-python01_handout

自己紹介

浅川伸一

東京女子大学情報処理センター勤務。 早稲田大学在学時はピアジェの発生論 的認識論に心酔する。卒業後エルマンネットの考案者ジェフ・エルマンに師 事,薫陶を受ける。以来人間の高次認知

機能をシミュレートすることを通して知的で あるとはどういうことかを考えていると思っていた。

著書にディープラーニング, ビッグデータ,機械学習あるいはその心理学 (2015) 新曜社, With orWitout Categorization, in Andres Costa and Eugenio Villalba (Eds.), Horizons in NeuroscienceResearch (2014), 「脳損傷患者の症例から見た 読字過程」( 「認知心理学の新展開 言語と記憶」

(2012) 川崎恵理子編, ナカニシヤ出版), 「ニューラルネットワークの数理的基礎」「脳損傷とニ

ュー ラルネットワークモデル—神経心理学への適用例」 (いずれも守一雄他編 「コネ クショニストモデルと心理学」 (2001) 北大路書房)など

Page 5: dl-with-python01_handout

師匠ジェフ・エルマンと2002年ころUCSDのキャンパスにて

他己紹介 Who are you へ

Page 6: dl-with-python01_handout

他己紹介

前回

Page 7: dl-with-python01_handout

今回

Page 8: dl-with-python01_handout

前回

Page 9: dl-with-python01_handout

今回

Page 10: dl-with-python01_handout

前回

Page 11: dl-with-python01_handout

今回

前回

Page 12: dl-with-python01_handout

今回

前回

Page 13: dl-with-python01_handout

今回

取り上げて欲しい話題があればお書きください

顔認識、似た顔の写真を検出

開発環境について(windows, linuxそれぞれやGPUを使用する場合など)codeの解説学術的な内容と、一般企業や一般社会人による実務的な例、の両方に触れたいです。

1980年代の流行から後の流れを概説していただければ幸いです。

まずは、プログラミング環境構築と困った時のAPIマニュアルの見方DeepLearningを用いた具体的なプロダクトの開発方法、DeepLearningを活用する際の学習方法、TensorFlow等で出来ること・使い方

MNIST以外のチュートリアル

Webサービスとの応用

Page 14: dl-with-python01_handout

文字認識

今回追加分 - 主観で構わないので、深層学習に対する展望など - DeepLearningを用いた文書分類 -ディープラーニングの初学者です。理論に関する文献は多く目にするのですが、入門的な実装に関

する文献や記事を見つけることが難しいです。オススメの本やサイトがあれば教えていただきたい

です。 - ビッグデータの解析手法

このイベントに期待すること,あるいはリクエスト,ご質問などご自由にお書きください

根幹の数学的なところも含めて理解できるような内容を期待します

当イベント参加者が、この書籍の内容を自ら生かして実践した例を発表する場を設けるな

ど、参加型後続イベントを継続していただけたら、素晴らしいと思います。また、自身もつい

か発表できるよう、勉強とその応用を継続できたら、思います。

心理学・生物学・医学から見たニューラルネットの意義

あるテーマが機械学習の応用に向いているか否かを見分ける時の目の付け所があれば。

後で持ち帰って テキストの内容が できるように、プログラミング環境構築と 数式とプログラミングの対応関係を教えてほしい。

強化学習(テキスト読み取り)について学習ができる基礎を学びたいと思っております。よろ

しくお願いします。

DeepLearningをこれから学ぶものとして、DeepLearningの全体像から具体的なプロダクトへの活用事例、学ぶべきこと等知れると嬉しいです。

自分でも、NNが設計できるようになりたい。

実装法も詳しく聞きたいです

Page 15: dl-with-python01_handout

今回追加分 - 前提知識が不足しています。今回の受講をとっかかりとして知識を深めていきたいで

す。 - 学習させるデータの収集の仕方前処理の仕方のコツについて - 楽しみにしているので、よろ

しくお願いします。 - よろしくお願いいたします。 - 深層学習どころか機械学習について勉強を始めたばかりで、どこから手をつけたら良いかまだまだわかっていないため、今回からの勉強会を通

じて、深層学習がどういった場面に応用ができるかといった視野が広がることを期待している。 -全ての講義に参加したのち、概念と数式の理解、及び簡単なコードをスクラッチで書けるようにな

っている

イントロダクションへ

Page 16: dl-with-python01_handout

Jim Gray 第4 のパラダイムより.

National AcademiesComputer Science and Telecommunications Boardppt file

Page 17: dl-with-python01_handout

Bottou のスライドNIPS2007より

次へ(本勉強会の予定)

Page 18: dl-with-python01_handout

plan

予定

第一回(今回):ニューラルネットワークの基礎,現状

第二回:畳み込みニューラルネットワーク,リカレントニューラルネットワークの基礎と実装

第三回:深層学習の発展的話題

第四回:強化学習と深層学習,まとめ

次へ(準備)

Page 19: dl-with-python01_handout

準備

前提

オペレーティングシステムは

1. Linux (Ubuntu 14.04, 16.04 推奨)2. Mac OSX (El capitan 推奨)3. Windows (7, 8, or 10). You might be able to do with Windows XP as well in principle, but I do

not recommend do this.

を仮定させていただきます。それ以外での 動作は考えない ことにします。加えて TensorFlow は公式には Windows をサポートしていません。 従いまして Windows をお使いの場合には使用制限があるとお考えください。 Windows 環境で TensorFlow をお使いになる場合には,なんらかの仮想環

境を必要とします。

準備

以下のインストールを済ませてください。最低でもpythonがインストールされている必要がありま

す。OSによってはPythonがプレインストールされていますが,多くのチュートリアルでは OSに付

Page 20: dl-with-python01_handout

属しているpythonを使っていません。本勉強会でも,このような慣例に則り Python をインストー

ルすることをお勧めいたします。anaconda は 3 つのOSで共通するので ,第一選択肢としてanaconda をお考えください。 ご自身でインストールすることが難しい場合には

[email protected] までお問い合わせください。 質問はいつでも歓迎いたします。

1. Homebrew, Xcode (Mac only)2. Python (either 2.7 or 3.5)3. anaconda4. pip, setuptools5. six6. jupyter (ipython-notebook), SciPy, NumPy, Matplotlib, scikit-learn, pandas, python-mnist7. Chainer, Theano, TensorFlow (optional), Caffe (optionnal)8. nltk (opitonal), gensim(optional)

最終的にインストールできていて欲しいもの

pip install Theano

pip install chainer

pip install scikit-learn

上記3つが必要になります。インストールでトラブルがあれば [email protected] までお問い合わせください。

環境の把握

Page 21: dl-with-python01_handout

ご自身の環境を把握なさってください。 記述してあるとおりに実行しても動作しない場合,実行環

境の相違に起因することが多いです。 stackoverflowに書いてあった, Reddit や Qiitaに書いてあったのに動かない, と言われても困ります。これらの記事が未来永劫に渡って絶えず正しいことを保

証するわけではありません。 その記事が書かれた環境下で,その当時,そこに書かれている手順を

実行した結果が記載されているにすぎません。現在ご自身の環境でそのまま当てはまると考えるの

は早計です。まずはご自身の環境と書かれている内容との相違を認識してください。

テキストエディタ

手に馴染んだテキストエディタも必要です。開発効率に影響しますのでメモ帳では厳しいです。

動作環境のチェック

from __future__ import print_function

import six

import sklearn

import theano

import chainer

import tensorflow

�����('sklearn', sklearn�__version__)�����('theano', theano�__version__)�����('chainer', chainer�__version__)�����('tensorflow', tensorflow�__version__)

Page 22: dl-with-python01_handout

でどのような結果が得られるでしょうか? ちなみに演者の環境では bash sklearn 0.17.1 theano 0.8.2chainer 1.14.0 tensorflow 0.10.0rc0 でした。

次へ(深層学習とは何か)

Page 23: dl-with-python01_handout

Canonical deep neural networks

深層ニューラルネットワークとは何か

2層以上の中間層を持つニューラルネットワークを深層ニューラルネットワーク と呼びます。

活性化関数 activation function にはロジスティック関数 logistic function が 使われてきました 

英語で S 字曲線の意味を持つシグモイド関数 sigmoid function という 言葉も用いられます。次のハ

イパータンジェントもシグモイド関数 です。

= σ ( x + )h1 W1 b1

= σ ( + )h2 W1h1 b2

P = softmax ( + )Wo bo

σ(x) =1

1 + e+x

ϕ(x) = tanh(x) = 2σ(2x) + 1.

Page 24: dl-with-python01_handout

近年ではより簡単な非線形関数を用いる傾向が あります。 ReLU など。

出力層における誤差,あるいは損失を参照にするような学習が行われます。 例えば損失としてクロスエントロピー cross entropy を用いることに すれば

あるいは次のように表記します。

回帰ではなくクラス分類の場合にはクロスエントロピー損失を用いることが 多いです。理由は [ニールセンのブログ]((http://neuralnetworksanddeeplearning.com/chap3.html) にも詳細に記述されています。 和訳 またングのビデオ講義ロジステック回帰の説明に詳しいです。

主要パッケージでの関数

TensorFlow Python tf.nn.sigmoid_cross_entropy_with_logits(logits, targets, name=None)Chainer Python chainer.functions.softmax_cross_entropy(x, t, use_cudnn=True, normalize=True,

cache_score=True)

Theano Python theano.tensor.nnet.nnet.categorical_crossentropy(coding_dist, true_dist)

再帰型ニューラルネットワーク RNN: recurrent neural

ReLU = max(0, x)

l(t, y) = log(y)tT

l(t, y) = + [ log( ) + (1 + ) log(1 + )]∑i=1

m

ti yi ti yi

Page 25: dl-with-python01_handout

再帰型ニューラルネットワーク RNN: recurrent neuralnetworks再帰型ニューラルネットワークとは,系列処理に用いられます。 時刻 $t$ と再帰結合(時間遅れの

結合)を導入して

となります。

近年では機械翻訳,対話,文章生成,画像の説明文生成など 多くの応用分野を持ちます。 ほとんどが 長 短期記憶 LSTM: long short-term memory と呼ばれる モデルを用いてます。

(t) = σ ( x(t) + (t + 1) + )h1 W1 h1 b1

(t) = σ ( (t) + (t + 1) + x )h2 W1h2 h2 b2

P(t) = softmax ( (t) + )Wo bo

Page 27: dl-with-python01_handout

End to End

End to End のトレンド

古典的パタン認識モデル (1950年代後半以来)

固定的/工学特徴 (or 固定カーネル) + 学習可能分類器

End-to-end 学習 / 特徴学習 / 深層学習

学習可能な特徴 (or カーネル) + 学習可能な分類器

簡易学習可能分類器

手工芸的

特徴抽出器

学習可能分類器

学習可能

特徴抽出器

Page 28: dl-with-python01_handout

音声認識199年代から2010年くらいまで

物体認識2006年から2012年

固定 教師なし学習 教師あり学習

分類器MFCC 混合ガウシアン

モデル

分類器SIFTHOG

k-平均 疎性コーディング

プーリング

固定 教師なし学習 教師あり学習

低次特徴抽出 中間レベル特徴抽出

メル周波数ケプトグラム係数

音声情報

視覚情報

次へ(簡単な歴史)

Page 29: dl-with-python01_handout

brief history

先達の努力の歴史

電気生理学的研究

Page 30: dl-with-python01_handout

マーの視覚の計算論

Page 31: dl-with-python01_handout

携帯電話のカメラのピンぼけが少なくなった理由

Page 32: dl-with-python01_handout

ついに人間超え

Page 33: dl-with-python01_handout

ニューラルネットワークの始まりは古く

Page 34: dl-with-python01_handout

https://upload.wikimedia.org/wikipedia/commons/3/30/Chemical_synapse_schema_cropped.jpg

マッカロックとピッツは数式として表現

Page 35: dl-with-python01_handout

マッカロックとピッツの形式ニューロンは以下のように表現される:

����� ������(object): ��� �������(inputs): cell � np�sum(inputs � self�W) � self�b y � 1.0 � (1.0 � np�exp(�cell)) ������ y

文学的表現をすると,各ニューロンは numpy を使ってシグモイド関数によって入力情報を変換する。 伝統的にロジスティック関数が使われてきた  。 近年ではより簡単な非線形関数を用いる。ReLU など。

= f ( )yi *j wjxj

σ(x) = 1/(1 + )e+x

ReLU = max(0, x)

Page 36: dl-with-python01_handout

-1.0

0.0

1.0

2.0

3.0

4.0

-1.0 0.0 1.0 2.0 3.0 4.0

outp

ut v

alue

input state

tanh

linear

softplus

sigmoid

ReLU

小テスト

ちなみに Theano の scan を使うとするとプロトタイプは以下のようになります。

outputs, updates � theano�scan( fn�a_function,

Page 37: dl-with-python01_handout

sequnces�loop_over, n_steps�number_to_iteration, outputs_info�[init_value], non_sequnces�not_varied,)

��� ����������(some_args): ������ something(some_args)

系列 loop_over をステップ number_to_iteration に渡って a_function を評価する,という意味合い

になります。 出力 outputs は全出力を連結した配列が返ります。 他のコンピュータ言語で用いられ

る繰り返し表現の抽象化とみなすことができます。 updates は変動分ですが _ として無視することも行われます。

Page 38: dl-with-python01_handout

福島先生(1982)のネオコグニトロン

Page 39: dl-with-python01_handout

LeNet5(1998)

Page 40: dl-with-python01_handout

Hinton NIPS2007 チュートリアルより

Page 41: dl-with-python01_handout

Hinton NIPS2007 チュートリアルより

Page 42: dl-with-python01_handout

Hinton NIPS2007 チュートリアルより

Page 43: dl-with-python01_handout

Hinton NIPS2007 チュートリアルより

Page 44: dl-with-python01_handout

Hinton NIPS2007 チュートリアルより

Page 45: dl-with-python01_handout

Hinton NIPS2007 チュートリアルより

Page 46: dl-with-python01_handout

Hinton (2006)

Page 47: dl-with-python01_handout

fastest way

最速で理解するには

最低限を寄り道せずに最速で理解しようとすれば以下の話題を抑える必要が あるでしょう

1. 線形回帰 linear regression2. 多項回帰 polynomial regression3. ロジステック回帰 logistic regression4. 正則化5. 多層パーセプトロン MLP: multi-layered Perceptrons6. 畳み込みニューラルネットワーク CNN: conventional neural networks7. リカレントニューラルネットワーク RNN: recurrent neural networks8. 強化学習  reinforcement learning

5 以下は本書でも取り上げました

次へ(参考サイト)

Page 48: dl-with-python01_handout

useful links

参考サイト

マイケル ニールセンのチュートリアル

マイケル ニールセンのチュートリアルの和訳プロジェクト

Theanoのチュートリアル

アンドリュー  ング(Andrew Ng)による  coursera ビデオ講義

フォローアップアンケート

Page 49: dl-with-python01_handout

follow up

フォローアップアンケート

次 回 以 降 の 参 考 に し ま す の で ア ン ケ ー ト に ご 協 力 く だ さ い 。

https://goo.gl/forms/cijNs5Ms2mwcVF6E3

はじめにもどる