.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

学習フェーズでは、信号は逆方向に伝播する。

学習はデータ駆動

機械学習

特徴量

特徴量選択

入力画像データから、本質的なデータを抽出できるように設計された変換器を指す。

機械学習

ベクトル化された画像データを機械学習のSVMやKNNなどの識別器で学習させる。

深層学習(deep learning)

深層学習(deep learning)においては、特徴量についても機会が学習する。

損失関数

2乗和誤差

ニューラルネットワークの出力と正解となる教師データの各要素の差の二乗の総和の2分の一。

交差エントロピー誤差

ミニバッチ学習

勾配法

勾配法では、(パラメタの微分を計算して得た)勾配の情報を使って進む方向を決める。

微分

ある瞬間の変化の量(=グラフの接線の傾き的な)。

df(x)  yの増量        f(x+h) - f(x)        f(x+h) - f(x)
── = ───  = lim  ──────  = lim  ──────
 dx    xの増量   h→0 (x+h) - (x)     h→0      h

解析的

式の展開によって微分を求める(誤差がない)。

     2
y = x
df(x)  yの増量        (x+h)^2 - x^2        (x^2+2hx+h^2) - (x^2)
── = ───  = lim  ──────  = lim  ──────────
 dx    xの増量   h→0 (x+h) - (x)     h→0           h
 dy         2hx+h^2
── = lim ──── = lim 2x+h  = 2x
 dx    h→0    h      h→0

数値微分

計算によって微分を求める(誤差がある)。

偏微分

勾配

勾配の示す方向は、各場所で関数の値を最も減らす方向。

勾配法

ニューラルネットワークに対する勾配

ニューラルネットワークの学習における勾配は、
重みパラメタに関する損失関数勾配となる。

学習アルゴリズムの実装

手順

前提

ステップ 1

ステップ 2

ステップ 3

重みパラメタを勾配の方向に微小量だけ更新する。

ステップ 4

ステップ 1, ステップ 2, ステップ 3を繰り返す。

2層ニューラルネットワークのクラス

TwoLayerNet?クラス
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/ch04/two_layer_net.py

変数

#変数説明
1paramsニューラルネットワークの重みパラメタのディクショナリ変数
1-1params['W1']第1層の重み
1-2params['b1']第1層のバイアス
1-3params['W2']第2層の重み
1-4params['b2']第2層のバイアス
2gradsnumerical_gradientで計算された勾配を保持するディクショナリ変数
1-1params['W1']第1層の重みの勾配
1-2params['b1']第1層のバイアスの勾配
1-3params['W2']第2層の重みの勾配
1-4params['b2']第2層のバイアスの勾配

メソッド

#メソッド シグネチャ引数説明
1__init__(self, input_size, hidden_size, output_size, weight_init_std=0.01):コンストラクタ
1-1selfインスタンス
1-2input_size入力層のニューロンの数
1-3hidden_size隠れニューロンの数
1-4output_size出力層のニューロンの数
1-5weight_init_std・・・
2predict(self, x):推論を行う
2-1selfインスタンス
2-2x画像データ
3loss(self, x, t):損失関数の値を求める
3-1selfインスタンス
3-2x画像データ
3-3t正解ラベル
4accuracy(self, x, t):認識精度を求める
4-1selfインスタンス
4-2x画像データ
4-3t正解ラベル
5numerical_gradient(self, x, t):lossを使用し各重みパラメタの勾配を求める
5-1selfインスタンス
5-2x画像データ
5-3t正解ラベル
6gradient(self, x, t):numerical_gradientの高速版
6-1selfインスタンス
6-2x画像データ
6-3t正解ラベル

学習過程の実装

勾配法により(損失)関数を少なくしていく。

学習結果を確認する実装

学習結果を使用して、学習データとテストデータを推論する。

ハイパーパラメータ

人間が手動で設定するパラメタ

学習の高速化?

学習のテクニック?


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS