X1 X2 Y

ニューラルネットワーク
応用
• パターン認識
– 音声,画像,図形,文字などをパターン,これらの認識を「パターン認
識」と呼ぶ.
– 音声認識や画像認識,文字認識などがある.
• 文字認識
– 手書き文字や印刷文字の識別.
• 音声認識
– 人が喋った言葉を機械が理解する.
• 画像認識
– 画像が何の画像であるかを理解する.
– 画像が物か人か,人であればその表情はどうかを判断する.
ニューロンモデル
• 出力
𝑛
𝑦 = 𝑔(
𝑤𝑖 𝑥𝑖 𝑡 − 𝜃)
𝑖=1
– 入力 𝒙 = 𝑥1 , 𝑥2 , ⋯ 𝑇
– シナプスの強さ(重み)
𝒘 = 𝑤1 , 𝑤2 , ⋯ , 𝑇
– 伝達関数𝑔
• 伝達関数
– 線形関数
– ステップ関数
– シグモイド関数
McCulloch-Pitts モデル
• ステップ関数
𝑔 𝑢 =
1
𝑢>0
0 Otherwise
• AND,OR,NOTなどの論理素子を構成できることを示した.
発火頻度モデル
• ニューロンの発火間隔は,刺激電流
を増やしていくと短くなる.発火頻度
を変数としたモデル.
• シグモイド関数
1
𝑔 𝑢 =
1 + 𝑒 −𝑢+𝜃
• 対称型関数
𝑔 𝑢 = tanh(𝑢 − 𝜃)
• 線形関数
𝑔 𝑢 =𝑢
コネクショニストモデル
• 階層型ニューラルネットワーク
• シグモイド関数
1
𝑔 𝑢 =
1 + 𝑒 −(𝑢−𝜃)
McCulloch-Pitts モデルの例題1
• AND回路
𝑤1 =? ? ?, 𝑤2 =? ? ?, 𝜃 =? ? ?
𝑦 = 𝑔(𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃)
X1
X2
Y
1
1
1
1
0
0
0
1
0
0
0
0
McCulloch-Pitts モデルの例題1
解答例
• AND回路
𝑤1 = 2.0 , 𝑤2 = 2.0 , 𝜃 = 3.0
𝑦 = 𝑔(𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃)
X1
X2
Y
1
1
1
1
0
0
0
1
0
0
0
0
McCulloch-Pitts モデルの例題2
• OR回路
𝑤1 =? ? ? , 𝑤2 =? ? ? , 𝜃 =? ? ?
𝑦 = 𝑔(𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃)
X1
X2
Y
1
1
1
1
0
1
0
1
1
0
0
0
McCulloch-Pitts モデルの例題2
解析例
• OR回路
𝑤1 =? ? ? , 𝑤2 =? ? ? , 𝜃 =? ? ?
𝑦 = 𝑔(𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃)
X1
X2
Y
1
1
1
1
0
1
0
1
1
0
0
0
McCulloch-Pitts モデルの例題3
• XOR回路
𝑤1 =? ? ? , 𝑤2 =? ? ? , 𝜃 =? ? ?
𝑦 = 𝑔(𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃)
X1
X2
Y
1
1
0
1
0
1
0
1
1
0
0
0
McCulloch-Pitts モデルの例題3
解析例
• XOR回路
𝑤1 =? ? ? , 𝑤2 =? ? ? , 𝜃 =? ? ?
𝑦 = 𝑔(𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃)
X1
X2
Y
1
1
0
1
0
1
0
1
1
0
0
0
線形分離可能
MLP
𝑢𝑗
𝑦𝑘
𝑥𝑖
𝑤𝑖𝑗 𝑥𝑖 − 𝜃𝑗 ) = 𝑔(𝒘𝑇 𝒙 − 𝜃𝑗 )
𝑢𝑗 = 𝑔(
𝑖
𝑣𝑘𝑗 𝑢𝑗 − Θ𝑘 = 𝑔(𝒗𝑇 𝒖 − Θ𝑘 )
𝑦𝑘 = 𝑔
𝑖
伝達関数
• 線形関数
• ステップ関数
• シグモイド関数
誤差逆伝搬法
• 学習データが与えられたときに,そのデータに一致す
るように重みや閾値を修正する.
入力𝒙と出力𝒚のセット(教師信号)を多数用意する.
重み𝒘と閾値𝜽をランダムに与える.
入力𝒙を与えて出力𝒚′を得る.
得られた出力𝒚′と教師信号𝒚の差を最小にするよう
にパラメータを更新する.(最急降下法を用いる)
5. 3,4を繰り返す.
1.
2.
3.
4.
パラメータ更新
𝑢𝑗
𝑦′𝑘
予測値
𝑦𝑘
真値
𝑦𝑘
𝑥𝑖
𝐸 = 𝑦’𝑘 − 𝑦𝑘
2
→0
更新規則
• 誤差を最小化するように,最急降下法によってパラメータを
更新する.
𝐸 = 𝑦’𝑘 − 𝑦𝑘 2 → 0
𝜕𝐸
𝑤𝑖𝑗 ← 𝑤𝑖𝑗 − 𝛼
𝜕𝑤𝑖𝑗
𝜕𝐸
𝑣𝑘𝑗 ← 𝑣𝑘𝑗 − 𝛼
𝜕𝑣𝑘𝑗
𝜕𝐸
𝜃𝑗 ← 𝜃𝑗 − 𝛼
𝜕𝜃𝑗
𝜕𝐸
Θ𝑘 = Θ𝑘 − 𝛼
𝜕Θ𝑘
ニューラルネットワーク
による判別分析
練習問題1
• AND回路を構成するニューロンを定義する.
X1
X2
Y
1
1
1
1
0
0
0
1
0
0
0
0
𝑥1
𝑥2
𝑢1
𝑢2
𝑢3
𝑦
練習問題1(1)
*ニューラルネットワークの学習データを用意する.
> x1<-c(1,1,0,0)
> x2<-c(1,0,1,0)
> y <- c(1,0,0,0)
[1] 1 0 0 0
> nn.data1<-data.frame(x1,x2,y)
> nn.data1
x1 x2 y
1 1 11
2 1 00
3 0 10
4 0 00
練習問題1(2)
ニューラルネットワークのライブラリーを利用する.
> library(nnet)
ニューラルネットワークで判別式を学習する.3層構造のネットワークで中間層は3つである.
> nn.res1<-nnet(y~.,data=nn.data1,size=3)
# weights: 13
initial value 1.237177
iter 10 value 0.529587
final value 0.000064
converged
学習結果を表示する.
> nn.res1
a 2-3-1 network with 13 weights
inputs: x1 x2
output(s): y
options were -
練習問題1(3)
重みや閾値の結果を表示する.
> summary(nn.res1)
a 2-3-1 network with 13 weights
options were b->h1 i1->h1 i2->h1
16.97 -43.93 -41.36
b->h2 i1->h2 i2->h2
-9.51 8.16 7.70
b->h3 i1->h3 i2->h3
6.65 -10.90 -11.01
b->o h1->o h2->o h3->o
-19.40 -23.14 24.27 -22.01
> str(nn.res1)
練習問題1(4)
判別するデータを用意する.
> x1<-c(0.5,0.5,1.5,1.5)
> x2<-c(0.5,1.5,0.5,1.5)
> nn.pred1<-data.frame(1,x2)
> nn.pred1<-data.frame(x1,x2)
> nn.pred1
x1 x2
1 0.5 0.5
2 0.5 1.5
3 1.5 0.5
4 1.5 1.5
練習問題1(5)
判別データを判別する.
> nn.pred1.res<-predict(nn.res1,nn.pred1)
> nn.pred1.res
[,1]
1 0.0000000
2 0.9919413
3 0.9920982
4 0.9923575
練習問題1(6)
学習データを表示する.
> plot(nn.data1$x1,nn.data1$x2,
col=ifelse(nn.data1$y>0.5, "blue",
"red"),xlim=c(0,2),ylim=c(0,2))
グラフを重ねることを定義する.
> par(new=T)
判別結果を表示する
> plot(nn.pred1$x1, nn.pred1$x2,
col=ifelse(nn.pred1.res[,1]>0.5, "green",
"yellow"),xlim=c(0,2),ylim=c(0,2),axes=F)
演習問題1
• OR回路を構成するニューロンを定義しなさい.
• 学習データに対する予測値,(2,0),(-1,-1)に対
する予測値を求め、plotしなさい.
X1
X2
Y
1
1
1
1
0
1
0
1
1
0
0
0
𝑥1
𝑢1
𝑦
𝑥2
𝑢2
演習問題2
• XOR回路を構成するニューロンを定義しなさい.
• 学習データに対する予測値,(2,0),(-1,-1)に対す
る予測値を求め、plotしなさい.
X1
X2
Y
1
1
0
1
0
1
0
1
1
0
0
0
𝑥1
𝑢1
𝑦
𝑥2
𝑢2
演習問題3
• 過去3日間の株価データから次の日の株価を予
想するニューラルネットワークを決定しなさい.
出力
入力1
入力2
0.995259
0.970086
1
0.995259
0.955139
1
0.967533
0.955139
0.996595
0.967533
0.975021
0.996595
0.957785
0.975021
0.932713
0.957785
0.916515
0.932713
0.938545
0.916515
0.948293
0.938545
0.924696
0.948293
0.89519
0.924696
0.901835
0.89519
0.881792
0.901835
入力3
0.982512
0.970086
0.995259
1
0.955139
0.967533
0.996595
0.975021
0.957785
0.932713
0.916515
0.938545
0.948293
0.924696
0.89519
0.997984
0.982512
0.970086
0.995259
1
0.955139
0.967533
0.996595
0.975021
0.957785
0.932713
0.916515
0.938545
0.948293
0.924696
𝑥1
𝑢1
𝑦
𝑥2
𝑥3
𝑢2
𝑢3