SlideShare a Scribd company logo
NN基礎
Koki Natsume
目次
・はじめに
・NN
・学習
・まとめ、次回予告
※言語はPython3系で書きます。
自己紹介
名前:棗 光幹
好きな言語:JavaScript(Node.js)、Golang
分野:バックエンド開発、人工知能開発
冴えカノ2期楽しみ
はじめに
今回の目標
NN基礎!!!
歴史的な流れ
パーセプトロン・NNの誕生(1940年代)
AIの冬
誤差逆伝播法・CNN(1980〜90年代)
AI二度目の冬
DBNやビックデータ(2000年代)
深層学習の良さが認知され始めた! 👈イマココ!
👈今日やるのはここ
NN
・人間の脳の神経回路(ニューロン)の仕組みを真似したアルゴリズム
・パーセプトロンに自動重みパラメータ追加機能を付け加えようなもの
パーセプトロン
複数の信号を「入力」として受け取り一つの信号を「出力」するアルゴリズム。
単層パーセプトロンこそNNの単位となる。
※この図はb(バイアス:ニューロンの発火のしやすさ
をコントロールするもの)なし。
入力を活性化関数で評価する。
ちなみに活性化関数とは、
入力された値を境にして出力が切り替わる関数。
隠れ層or出力層
隠れ層活性化関数
y = f (b + w1*x1 + w2*x2 + … + wn*xn)
y = f(x)の f が活性化関数となる。
yx
f()よく用いられる隠れ層活性化関数
シグモイド関数
f(x) = 1 / ( 1 + exp(-x) )
最近はReLU関数というのも用いられる
出力層活性化関数
よく用いられる出力層活性化関数
恒等関数(回帰問題)
入力をそのまま出力する。
ソフトマックス関数(分類問題)
以下のように指数関数を指数関数の総和で割る。
y = exp(x) / sum( exp(x) )
x y
x1
x2
x3
y1
y2
y3
3層のニューラルネットワーク
学習
訓練データから適切な重みパラメータ(w)を自動で取得する事。
損失関数という指標を用いて、その値ができるだけ小さくなるように重みパラ
メータを探す。
また、その小さな損失関数の値を探し出すための手法として勾配法を用いる。
機械学習との違い
機械学習の場合
データ
ニューラルネットワークの場合
データ
特微量 機械学習 答え
ニューラルネットワーク 答え
つまり、特微量も機械が学習する!
損失関数
2乗和誤差
E = 0.5*sum( (y-t)**2 )
交差エントロピー誤差
E = - sum( t * log(y + delta) )
勾配法
勾配とは
すべての変数(例えば、x0,x1)の偏微分をベクトルとしてまとめたもの.例えば、( ∂f/∂x0, ∂f/x1,
∂f/∂x2 )
勾配は各場所(座標)においてその関数の値をもっとも減らす方向を示す。
※最小値を求める場合、正確には勾配降下法という。
その勾配方向へ進むことで徐々に関数の値を減らすのを勾配法という。
x0 = x0 - n*( ∂f/∂x0 )
x1 = x1 - n *( ∂f/∂x1 )
※nは、学習率(どれだけ学習すべきか、どれだけパラメータを更新するかを決めること)という。
0.1や 0.01など前もって決めておく。
学習アルゴリズムはつまり
1. ミニバッチで選ばれたデータを選び出す。
2. ミニバッチの損失関数を減らすために、各重みパラメータの勾配を求める。
3. 重みパラメータを勾配方向微少量だけ更新する。
4. 1.2.3を繰り返す。
ということ。
まとめ・次回予告
・ニューラルネットワークは活性化関数を用いてあれこれする。
・学習は損失関数を指標にして、その損失関数の値が小さくなるように重みパ
ラメータを更新する。重みパラメータの更新は勾配法を用いて行う。
次回予告
誤差逆伝播法!

More Related Content

PDF
Numpy scipy matplotlibの紹介
PDF
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
PDF
Studentgo1
PDF
Spring aizu-lt-2018
PPTX
Goで学ぶDApp(aizu.go#2)
PPTX
Pwaを作ってみる(ejリクールトlt 2017/10/18)
PPTX
Vue template-parserを作っている話
PPTX
Alt#0x008 2017/5/20
Numpy scipy matplotlibの紹介
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
Studentgo1
Spring aizu-lt-2018
Goで学ぶDApp(aizu.go#2)
Pwaを作ってみる(ejリクールトlt 2017/10/18)
Vue template-parserを作っている話
Alt#0x008 2017/5/20
Ad

機械学習勉強会2017/2/19(nn基礎)