【勉強ログ】PythonとKerasのディープラーニング【Part1, 2, 3-1,2】

画像

Numpy

Numpyは科学技術計算用のパッケージ。
dtypeで表されるテンソルを、同じ数・固定された次元で表す。

軸と形状(次元)は違う。
軸は何次元に向かっているか、そして次元は各軸に何要素あるか?
というものである。
(本だと軸と次元が結構曖昧に書かれている。)
軸は方軸、そして次元は各軸の要素と覚えよう。

ブロードキャスト

Numpyだと、異なる形があったとき、自動補完する機能がついている。
これはまず、軸の数が違ったら先頭に1を追加していく。
そして、その後で次元が違ったら、一番大きい次元に1だったら自動で倍数をする。

ニューラルネットワークのKeras実装

Kerasでは、層を重ねてモデルを作る。
この層は関数であり、入力に対して重み(層)をかけて出力を出す。
よって、層は関数と見て良い。

二値分類

二値分類では、何かしらの入力データをTrue/Falseに分類する。

Keras構築

Kerasでは、層を重ねてモデルを作る。
層は基本的にはDenseを使う。
Denseは全結合層であり、これの出力を大きくするほどより表現力がます。

このDenseを重ねれば重ねるほど多く学習できるが、過学習する可能性が非常に高い。

損失関数

二値分類では、binary_crossentropyを使う。
Crossentropyは、出力の正規分布と正解の正規分布の距離の差を最小化する。

精度

Kerasではモデルの学習で、精度関数を与えて途中経過の精度を図ることができる。
これは学習データから取り出した検証データで図る。
検証データはテストデータとは違うので注意。

流れ

  1. データを用意して、学習データ・テストデータを作る。
    1. 場合によっては、One-hotや前処理をする
  2. 学習データから一部データを切り出して、検証データを作る
    1. 検証データを利用して、モデルの学習をしながら、精度を図ってあとから見直す
  3. モデルの層を作る
  4. モデルをコンパイルする。
    1. Optimizerを設定する(どのように重みを変えるか)
    2. 評価関数を設定する
    3. 損失関数を設定する
  5. モデルを実行する(fit)
  6. その後、グラフを作ってどういう結果になるかを見直す
  7. その後、もっかいそれを踏まえてモデルを作って、Evaluateで精度の評価をする
  8. 最後に、予測predictをして、ディープラーニングの目的達成

多クラス分類

損失関数

多クラス分類では、分類カテゴリだけ出力層を用意する。
そして、Denseにsoftmax関数を活性化関数として利用し、確率とする。
そして、cross_entropyで確率を求めて誤差を減らす。

感想

ここらへんはゼロから学ぶと同じ。
練習しながら勉強していきたいなぁ・・・
アニメ系でなにか作りたい
動物系もやりたいなぁ