ゼロから作るDeep Learning学習備忘録(1〜4章)
ゼロから作るDeep Learningの学習備忘録です。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
目的
・最低限の外部ライブラリだけ利用し、Pythonを使って、ゼロからディープラーニングによるプログラムを実装する。
・簡単な機械学習の問題からスタートし、最終的には画像を高精度に認識するシステムを実装する。
1章 Python入門
・Python: 汎用のプログラミング言語。コードがシンプルで扱いやすい。
・Anaconda: データ分析などに必要なライブラリを一括してインストールできる。
・NumPy: 数値計算のためのライブラリ。
・Matplotlib: グラフ描写のためのライブラリ。
2章 パーセプトロン
・パーセプトロン: ニューラルネットワークの起源。入出力を備えたアルゴリズム。
複数の信号を入力として受け取り、ひとつの信号を出力する。
重みとバイアスをパラメータとして設定する。
・単層パーセプトロン→AND, NAND, OR, 線形領域
・多層パーセプトロン→XOR, 非線形領域
・多層のパーセプトロンは理論上コンピュータを実装可能。
3章 ニューラルネットワーク
・ニューラルネットワーク: パーセプトロンの重みをデータから自動で学習できる。
入力層、中間層(隠れ層)、出力層からなる。
入力層で重み付けされた入力値に対して、
中間層で重みとバイアス値を利用して多次元配列の行列計算を行い、
活性化関数のいずれかを利用してさらに加工して結果を出力する。
・活性化関数: 入力信号の総和がどのように発火するかを決定する。
・シグモイド関数: 入力値が大きいほど1に近づき、小さいほど0に近づく。
・ステップ関数: 入力値が0以下のとき0、0より大きいとき1を出力。
・ReLU関数: 入力値が0以下のとき0、0より大きいとき入力値をそのまま出力。
・機械学習の分類
・分類問題: データがどのクラスに属するか。例)人の画像から性別を判断
出力層はソフトマックス関数(1つの出力層に全ての入力が結びつく)。
・回帰問題: データから数値の予測。例)人の画像から体重を判断
出力層は恒等関数(入力をそのまま出力する)。
・MNIST: 手書き数字の画像セット。機械学習の分野で最も有名なデータセットの1つ。
・バッチ処理: 入力データをまとめることで計算を高速化。
4章 ニューラルネットワークの学習
・データから学習する
・訓練データ: 学習を行い、最適なパラメータを探索する。
・テストデータ: 訓練したモデルの実力を評価する。
・損失関数: ニューラルネットワークの学習で用いられる指標。
損失関数を指標として、値が小さくなるように重みパラメータを更新する。
2乗和誤差、交差エントロピー誤差などがある。
・学習の流れ
⑴ミニバッチ学習
膨大な量のデータに対して損失関数を計算するのは現実的ではないので、
一部データを無作為で抽出し、近似として利用する。
選ばれたデータをミニバッチという。
⑵勾配の算出
ミニバッチの損失関数を減らすために、各重みパラメータの勾配を求める。
勾配は、損失関数の値を最も減らす方向を示す。
⑶パラメータの更新
重みパラメータを勾配方向に微小量だけ更新する。
⑴〜⑶を繰り返す。
・数値微分による計算は時間がかかるが簡単。
5章の誤差逆伝播法は複雑だが高速に勾配を求めることができる。
続きはこちら
okkah.hateblo.jp