Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,455 views

Published on

タコス De 機械学習 by エンジニアのための機械学習ゼミ

Published in: Engineering
  • Be the first to comment

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

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

×