SlideShare a Scribd company logo
Ver. 1.0, 2017-08-11
森下功啓
1
更新履歴
• 2017-08-11 Ver. 1.0 release
• 2017-08-19 シリーズ番号振り直し
2
Series Index
ML-01 機械学習の概要
ML-02 機械学習におけるデータの前処理
ML-03 ランダムフォレストによる自動識別
ML-04 機械学習の性能の定義と一般的な性能向上策
ML-05 ニューラルネットワーク
ML-06 ニューラルネットワークによる線形回帰
ML-07 ニューラルネットワークによる非線形回帰
ML-08 ニューラルネットワークを用いた識別・分類 ーシングルラベルー
ML-09 ニューラルネットワークを用いた識別・分類 ーマルチラベルー
ML-10 ニューラルネットワークで画像識別
ML-11 ニューラルネットワークのチューニングの基本
3
ニューロン
• 人の認知性能はニューロンのネットワークが実現している
• ニューロンはシナプスで信号を伝える
• シナプスの刺激量が一定を超えると、ニューロンは発火(電気的
に励起)し、刺激を伝達する
• 刺激の強さはシナプスによる(受容体の数や神経伝達物質の量)
4
http://www.gifu-
nct.ac.jp/elec/deguchi/sots
uron/ieiri/img9.gif
神経細胞同士の結合
ニューロンのモデル化
結合係数でシナプスの数や受容体の数を表現する
5
𝑥0
𝑥1
𝑥2
𝑥3
𝑤0
𝑤1
𝑤2
𝑤3
𝑦
結合係数
出力
入力
*シナプスの結合の強さ=結合係数の大きさ
**シナプスの数=結合係数の数
***ユニットには が入力される𝑧 = ෍
𝑘
𝑤 𝑘 𝑥 𝑘
ユニット
𝑦をどう与えるか?→活性化関数
𝑦を求める関数を活性化関数(Activation)という。活性化関
数は複数提案されており、ここではその代表例としてシグモ
イド関数(sigmoid)を示す。
6
ቊ
𝑦 ≈ 1, 𝑧 > threshold:𝜃
𝑦 ≈ 0, 𝑒𝑙𝑠𝑒
𝑧 = ෍
𝑘
𝑤 𝑘 𝑥 𝑘
𝑦 = ℎ(𝑧) =
1
1 + exp(−𝑧 + 𝜃)
y =
1
1 + exp(−𝑧)
, (𝜃 = 0)
バイアス項
発火
活性化関数の種類
7http://www.procrasist.com/entry/2017/01/12/200000
ニューラルネットワークの基本構造
8
入
力
デ
ー
タ
出
力
デ
ー
タ
中間層 出力層
入力層
*中間層は複数あっても良いが、多層になると学習が進みにくいという特徴がある。
*中間層のユニット数は自由に調整できるが、多すぎても少なすぎてもダメだ。
(隠れ層)
バイアス項のためのユニット
9
入
力
デ
ー
タ
出
力
デ
ー
タ
中間層
(隠れ層)
出力層
入力層
1
1
𝑤0,1
0
𝑦1
𝑦2
𝑦3
𝑥1
𝑥2
𝑥3
𝑥4
*𝜃を常に1を出力する
ユニットで置き換える。
Layer 𝑖 + 1のユニット𝑗に
対するバイアス項からの
入力は𝑤0,𝑗
𝑖
となる。
𝑤0,2
0
𝑤0,1
1
𝑤0,2
1
𝑤0,3
1
Layer 0
Layer 2
Layer 1
Unit 1
Unit 2
Unit 1
Unit 3
Unit 2
Unit 1
Unit 2
Unit 3
Unit 4
Unit 0
Unit 0
𝑤 𝑘,𝑗
𝑖
Layer 𝑖のUnit 𝑘から
Unit 𝑗への結合係数
値の入出力を数式で表してみた
10
𝑿 = (1, 𝑥1, ⋯ , 𝑥 𝑛) 𝑇
= ( 𝑋0, ⋯ , 𝑋 𝑛) 𝑇
𝑧𝑗
𝑖
= 𝑾𝑗
𝑖
∙ 𝒀𝑖−1z of unit 𝑗 at Layer 𝑖
𝑾𝑗
𝑖
= (𝑤0,𝑗
𝑖−1
, ⋯ , 𝑤 𝑢 𝑖−1,𝑗
𝑖−1
) 𝑇Weight vector of unit 𝑗 at Layer 𝑖
Layer 𝑖のユニット数は𝑢 𝑖
output of unit 𝑗 at Layer 𝑖
𝒀𝑖 = (𝑦0
𝑖
, ⋯ , 𝑦 𝑢 𝑖
𝑖
) 𝑇output vector at Layer 𝑖
input vector
Layer 𝑖
Unit 𝑗
・・・
𝑤0,𝑗
𝑖−1
𝑤 𝑢 𝑖−1,𝑗
𝑖−1
内積
𝑦𝑗
𝑖
重み係数
活性化関数
output vector at Layer 0 𝒀0
= 𝑿
Relationship of 𝑛 and 𝑢 𝑖 𝑛 + 1 = 𝑢0
ここで、𝑛は特徴ベクトルの次元数である。
𝑖は添え字。指数で
はないので注意
𝑦𝑗
𝑖
= ൞
1.0 (𝑗 = 0)
ℎ 𝑧𝑗
𝑖
(𝑗 ≥ 1, 𝑖 ≥ 1)
𝑋𝑗 (𝑛 ≥ 𝑗 ≥ 0, 𝑖 = 0)
ℎ𝑧𝑗
𝑖
Irisの識別を行う例
11
中間層
(隠れ層)
出力層
入力層
がくの長さ
がくの幅
花弁の長さ
花弁の幅
セトサ
バーシクル
バージニカ
*入力層に入れる値はN(0, 1)に正規化しておく
0.0~1.0
0.0~1.0
0.0~1.0
正解がセトサなら、上から
[1,0,0]の出力が理想的
学習:結合係数の修正
12
中間層
(隠れ層)
出力層
入力層
がくの長さ
がくの幅
花弁の長さ
花弁の幅
*誤差関数で求めた誤差を各𝑤で微分し、傾きの大きさに応じて結合係数を修正する。
修正方法は最適化アルゴリズム(Optimization)による。ここで、出力層から入力層に向
けて順に結合係数を修正する方法を誤差逆伝搬法といいう。
0.5
0.3
0.7
出力
1.0
0.0
0.0
正解
誤差あり
誤差あり
誤差あり
修正
修正
修正
修正
最適化アルゴリズムの種類
13
ニューラルネットワークでは、学習過程において勾配降下法
などを用いて出力誤差を縮小させていく
最適化アルゴリズム別の誤差収束の様子(created by https://twitter.com/alecrad)
↓山の高さが誤差の大きさを表している。誤差最小を目指して、計算を繰り返す。
アルゴリズムによって、最小を目指す方法が異なる。
14
ちなみに、誤差関数の起伏が明らかであれば、最初から最小
になる結合係数をセットすればいいじゃないかという質問がよ
くあります。
えー、前ページの誤差の等高線は自明ではありません。
計算で求める必要があります。
結合係数が少なければ全探索的に総当たりで計算してもい
いかもしれません。ですが、単純な3層のモデルであっても
最低でも10^10オーダーの計算が必要でしょう。
実用的なネットワークにおいては、
解を得るまでに何年かかるか分かりません。
故に、結合係数は乱数で初期化した上で、誤差の勾配を基に
誤差を縮小させる方向で修正するのです。
Deep Learning
15
多層(20層とか100層)のニューラルネットワークをDeep Neural
Network、一般的にDeep Learningと呼んでいる。
層の数が増えると調整項目が減ったり、表現力が増えたりと
良いことが起こるのだが、標準的なニューラルネットワークだと
勾配消失問題により実用上4〜5層程度が限界だった。
Deep Learningでは最適化アルゴリズムや活性化関数やAuto
Encoderやプーリング層や畳み込み層やDropout層などの工夫
によってこれをクリアした。
16

More Related Content

More from Katsuhiro Morishita

Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018Katsuhiro Morishita
 
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04Katsuhiro Morishita
 
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04Katsuhiro Morishita
 
オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施Katsuhiro Morishita
 
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001Katsuhiro Morishita
 
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰Katsuhiro Morishita
 
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰Katsuhiro Morishita
 
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別Katsuhiro Morishita
 
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要Katsuhiro Morishita
 
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策Katsuhiro Morishita
 
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成Katsuhiro Morishita
 
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017Katsuhiro Morishita
 
VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育Katsuhiro Morishita
 
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方Katsuhiro Morishita
 
VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列Katsuhiro Morishita
 
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11Katsuhiro Morishita
 
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列Katsuhiro Morishita
 

More from Katsuhiro Morishita (20)

Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
 
機械学習と主成分分析
機械学習と主成分分析機械学習と主成分分析
機械学習と主成分分析
 
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
 
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
 
オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施
 
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
 
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
 
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
 
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
 
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
 
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
 
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
 
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
 
VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育
 
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
 
中心極限定理
中心極限定理中心極限定理
中心極限定理
 
VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列
 
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
 
VBAで数値計算 編集後記
VBAで数値計算 編集後記VBAで数値計算 編集後記
VBAで数値計算 編集後記
 
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列
 

シリーズML-05 ニューラルネットワーク