dl-with-python01_handout
TRANSCRIPT
and 主催, 「Pythonで実践する深層学習」 出版記念企画
目次:
次回以降で取り上げる話題,データ,プロジェクト,質疑応答のために slack のチームを作成しました。今回参加されなかった方でも自由に参加できます。チーム名は deeppython.slack.dom です。ご参加ください。
謝辞
自己紹介 Who am i他己紹介 Who are youイントロダクション
本勉強会の予定
準備
深層学習とは何か
エンドツーエンド
簡単な歴史
本書を最速で理解するには
参考サイト
フォローアップアンケート
Aymeric Damien さん@AymericDamien のTensorFlowチュートリアル
GitHub repository
次へ(謝辞)
## 謝辞
本勉強会を開催するにあたって尽力くださいました DGLab & ナビプラス株式会社 宮本隆志様, 梅染充男様, 宮島壮洋様 コロナ社営業部 秋浜直治様, に深く感謝いたします。
本書出版の労をとってくださったコロナ社編集部,金泰造様,柏原牧人様, この場を借りてお礼申し上げます。
本書,草稿に目を通してくださった亀田雅之様,岩井健二様,青木瑠璃様,ありが とうございました。
また,もくもく勉強会主催吉澤和香奈様,株式会社ロボ研山瀬翠星様のご協力に感 謝いたします。
最後に,岩船幸代さんのいつも変わらない援助に感謝いたします。
自己紹介 Who am i へ
自己紹介
浅川伸一
東京女子大学情報処理センター勤務。 早稲田大学在学時はピアジェの発生論 的認識論に心酔する。卒業後エルマンネットの考案者ジェフ・エルマンに師 事,薫陶を受ける。以来人間の高次認知
機能をシミュレートすることを通して知的で あるとはどういうことかを考えていると思っていた。
著書にディープラーニング, ビッグデータ,機械学習あるいはその心理学 (2015) 新曜社, With orWitout Categorization, in Andres Costa and Eugenio Villalba (Eds.), Horizons in NeuroscienceResearch (2014), 「脳損傷患者の症例から見た 読字過程」( 「認知心理学の新展開 言語と記憶」
(2012) 川崎恵理子編, ナカニシヤ出版), 「ニューラルネットワークの数理的基礎」「脳損傷とニ
ュー ラルネットワークモデル—神経心理学への適用例」 (いずれも守一雄他編 「コネ クショニストモデルと心理学」 (2001) 北大路書房)など
師匠ジェフ・エルマンと2002年ころUCSDのキャンパスにて
他己紹介 Who are you へ
他己紹介
前回
今回
前回
今回
前回
今回
前回
今回
前回
今回
取り上げて欲しい話題があればお書きください
顔認識、似た顔の写真を検出
開発環境について(windows, linuxそれぞれやGPUを使用する場合など)codeの解説学術的な内容と、一般企業や一般社会人による実務的な例、の両方に触れたいです。
1980年代の流行から後の流れを概説していただければ幸いです。
まずは、プログラミング環境構築と困った時のAPIマニュアルの見方DeepLearningを用いた具体的なプロダクトの開発方法、DeepLearningを活用する際の学習方法、TensorFlow等で出来ること・使い方
MNIST以外のチュートリアル
Webサービスとの応用
文字認識
今回追加分 - 主観で構わないので、深層学習に対する展望など - DeepLearningを用いた文書分類 -ディープラーニングの初学者です。理論に関する文献は多く目にするのですが、入門的な実装に関
する文献や記事を見つけることが難しいです。オススメの本やサイトがあれば教えていただきたい
です。 - ビッグデータの解析手法
このイベントに期待すること,あるいはリクエスト,ご質問などご自由にお書きください
根幹の数学的なところも含めて理解できるような内容を期待します
当イベント参加者が、この書籍の内容を自ら生かして実践した例を発表する場を設けるな
ど、参加型後続イベントを継続していただけたら、素晴らしいと思います。また、自身もつい
か発表できるよう、勉強とその応用を継続できたら、思います。
心理学・生物学・医学から見たニューラルネットの意義
あるテーマが機械学習の応用に向いているか否かを見分ける時の目の付け所があれば。
後で持ち帰って テキストの内容が できるように、プログラミング環境構築と 数式とプログラミングの対応関係を教えてほしい。
強化学習(テキスト読み取り)について学習ができる基礎を学びたいと思っております。よろ
しくお願いします。
DeepLearningをこれから学ぶものとして、DeepLearningの全体像から具体的なプロダクトへの活用事例、学ぶべきこと等知れると嬉しいです。
自分でも、NNが設計できるようになりたい。
実装法も詳しく聞きたいです
今回追加分 - 前提知識が不足しています。今回の受講をとっかかりとして知識を深めていきたいで
す。 - 学習させるデータの収集の仕方前処理の仕方のコツについて - 楽しみにしているので、よろ
しくお願いします。 - よろしくお願いいたします。 - 深層学習どころか機械学習について勉強を始めたばかりで、どこから手をつけたら良いかまだまだわかっていないため、今回からの勉強会を通
じて、深層学習がどういった場面に応用ができるかといった視野が広がることを期待している。 -全ての講義に参加したのち、概念と数式の理解、及び簡単なコードをスクラッチで書けるようにな
っている
イントロダクションへ
Jim Gray 第4 のパラダイムより.
National AcademiesComputer Science and Telecommunications Boardppt file
Bottou のスライドNIPS2007より
次へ(本勉強会の予定)
plan
予定
第一回(今回):ニューラルネットワークの基礎,現状
第二回:畳み込みニューラルネットワーク,リカレントニューラルネットワークの基礎と実装
第三回:深層学習の発展的話題
第四回:強化学習と深層学習,まとめ
次へ(準備)
準備
前提
オペレーティングシステムは
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に付
属している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] までお問い合わせください。
環境の把握
ご自身の環境を把握なさってください。 記述してあるとおりに実行しても動作しない場合,実行環
境の相違に起因することが多いです。 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__)
でどのような結果が得られるでしょうか? ちなみに演者の環境では bash sklearn 0.17.1 theano 0.8.2chainer 1.14.0 tensorflow 0.10.0rc0 でした。
次へ(深層学習とは何か)
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.
近年ではより簡単な非線形関数を用いる傾向が あります。 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
再帰型ニューラルネットワーク 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
End to End
End to End のトレンド
古典的パタン認識モデル (1950年代後半以来)
固定的/工学特徴 (or 固定カーネル) + 学習可能分類器
End-to-end 学習 / 特徴学習 / 深層学習
学習可能な特徴 (or カーネル) + 学習可能な分類器
簡易学習可能分類器
手工芸的
特徴抽出器
学習可能分類器
学習可能
特徴抽出器
音声認識199年代から2010年くらいまで
物体認識2006年から2012年
固定 教師なし学習 教師あり学習
分類器MFCC 混合ガウシアン
モデル
分類器SIFTHOG
k-平均 疎性コーディング
プーリング
固定 教師なし学習 教師あり学習
低次特徴抽出 中間レベル特徴抽出
メル周波数ケプトグラム係数
音声情報
視覚情報
次へ(簡単な歴史)
brief history
先達の努力の歴史
電気生理学的研究
マーの視覚の計算論
携帯電話のカメラのピンぼけが少なくなった理由
ついに人間超え
ニューラルネットワークの始まりは古く
https://upload.wikimedia.org/wikipedia/commons/3/30/Chemical_synapse_schema_cropped.jpg
マッカロックとピッツは数式として表現
マッカロックとピッツの形式ニューロンは以下のように表現される:
����� ������(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)
-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,
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 は変動分ですが _ として無視することも行われます。
福島先生(1982)のネオコグニトロン
LeNet5(1998)
Hinton NIPS2007 チュートリアルより
Hinton NIPS2007 チュートリアルより
Hinton NIPS2007 チュートリアルより
Hinton NIPS2007 チュートリアルより
Hinton NIPS2007 チュートリアルより
Hinton NIPS2007 チュートリアルより
Hinton (2006)
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 以下は本書でも取り上げました
次へ(参考サイト)
useful links
参考サイト
マイケル ニールセンのチュートリアル
マイケル ニールセンのチュートリアルの和訳プロジェクト
Theanoのチュートリアル
アンドリュー ング(Andrew Ng)による coursera ビデオ講義
フォローアップアンケート
follow up
フォローアップアンケート
次 回 以 降 の 参 考 に し ま す の で ア ン ケ ー ト に ご 協 力 く だ さ い 。
https://goo.gl/forms/cijNs5Ms2mwcVF6E3
はじめにもどる