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

目次

概要

重みの自動獲得

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

学習はデータ駆動

機械学習(machine learning)

特徴量の選択

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

特徴量の学習

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

深層学習(deep learning)

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

損失関数

2乗和誤差

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

交差エントロピー誤差

ミニバッチ学習

勾配法

微分

勾配

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

勾配法

NNに対する勾配

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

学習アルゴリズムの実装

手順

前提

ステップ 1

ステップ 2

ステップ 3

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

ステップ 4

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

2層NNのクラス

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