ksnt / book-reading

0 stars 0 forks source link

現場で使える!Python深層学習入門 #35

Closed ksnt closed 4 years ago

ksnt commented 4 years ago

11章「単純パーセプトロン」、12章「ディープラーニング入門」、13章「転移学習とNyanCheckの開発」の部分のみを読む。

ksnt commented 4 years ago

以前ザッとは読んだので、今回は復習がてら読む。

ksnt commented 4 years ago

11.2 単純パーセプトロンの実習

https://github.com/ksnt/python_shinso_gakushu_nyumon/blob/master/11.%E5%8D%98%E7%B4%94%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3%E3%81%AE%E5%AE%9F%E8%A3%85.ipynb

ksnt commented 4 years ago

11.1 単純パーセプトロンの概要

ちゃんと読んだ。再急降下法を用いてどのようにNNの重みが変わっていき出力が教師データに近づいていくのかをちゃんと手で計算した。

ksnt commented 4 years ago

残りは

12章「ディープラーニング入門」 13章「転移学習とNyanCheckの開発」

ちゃんと読む予定。

ksnt commented 4 years ago

12.1 ディープラーニングの概要

・隠れ層を持つパーセプトロンのころを多層パーセプトロンとよぶ ・隠れ層が複数あるNNのことをディープニューラルネットという ・多層パーセプトロンを学習するにはバックプロパゲーションを用いる ・バックプロパゲーションは最急降下法をチェインルールによって行う方法 ・実際に手を動かして計算したわけではない

ksnt commented 4 years ago

12.2 CrossEntropy

・クロスエントロピーは損失(Loss)の一種 ・連続的な数値を出力したい場合はLossにはMSEを使うが、離散的な値を扱うときには一般にCrossEntropyを用いる ・詳細はこの本では割愛 ・クロスエントロピーとKLダイバージェンスの大小関係は一致 ・最尤推定を行っていることに相当

12.2 softmax

・softmaxはNNの出力を確率に変換する ・つまり、各出力は0から1となり、出力の総和が1になるようにする ・単純にMaxを取るものとの違いは、softmaxが微分可能なこと ・これは、バックプロパゲーションを計算するためには必要な条件

12.4 SGD

・SGDは最適化手法の一種で、確率的勾配降下法のこと ・これは、最急降下法を逐次学習するように改良したもの

12.5 勾配消失問題

・DLを行うときに避けては通れないのが勾配消失問題 ・理論的にはバックプロパゲーションでどんな深さのNNも学習することが出来るが、実際には勾配消失問題があったのでDLが最近まで発展することはなかった ・シグモイド関数の傾きは最大でも0.25であるためバックプロパゲーションのチェインルールを考えたときに、n層あるNNでは微分値は0.25のn乗となる ・これはとても小さな値である ・これを回避するために、活性化関数にシグモイド関数を使う代わりにLeRUが使われることが多くなっている

ksnt commented 4 years ago

12.9 畳み込みニューラルネットワークの概要

12.9.1 ディープラーニングで用いられるレイヤの種類

・DLで用いられるレイヤにも大きく分けて3つある。

  1. 密結合 ・これまで解説してきたもので、下層の全てのユニットと上層の全てのユニットとの接続がある層 ・Fully Connected Layer, あるいはDesnly Connected Layerともよばれる ・ここまで何度か登場したDenseというのがこれ

  2. 畳み込み層 ・下層レイヤーの一部の領域に反応する層 ・Convolution Layer ・本章で解説

  3. 再帰層 ・上層の出力が再帰的に下層に戻る層 ・Recurrent Layer ・本書では扱わない

12.9.2 畳み込みニューラルネットワークとは

・2012年にDLによってImage Netの認識誤差が大きく改善 ・このときに使われたのでが畳み込みニューラルネットワーク

12.9.3 畳み込みニューラルネットワークの計算方法

・畳込みNNは、下層の一部の領域に反応するNN ・畳込み層は下層の一部の領域にフィルタを掛ける畳み込み演算を行う

・畳込みNNでは、マックスプーリングという処理が行われる ・マックスプーリングでは、下層の一部の領域の最大値を出力するようなレイヤになっている ・マックスプーリングは特徴抽出や特徴選択を行っていると考えられている

・マックスプーリングと似たものに、アベレージプーリングというものがある ・アベレージプーリングは下層の一部のレイヤの領域の平均値を出力する

12.10 バッチ正則化

12.10.1 バッチ正則化とは

・バッチ正則化とは、DLの学習を安定化させる手法で、英語だとBatch Normalizationと書く。 ・これは、内部共変量シフトという状態を解消することを目的とする

●共変量シフト ・共変量シフトとは、学習したデータと予測に用いるデータの分布に偏りがあることをいう ・共変量シフトがあると、機械学習システムではうまく予測できない ・これを解消するために通常白色化が用いられる ・白色化では入力データを平均0、分散1に変換する

●内部共変量シフト ・内部共変量シフトとは、ディープラーニングの層と層の間に起こる共変量シフトのこと ・学習しているうちに、下層の出力が、それまで学習していた上層の入力とずれることで起こる

・このようなことが起こると、ズレをそろえるような学習に時間が使われ、学習が非常に遅くなる ・そこで、ずれを人為的にそろえてしまう方法がバッチ正則化 ・バッチ正則化によって学習が早くなる

ksnt commented 4 years ago

残りは

12.11「Global Average Pooling」 12.12 「Keras」 13章「転移学習とNyanCheckの開発」

ちゃんと読む。

ksnt commented 4 years ago

12.6 「ディープラーニングを利用した学習」 12.7 「密結合ニューラルネットワークによる分類」 12.8 「密結合ニューラルネットワークによる分類(CIFAR10)」

https://github.com/ksnt/python_shinso_gakushu_nyumon/blob/master/12.%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80.ipynb

ksnt commented 4 years ago

13章「転移学習とNyanCheckの開発」

・読んだ。 ・Flickrからデータをスクレイピングするところで1時間くらいかかった。Colaboratory上で行った。 ・DLを用いて転移学習によってモデルを作成した ・学習には12時間くらいかかるとのことで一旦保留としたが、Colaboratory上でやる方法は理解した ・アプリケーションをGCPにデプロイした └Google Compute Engineを使った └ハマるとしたら、ファイアウォールルールの作成を忘れるとかそういうところかな、と思ったり └SSHでサーバに接続するとコンソールが現れるが、Fxだとうまく見れなかった └GCPはFxでやるのは止めたほうがよさそう。Chromeなら問題なし。 └ある程度GCPを使い慣れてきたので他は問題なかった

ksnt commented 4 years ago

残りは

12.11「Global Average Pooling」 12.12 「Keras」

をちゃんと読む。

ksnt commented 4 years ago

12.11 Global Average Pooling

読んだ。

https://github.com/ksnt/python_shinso_gakushu_nyumon/blob/master/12.%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80.ipynb

12.12 Keras

読んだ。

https://github.com/ksnt/python_shinso_gakushu_nyumon/blob/master/12.%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80.ipynb

ksnt commented 4 years ago

ということで、読了。

おもしろかった、で終わらせずに自分のプロジェクトで使ってみることを目標とする。