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

目次

概要

モデル

学習

構造

第0層(入力層

そのままの値を出力(出力に重みを掛けられる。

第1層(中間層(隠れ層

入出力変換後、重みを掛けて多分岐。

第2層(出力層

0、1の間の値に変換(全部の和が1となるように正規化する場合もある

誤差の計算と重みの更新

出力と教師信号の誤差の計算をし、
2→1→0層と層の重みを更新していく(誤差逆伝播法?

ResNet?

活性化関数

ステップ関数とシグモイド関数とReLU関数がある。

ステップ関数

実装

なんとなくAPI仕様を知らないと難しい感じ。

グラフ

-5.0 ~ 5.0までの0.1刻みのプロットをステップ関数にかけてグラフ化する。

"""This is a test program."""

import numpy as np
import matplotlib.pylab as plt

def step_function(x_1):
    """This is a test program."""
    # 上記のいずれかの実装を選択。

X = np.arange(-5.0, 5.0, 0.1)
Y = step_function(X)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)  # 図で描画するy軸の範囲を指定
plt.show()
step関数グラフ

シグモイド関数

              1
h(x) = ────────
        1 + exp(-x)

実装

ポイントは、Pythonのブロードキャストによって配列も計算できる点。

"""This is a test program."""

import numpy as np

def sigmoid(x_1):
     """This is a test program."""
    return 1 / (1 + np.exp(-x_1))   

グラフ

-5.0 ~ 5.0までの0.1刻みのプロットをシグモイド関数にかけてグラフ化する。

"""This is a test program."""

import numpy as np
import matplotlib.pylab as plt

def sigmoid(x_1):
    """This is a test program."""
    return 1 / (1 + np.exp(-x_1))

X = np.arange(-5.0, 5.0, 0.1)
Y = sigmoid(X)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)
plt.show()
sigmoid関数グラフ

ReLU関数

ReLU(Rectified Linear Unit)関数

           ┌
           │0 ( a <= 0 )
y = h(a) = <
           │a ( a > 0 )
           └

実装

"""This is a test program."""

import numpy as np

def relu(x_1):
    """This is a test program."""
    return np.maximum(0, x)  

グラフ

-5.0 ~ 5.0までの0.1刻みのプロットをReLU関数にかけてグラフ化する。

"""This is a test program."""

import numpy as np
import matplotlib.pylab as plt

def relu(x_1):
    """This is a test program."""
    return np.maximum(0, x_1)

X = np.arange(-5.0, 5.0, 0.1)
Y = relu(X)
plt.plot(X, Y)
plt.ylim(-0.1, 5.1)
plt.show()
ReLU関数グラフ

推論と学習

ニューラルネットワーク(推論)

ニューラルネットワーク(学習)

深層学習の高速化?

深層学習のテクニック

ニューラルネットワークの色々

ディープニューラルネットワーク(DNN)

(Deep Neural Network: DNN)

再帰型ニューラルネットワーク(RNN)

(Recurrent Neural Network: RNN)

特徴

RNNでできること

長短期記憶ニューラルネットワーク(LSTM)

(Long short-term memory: LSTM)

特徴

LSTMでできること

RNNでできること

畳み込みニューラルネットワーク(CNN)

(Convolutional Neural Network: CNN)

特徴

パート

CNNは大きく分けて2つのパートに分けることができる。

畳み込み層

特徴マップ

画像から切り取った「画像の一部領域」と特定のパターンを検出する「カーネルの行列」の内積を計算。

※ 1つのカーネルにつき1つの特徴マップが生成される。

プーリング層

特徴マップから位置のズレに対して頑強な特徴抽出を行う。

CNNでできること

3D DNN

アプローチ

点群データ

3D DNNでできること

敵対的生成ネットワーク(GAN)

(Generative Adversarial Network: GAN)

特徴

GANでできること

深層Qネットワーク(DQN)

(Deep Q-Network: DQN)

特徴

DQNでできること

深層強化学習の事例を参照。

自己符号化器(オートエンコーダ)

特徴

AEでできること

様々な用途で利用されている。

ニューラルネットワークの問題点

過学習を起こし易い

概要

解決

学習率の調整が難しい

概要

学習率とは、

解決

勾配消失問題が起こる

誤差逆伝播法の計算において入力層に近い手前の層まで学習が行き渡らなくなる現象

理由

解決

参考

Wikipedia

Neural networks and deep learning


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