n ここまでで,人工知能について,その概要や課題を
ざっとながめてきた
n 現在は第3次ブームで,機械学習などが熱い
n 具体的に機械学習とはどのようなものなのか?
u ここでは 機械学習 に 深層学習を含め,
かつ パタン認識 の延長線上にあるモノであるとする
2
Slide 3
Slide 3 text
機械学習って何?
n データから“学習”して賢くなるアルゴリズム
u データから,何らかのパタン(規則)を見つけ出す
3
Slide 4
Slide 4 text
機械学習の何が嬉しいのか?
n 機械がデータから学習してくれる
u 第2次の課題:“知能”を人間が作成していた
p 「もし**だったら***」のIf-Thenルールを列挙
• “例外”対応や条件の組み合わせを考えるとバリエーションは膨大
• ルールが作成者や,作成者のその時の気分で変化
p 記憶装置自体も高額,元データは紙から書き起こし…
u とにかく,大量にデータさえ与えれば何とかしてくれる
p データはネットにいくらでもある
p 機械が勝手にやるので,恣意性がない
p しかも早い
4
Slide 5
Slide 5 text
機械学習はなにができるのか?
n 基本的はパタンを発見 = 分ける・推測する
u 似ているモノ同士でグループ分けする
u 新しいデータが来たときに,どのグループか推測する
5
グループ1
グループ2
グループ3
グループ1
グループ2
グループ3
?
深層学習って言うのがないんですけど…?
n 深層学習(ディープラーニング)には
ニューラルネット,という技術を用いる
u 原理的には “教師あり”学習の一手法※
u “教師なし” や “強化学習” にもうまく活用可能
u なんにせよ,深層学習等は具体的な手法なので,
前述のスライドにあるレベルより一段下の概念
p 分類や回帰を行うための手法…と考えると良い
11
※ ここでは主に深層学習の原理として “オートエンコーダ” を想定(後日,深層学習の回で説明)
Slide 12
Slide 12 text
ニューラルネット,深層学習の位置づけ
n 教科書やサイトによって,ニューラルネットや
深層学習の位置づけは意外とフリーダム…
u 教師あり・なし,強化学習と同列に並んでいたり…
u 教師あり の 手法に位置づけられていたり…
u 教師なし の 手法に位置づけられていたり…
n どう考えると良いか?
u まず,深層学習 は ニューラルネット の特殊版
u ニューラルネットの原理を考えると “教師あり” の 手法※
u ただ,応用が進んで 強化学習 や 教師なし にも使える
p 特に 深層学習 において,その傾向が顕著で,位置がばらつく
12
※ 主流ではないが,ボルツマンマシン という “教師なし” の ニューロ や,それを生かした 深層学習 も存在する
また 深層学習 の発明者として有名な ヒントン先生も,もともとボルツマンマシンの研究者
データの種類
n 教師あり
u 入力に対して期待される出力がくっついている
p たとえば,「この人が男性か女性か」を当てたいとして…
こんな感じで,既知のデータに当てたい項目の正解データがある
n 教師なし
u データが入力のみ
p 上記の例だと,性別の項目がない(ので,性別を当てるのは困難)
14
3 2 140 4 57 6
6
96
6
Slide 15
Slide 15 text
関連する用語
n 特徴量
u 分類やクラスタリングに使うデータの項目
p 性別の予測に以下のデータを使うなら,髪の長さ や 身長
3 2 140 4 57 6
6
96
6
n 教師/学習/トレーニング データ
u 教師あり学習で,学習時に用いるデータ
u 特徴量と正解ラベルのセットで作られる
p 上の例では “性別” を予測したいので,“性別”の列が正解ラベル
15
Slide 16
Slide 16 text
機械学習の用語
16
n 目的変数・予測変数
u 予測したい項目
p この人は男性?女性?=性別
n 説明変数
u 予測に使えるデータ項目
p 髪の長さ
p 身長,体重
p 今日コンビニで買った物
p 家にある本の一覧
?
もちろん,髪が長くてお化粧品をよく買い,
ファッション雑誌をたくさん持っている男性 や,
短髪でプロテインをよく買い筋トレの本を持ってる女性も。
但し,データとしてそれが多数派ではないはず。
Slide 17
Slide 17 text
教師なしvs.教師あり
n “教師あり”は教師データがいるから面倒!
とりあえず“教師なし”でなにかやってみるか…
n “教師なし”=計算機にお任せ
u 計算機のロジックは人になじまないことも多々
17
危ないパタン!!
グループ1
グループ2
グループ3
グループ1
グループ2
グループ3
出てきた結果
本当に必要だった結果
Slide 18
Slide 18 text
教師なし・ありの目的の違い
18
n 教師なし
u データセット全体の特徴を
何となく把握する
u 取ってきたデータでOK,楽
u 計算機の論理(数学)で
処理するので人間にとって
意味ある形にならないことも
u 教師あり の前処理として
使用することも
n 教師あり
u 対応関係からルールを作成
未知データを判断
u 対応データがいる
u シンプルなので使いやすい
使用者側で向き・不向きを考えて
適切に使い分けていくことが大事
Slide 19
Slide 19 text
本当に雑な,教師なし 使いどころ
u もらったデータを可視化してみた
u なんか,グループはありそうなんだけど…
u こういうときに “教師なし” の “クラスタリング”
19
Original Data Clustered Data
※ 3つの正規分布から作成したデータを k-means で k=3 として分類した例
Slide 20
Slide 20 text
本当に雑な,教師あり の捉え方
u 目標値(教師データ)と 予測のズレ(誤差)を 最小化
p 誤差=f(データ) を 最小化する 数理最適化問題
• 最初はとりあえず適当に的を撃ってみる
• 目標とのズレを計測して,もう少し下を狙うとか調整する
• また撃ってみて,今度はもう少し左を狙うとか調整する
• (良い感じに当たるまで繰り返し)
20
Slide 21
Slide 21 text
ここまでで紹介していなかった他の話題
n 強化学習
u 行動を学習する仕組み
u 教師あり学習に似るが,一連の行動の結果を最大化する
ように学習するという点で異なる
p 例えば最終目的がゴール地点での得点最大化であって,
それに有効なら途中の経路で一時的に得点を下げることもする
何らかの行動
報酬
何か操作をすると,その結果として報酬が与えられ,
それを最大化するように学習をしていく
21
Slide 22
Slide 22 text
強化学習
u 1回動くごとに -10pt
u 緑のマスを踏むと +20pt,赤は+30pt,青は+10pt,灰色は0pt
u 一度通ったパネルは灰色に変化
n こんなルールを与えると,最適な移動ルールを見つけ出す
Start
Goal
22
Slide 23
Slide 23 text
教師あり学習の例
23
Slide 24
Slide 24 text
k-NN (Nearest Neighbor)
n 単純でわかりやすい 教師あり学習
u “k近傍法”とも呼ばれる
p よく似た名前の k-means と混同しないように注意
p ここでの NN は Neural Network の略ではない
n 近くのデータから,未知データのクラスを推定する
u 散布図として表現できる系統のデータに対しては,
だいたい適用できると思ってよい
24
SVM : Support Vector Machine
n 古典的な 教師あり学習
u 基本的には 2値分類 のための手法
p Aか,それ以外か,のような2つのグループの判別
n 2つのグループをうまく分割できる境界を探す
u 基本的には線形分離しかできない
u …が,あるトリックを用いると非線形もいける
p 多値分類ができるものなど,派生形もいろいろ
28
GMM : Gaussian Mixture Model
n 確率モデルに基づく 教師なし学習
u いわゆる“ソフトクラスタリング”の手法
p AかBか,ではなく,Aの確率80% Bの確率20% のような分類
n データがある確率分布から生成されているとする
u グループごとに確率密度関数を持っている
u 観測されたデータはそこから出てきたものだとする
43
ここまでのまとめ
n 機械学習 は 数値 をうまく分けるか推定する技術
u 分ける系は,基本的に距離や正解データにもとづいて
良い感じの境界線を見つけるようなことをする
p 教師あり は 正解データとの誤差を最小化する
p 教師なし は 近くの人同士でグループを作る
u 推定する系は,基本的に回帰分析
p 与えられたデータを全部通る・近くを通る関数を探して,
既知の値のセットから,未知の値を推定する
49
Slide 50
Slide 50 text
決定木
n 分類や回帰を行うための木構造を学習する
PC所持?
OS
プログラマ
年齢
持ち物 一般人 持ち物
yes no
UNIX/Linux >60
Other Other
アーティスト? 一般人
ペンタブ・MIDI
スパイ
スマホ
大学生
50
Slide 51
Slide 51 text
ランダムフォレスト
n 分類やクラスタリング,回帰を行うための木構造を学習する
u 特徴量のうち,いくつかをランダムに選んで(バギング)
それら小数の特徴量で決定木(弱学習器)をたくさん作る
u 決定木の多数決(アンサンブル学習)で最終の出力を定める
答えはA 答えはB 答えはC 答えはB
答えはA 答えはA 答えはB 答えはC
Aという判定が多いので,Aを採用!
特徴量が増えるほど,全部を生かそうとすると難しい…みたいなことが起きる。
弱学習器を多数用いることで,相互の欠点をうまく打ち消せるため高精度に!
51
Slide 52
Slide 52 text
XGBoost
n 分類やクラスタリング,回帰を行うための木構造を学習する
u ランダムフォレストと少し似ているが,入れ子構造
p ブースティング といわれるテクニックを用いる
u 2018年くらいから人気の手法で,迷ったらとりあえず使う位の勢い
うまく分類できない部分に 勾配ブースティング という手法で重みをつけて,
誤差補正用の決定木を作って,その補正用の…を何度か繰り返した後,分類をしていく…というイメージ。
勾配の部分で用いる 勾配降下法 は 別の回で学ぶ,ニューラルネットとも関連
ほしかった結果とのズレから
決定木のルールを見直し
ほしかった結果とのズレから
決定木のルールを見直し
ほしかった結果とのズレから
決定木のルールを見直し
最終的に,これらを組み合わせてジャッジ!
52
Slide 53
Slide 53 text
その他
n 線形回帰
u 回帰(数値の予測)につかう.初学者勉強用
p 変数をダミー化してステップワイズ選択などすると説明力は高い
n 階層クラスタリング
u クラスタリング手法,系統図のような形でクラスタを生成する
n ナイーブベイズ
u ベイズの定理に基づいて分類を行う
n LightGBM
u XGBoostの弟くらいの認識でOK
n CatBoost
u LightGBMの弟くらいの認識でOK
p 分類尺度の扱いが上手らしい
n k-Shape
u 波形のクラスタリング
n ARIMA
u 時系列データの予測
n Prophet
u 時系列データの予測
※ これらはごく一例で他にも様々な手法が存在。目的やデータの種類,手法の長短に照らして適切な手法を選ぶ。
53
関連する話題
n 次元圧縮
u 特徴量は高次元になりがちで,人間が理解したり,
効率的な学習のためにも低次元に写像できると便利
p 主成分分析,因子分析 (安心・安定の基礎的手法)
p 多次元尺度法(データ数が数百までならこれ)
p t-SNE(データ数が数万などでも余裕,だが非推奨)
p UMAP(数千万などでも大丈夫。多次元尺度法がダメならこれ)
n 異常値検知・変化点抽出
u 外れ値の検出や,時系列データの変化点を見つける
n 因果推論
u ベイジアンネットワーク,LinGAM
55
Slide 56
Slide 56 text
教師あり学習の評価
n 再現性と予測精度で評価
n 再現性
u 教師データをどのくらい正確に再現できるか?
n 予測精度
u 学習に使っていないデータをどのくらい予測できるか?
u わからないから予測するのでは?なにいってるの??
u 再現性が良いってことは,予測が上手なのでは?
56
Slide 57
Slide 57 text
過学習
n 学習データに過剰に適合すること
u 教師データはあくまで現実の一部
u 教師データの再現に注力し過ぎると未知データについて,
うまく分類できなくなってしまう
p ノイズなどもまじっているので100%再現がベストではない
粗すぎる 適切 過剰
57
Slide 58
Slide 58 text
予測精度の予測方法
n 正解がなければ,精度は計算できない
u 未知データの予測精度をどう算出するか?
u 持ってるデータ全部で学習をさせないといけない…
というルールはない
p もともと持ってるデータも,観測可能な全データの一部
p 観測可能な全データがあるなら,そもそも予測は不要
u 持ってるデータのうち例えば9割くらいで学習させ,
その結果を使って,のこり1割のデータの結果を予測
ホールドアウト という
明日の朝ご飯用に
おかずは全部食べずに
少し残しておこう
58
Slide 59
Slide 59 text
交差検証:クロスバリデーション
n しかしさらなる問題も
u 予測用に取り分けた1割が,偶然にも ものすごく偏った
異常値だったりしたらどうしよう…
u データの抽出範囲を何度か変えて調べれば,
この不安は解消できるはず!
テスト用
学習用
パタン1 パタン2 パタンn
…
各結果の平均値を
最終的な予測精度にする
データの分割数を k として
k-Fold の 交差検証 ともいう
左は 5 Fold の交差検証
予測精度1 予測精度2 予測精度n
59
Slide 60
Slide 60 text
交差検証が最強?
n 交差検証を見ると,これがベストな気が…
u データの投入順序が関係ないモノなら,
交差検証をおこなって置けば概ねOK
u 時系列のデータなどで,前の状態から次を予測する,
と言うようなケースでは,ホールドアウトしか使えない
60
目的に応じて,
適切な指標を選ぶ必要
Slide 61
Slide 61 text
正解の考え方もいろいろ
n ここまで予測精度と再現性とざっくり説明
n より正確には以下の4指標に整理できる
u 正解率 Accuracy :予測が当たった割合
u 適合率 Precision :正と予測したうち実際に正の割合
u 再現率 Recall :正であるものを正と予測した割合
u F値 F-measure :適合率と再現率の調和平均
61
正解率はわかるが,他はなにいってるか分からない…
Slide 62
Slide 62 text
正解の考え方いろいろ
n 正解・不正解を見る場合,上記の4状態が発生
u Aであるモノを正しくAに分類できた (TP)
u Aであるモノを誤ってA以外に分類した (FN)
u Aでないモノを正しくA以外に分類できた (TN)
u Aでないモノを誤ってAに分類した (FP)
62
Positive Negative
Positive 真陽性
Truth Positive (TP)
偽陰性
False Negative (FN)
Negative 偽陽性
False Positive (FP)
真陰性
Truth Negative (TN)
予測値
真値
(実際の値)
統計で学ぶ,第1種の過誤と第2種の過誤
なんでこんなことを考える必要が?
n 例えば,なにか危険な伝染病が流行…
u ケース1
p 感染していないのに,誤って感染と判定する確率 25%
p 感染している場合に,正しく感染と判定する確率 100%
u 正解率:0.875 = 約88%
64
Positive Negative
Positive 100%
Truth Positive (TP)
100-100%
False Negative (FN)
Negative 25%
False Positive (FP)
100-25%
Truth Negative (TN)
予測値
真値
(実際の値)
Slide 65
Slide 65 text
なんでこんなことを考える必要が?
n 例えば,なにか危険な伝染病が流行…
u ケース2
p 感染していないのに,誤って感染と判定する確率 5%
p 感染している場合に,正しく感染と判定する確率 90%
u 正解率:0.925 = 約93%
65
Positive Negative
Positive 90%
Truth Positive (TP)
100-90%
False Negative (FN)
Negative 5%
False Positive (FP)
100-5%
Truth Negative (TN)
予測値
真値
(実際の値)
Slide 66
Slide 66 text
なんでこんなことを考える必要が?
n 感染症では,感染してる人が出歩くとまずい!
u 正解率で見ると ケース2 の方がよい (93%) が,
正解率 88% でも ケース1 の方がよい
n これらは単に正解率を見るのでは不十分なケース
u ケース1:
p 適合率:80% 再現率:100%
u ケース2:
p 適合率:95% 再現率: 90%
66
目的に応じて,
適切な指標を選ぶ必要
Slide 67
Slide 67 text
距離
n 教師あり・なし を考える上で重要そうな概念
u なんやかんやで,正解との距離を最小・最大化するとか
距離が近いもの同士でまとめていく…といった話題が
多く扱われる
n 距離にもいろいろな種類が…
u L1距離(マンハッタン距離とも。格子上で左に3,上に1のようなもの)
u L2距離(ユークリッド距離とも。普通にいうところの最短距離)
u チュエビシェフ距離,ミンコフスキー距離,マハラノビス距離
u …
ここではこれ以上踏み込まないが,
距離を測る前に,そもそも適切な距離の種類も考える必要
67
これは何の講義だったか…
n 人工知能の講義だったはずで,最初は “知能” や,
“記号” などをいろいろ見てきた
n が,今回の 機械学習 は 知能 とどう関係するのか?
u 機械学習はむしろ 数学とか,統計の問題なのでは??
n そのとおり
u 機械学習は必ずしも人工知能だけのテーマではない
p 統計数理などの分野の問題でもある
u “記号は世界を同値類に分けるもの” であるとか,
知能は “環境との相互作用” という面からは人工知能
69
Slide 70
Slide 70 text
立場によって見方が変わる
n 機械学習の研究にも複数のアプローチ
u 知能の話とは独立に 数理最適化問題 などとして,
研究することもできるし,いろいろなことに使える
u 知能を探求する上で必要な要素として,
機械学習を研究したり使用することもできる
データサイエンティスト
人工知能研究者
同じ山を登っているが,
途中の景色を楽しみたい派 と
山ご飯を楽しみたい派 では
それぞれ目的が異なる。
※ 実際には別にどっちかに決めなくても,状況によって好き・便利な立場を取れば良いです。景色と山ご飯,両方もアリ J
70
Slide 71
Slide 71 text
使うだけならとっても簡単
n 操作は簡単4ステップ
u 1. データを用意する
u 2. プログラムにデータを読み込ませる
u 3. 所望の手法にかける
u おしまい
※ ライブラリに実装されている,基本的な手法をちょっと試す位の意味で。
※
食材を用意 自動調理 食べる
このくらいの簡単さ!
71
Slide 72
Slide 72 text
データを用意する
n 例えばこんな感じ
u 各列が何らかの特徴量に対応
今回はサンプルとして,2次元(特徴量が2つ)ですが,数百次元などでもOKです
3dnormdata.csv というファイルだとする プロットするとこんな感じ
K-Meansの例
72
Slide 73
Slide 73 text
ちょっとだけプログラムを書く
n 例えばこんな感じ
u ファイル名以外はコピペでOKなので覚えることは少ない
1番目のデータはクラス1,2番目も1,…最後は0,みたいな
クラスタリングした結果が記載されている
K-Meansの例
73
Slide 74
Slide 74 text
完成!
n これでおしまい
Original Data Clustered Data
K-Meansの例
74
Slide 75
Slide 75 text
データを用意する
n 例えばこんな感じ
u 各列が何らかの特徴量に対応,正解ラベルも用意
今回は既存の白ワインの特徴と品質データを利用,特徴量は11種類
RandomForest の例
白ワインの特徴データ 対応する品質データ
75
Slide 76
Slide 76 text
ちょっとだけプログラムを書く
n 例えばこんな感じ
u ファイル名以外はコピペでOKなので覚えることは少ない
RandomForest の例
テスト用にあらかじめ取っておいた
5件のデータを入れてみると,
それぞれ品質は… 6,5,5,7,6
ちなみに正解は… 6,5,6,7,6
76
Pythonを独習するには?
n paiza learning というサービスがオススメ
u 3分くらいの講義動画と,練習問題で勉強可能
p 基本的なことは無料で勉強できる
p 最悪スマホでも,頑張ればいけなくもない
78
https://paiza.jp/works/
「講座一覧」→「 Python3入門編」
Slide 79
Slide 79 text
Pythonを手軽に使うには?
n 自分の PC に Python をインストールするのは面倒
u Google の オンライン環境 colaboratory がオススメ
p データを読み込ませるところだけちょっと面倒
• だがそこさえ頑張れば,とても便利に使える。深層学習もOK!
p GMailのアカウントがあれば無料
79
https://colab.research.
google.com/
「google colab」で検索