SlideShare une entreprise Scribd logo
1  sur  42
タコス
DE
機械学習 ※写真はイメージです
Ikuo Suyama
@martin_lover_se
 Web系プログラマ
 ScalaとかPythonとか
 機械学習始めて半年!
人工知能
流行ってますね※写真はイメージです
Professional 碁
Player!!
Beats
Deep
Learning?
すごい複雑な
「ニューラルネットワーク」
ニューラルネットワーク?
脳の働きを模した計算モデル
パーセプトロン?
すごい単純な
ニューラルネットワーク
機械学習入門に
よい題材!
機械学習始めて半年ですが
パーセプトロン
を説明してみます
パーセプトロン?
”視覚と脳の機能をモデル化したものであり、パターン認識を行う。シンプルなネットワークであり
ながら学習能力を持つ。1960年代に爆発的なニューラルネットブームを巻き起こしたが、1969年に
人工知能学者マービン・ミンスキーらによって線形分離可能な物しか学習できない事が指摘された事
によって下火となった。他の研究者によって様々な変種が考案されており、ニューロン階層を多層化
し入出力が二値から実数になったボルツマンマシン(1985年)やバックプロパゲーション(1986
年)などによって再び注目を集めた。2009年現在でも広く使われている機械学習アルゴリズムの基礎
となっている。
“パーセプトロンは1943年に発表された形式ニューロンに基づく。S層とA層の間はランダムに接続
されている。 S層には外部から信号が与えられる。A層はS層からの情報を元に反応する。R層はA層
の答えに重みづけをして、多数決を行い、答えを出す。
ー From Wikipedia
何らかのデータを入力して、「分類問題」を解く
「形式ニューロン」が元になっている
分類問題?
データを特定のカテゴリ(クラス)に分ける問題
例
メールがスパムか否か?
手書き数字の画像から数字を識別?(MNIST)
Iris(あやめ)の種類?
※何故か機械学習の素材としてよく扱われます
形式ニューロン?
複数の信号入力(X)を受け取る
入力信号の和(u)がある値を超えると信号を出力
(活性化)する
ニューロン同士が結合する
ω1 ω2 b
AND 1.3 1.3 -1.5
OR 1.7 1.7 -0.5
NOT -2 0 1.5
重みを適切に設定することで、チューリングマシ
ンと同等の計算ができる
形式ニューロン?
パーセプトロン
形式ニューロンを複数組み合わせ、教師データで
学習させることで分類問題を解く
入力層 隠れ層 出力層
x1
x2
:
xn
1
1
入力層と出力層のみからなるパーセプトロン
それぞれの識別器(g)が1つのクラスを表し、担当
のクラスに該当するかどうか?を判別する
入力層 出力層
x1
x2
:
xn
1
最
大
値
選
択
器
出力
(クラス)
g0
g1
gn
:
単純パーセプトロン
さらに、簡単のため
二値分類問題
を考えます
Aに属するか、属さないか
x1
x2
青、赤の2グループ(クラス)にわかれた既知の
データに基づいて、未知データを分類したい
青?赤?
二値分類問題
x1
x2
赤、青のみを含むよう領域を分割する直線が引け
れば、未知データも正しく分類できそう
青だ!
二値分類問題
既知のデータに、赤のクラスに1, 青のクラスに-1
のラベルをつけておいて
x1
x2
1
1
1
1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1
1
1
1
1
1
1
1
1
1
1
1
1 1
1
1
1
1
1
-1 -1
二値分類問題
x1
x2
すべてのデータの符号を正しく判定できる直線の
ω=“重み“を見つけると、この問題が解ける
1
1
1
1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1
1
1
1
1
1
1
1
1
1
1
1
1 1
1
1
1
1
1
二値分類問題
ところで
どこかで見たことある式ですね…
ありました!
形式ニューロン
この分類問題は
適切なωを見つければ
パーセプトロンで解けそうです。
HOW?
学習!
1) 重みベクトルωを適当に決める。
2) 既知データXから学習パターンを1つ選ぶ。
3) 識別関数g(x)によって識別を行い、正しく識別で
きなかった場合はωを更新する。
4) Xの全パターンについて2),3)を行う。
5) Xの全パターンを正しく識別できるまで2)~4)を
繰り返す。
g(x)…識別関数
パーセプトロンの学習規則
x1
x2
適当にωを決めると、当然誤検知が出ますね。
パーセプトロンの学習規則
x1
x2
ぱっと見、こうωを更新すれば良さそうです。
パーセプトロンの学習規則
x1
x2
パーセプトロンの学習規則
ぱっと見、こうωを更新すれば良さそうです。
x1
x2
パーセプトロンの学習規則
こうなるように、ωを更新したいですね?
HOW?
1.損失関数を定義する
出力した結果がどれぐらい間違っていたか?を計算す
るパラメータωについての関数
よく使われる損失関数 二乗誤差関数
2.損失関数を最小化するパラメータを見つける
どうやって見つけるか?
色々方法がありますが…
機械学習における「学習」
 ある地点での損失関数の
