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