微分値=傾きを求める
 傾きの方向へ一定間隔Wを
進める=勾配を下る
 値が収束するまで繰り返
す
勾配降下法(Gradient Descent)
勾配降下法(Gradient Descent)
 つまり
 この漸化式で、wを逐次
更新し、最小値を目指し
ます
 ρは更新の幅を決めるハイ
パーラメータ(学習率)
 大きすぎると発散し、小さすぎると収束が遅くなります。
勾配降下法(Gradient Descent)
 いま、損失関数を
(上に誤検知した時)
(下側に誤検知した時)
 を用いて、以下のように
定義します。
(分類が正しかった時)
(誤検知してしまった時、間違っ
たデータと現在の直線との距離を
損失とする)
勾配降下法(Gradient Descent)
 このとき漸化式は
(上側に誤検知)
(下側に誤検
知)
(正しかった)
論ずるより
実装するが易し
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
iris = sns.load_dataset("iris”)
setosa.head(5)
<Python>
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
: : : : : :
このデータを、4つの特徴量から”setosa” か否
か?に分類
[実装] Irisのデータを分類する
1) 重みベクトルωを適当に決める。
2) 既知データXから学習パターンを1つ選ぶ。
3) 識別関数g(x)によって識別を行い、正しく識別できなかった場合は以下の式
に従ってωを更新する。
1) Xの全パターンについて2),3)を行う。
2) Xの全パターンを正しく識別できるまで2)~4)を繰り返す。
学習ロジック
(上側に誤検知)
(下側に誤検
知)
参考資料
丸山不二夫先生のニューラルネット&Tensorflow
説明
http://www.slideshare.net/maruyama097/neural-
network-tensorflow
 GoogleのTensorflow入門のスライドですが、ニューラルネットの
説明も最強のわかりやすさ&丁寧さで必読です!
わかりやすいパターン認識 1〜3章
 説明がとても丁寧で、読みやすい本です。
WEB+DB PRESS Vol.89 初めての深層学習
 実装はChainerを使って説明されていましたが、概念の説明が分か
りやすかったです。
 東京で働くデータサイエンティストのブログ
 単純パーセプトロンをPythonで組んでみる

Contenu connexe

En vedette

機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
 
はじパタ6章前半
はじパタ6章前半はじパタ6章前半
はじパタ6章前半
T T
 
わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章
weda654
 

En vedette (20)

17ゼロから作るディープラーニング2章パーセプトロン
17ゼロから作るディープラーニング2章パーセプトロン17ゼロから作るディープラーニング2章パーセプトロン
17ゼロから作るディープラーニング2章パーセプトロン
 
単純パーセプトロン
単純パーセプトロン単純パーセプトロン
単純パーセプトロン
 
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
 
タコスで機械学習 Python編
タコスで機械学習 Python編タコスで機械学習 Python編
タコスで機械学習 Python編
 
住居選択支援を目的としたAI技術適用の試み -ソーシャルメディアへのクラウドソーシング適用および物件画像への深層学習適用-
住居選択支援を目的としたAI技術適用の試み -ソーシャルメディアへのクラウドソーシング適用および物件画像への深層学習適用-住居選択支援を目的としたAI技術適用の試み -ソーシャルメディアへのクラウドソーシング適用および物件画像への深層学習適用-
住居選択支援を目的としたAI技術適用の試み -ソーシャルメディアへのクラウドソーシング適用および物件画像への深層学習適用-
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能
 
ゲームAI・実装事例の紹介
ゲームAI・実装事例の紹介ゲームAI・実装事例の紹介
ゲームAI・実装事例の紹介
 
クラシックな機械学習入門 1 導入
クラシックな機械学習入門 1 導入クラシックな機械学習入門 1 導入
クラシックな機械学習入門 1 導入
 
Deep Learning Abstract
Deep Learning AbstractDeep Learning Abstract
Deep Learning Abstract
 
はじパタ6章前半
はじパタ6章前半はじパタ6章前半
はじパタ6章前半
 
ハトでもわかる単純パーセプトロン
ハトでもわかる単純パーセプトロンハトでもわかる単純パーセプトロン
ハトでもわかる単純パーセプトロン
 
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~んTokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
 
わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章
 
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
 
はじぱた7章F5up
はじぱた7章F5upはじぱた7章F5up
はじぱた7章F5up
 
ニューラルネットワーク ことはじめ
ニューラルネットワーク ことはじめニューラルネットワーク ことはじめ
ニューラルネットワーク ことはじめ
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
 
バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践
 

タコス De 機械学習 ~パーセプトロンを実装してみよう~