Submit Search
Upload
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
•
4 likes
•
1,950 views
Katsuhiro Morishita
Follow
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークを用いた識別(シングルラベル)の概要について説明しました。
Read less
Read more
Data & Analytics
Report
Share
Report
Share
1 of 37
Download now
Download to read offline
Recommended
シリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワーク
Katsuhiro Morishita
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
Katsuhiro Morishita
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
Katsuhiro Morishita
数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方
Katsuhiro Morishita
Pythonのパッケージ管理ツールの話@2020
Pythonのパッケージ管理ツールの話@2020
Katsuhiro Morishita
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
Katsuhiro Morishita
SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3
Katsuhiro Morishita
Google Colaboratoryの使い方
Google Colaboratoryの使い方
Katsuhiro Morishita
Recommended
シリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワーク
Katsuhiro Morishita
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
Katsuhiro Morishita
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
Katsuhiro Morishita
数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方
Katsuhiro Morishita
Pythonのパッケージ管理ツールの話@2020
Pythonのパッケージ管理ツールの話@2020
Katsuhiro Morishita
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
Katsuhiro Morishita
SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3
Katsuhiro Morishita
Google Colaboratoryの使い方
Google Colaboratoryの使い方
Katsuhiro Morishita
Excelでのグラフの作成方法re
Excelでのグラフの作成方法re
Katsuhiro Morishita
Pythonのmain関数
Pythonのmain関数
Katsuhiro Morishita
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
Katsuhiro Morishita
機械学習と主成分分析
機械学習と主成分分析
Katsuhiro Morishita
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Katsuhiro Morishita
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
Katsuhiro Morishita
オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施
Katsuhiro Morishita
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
Katsuhiro Morishita
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
Katsuhiro Morishita
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
Katsuhiro Morishita
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
Katsuhiro Morishita
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Katsuhiro Morishita
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
Katsuhiro Morishita
VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育
Katsuhiro Morishita
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
Katsuhiro Morishita
中心極限定理
中心極限定理
Katsuhiro Morishita
VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列
Katsuhiro Morishita
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
VBAで数値計算 編集後記
VBAで数値計算 編集後記
Katsuhiro Morishita
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列
Katsuhiro Morishita
More Related Content
More from Katsuhiro Morishita
Excelでのグラフの作成方法re
Excelでのグラフの作成方法re
Katsuhiro Morishita
Pythonのmain関数
Pythonのmain関数
Katsuhiro Morishita
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
Katsuhiro Morishita
機械学習と主成分分析
機械学習と主成分分析
Katsuhiro Morishita
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Katsuhiro Morishita
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
Katsuhiro Morishita
オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施
Katsuhiro Morishita
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
Katsuhiro Morishita
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
Katsuhiro Morishita
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
Katsuhiro Morishita
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
Katsuhiro Morishita
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Katsuhiro Morishita
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
Katsuhiro Morishita
VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育
Katsuhiro Morishita
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
Katsuhiro Morishita
中心極限定理
中心極限定理
Katsuhiro Morishita
VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列
Katsuhiro Morishita
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
VBAで数値計算 編集後記
VBAで数値計算 編集後記
Katsuhiro Morishita
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列
Katsuhiro Morishita
More from Katsuhiro Morishita
(20)
Excelでのグラフの作成方法re
Excelでのグラフの作成方法re
Pythonのmain関数
Pythonのmain関数
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
機械学習と主成分分析
機械学習と主成分分析
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
VBAとPythonで始める数値計算教育
VBAとPythonで始める数値計算教育
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
海洋調査用ブイの水深制御のためのPID制御パラメータの求め方
中心極限定理
中心極限定理
VBAにおける配列の データ構造と行列
VBAにおける配列の データ構造と行列
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
VBAで数値計算 編集後記
VBAで数値計算 編集後記
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
1.
Ver. 1.0, 2017-08-19 森下功啓 1
2.
更新履歴 • 2017-08-19 Ver.
1.0 release 2
3.
Series Index ML-01 機械学習の概要 ML-02
機械学習におけるデータの前処理 ML-03 ランダムフォレストによる自動識別 ML-04 機械学習の性能の定義と一般的な性能向上策 ML-05 ニューラルネットワーク ML-06 ニューラルネットワークによる線形回帰 ML-07 ニューラルネットワークによる非線形回帰 ML-08 ニューラルネットワークを用いた識別・分類 ーシングルラベルー ML-09 ニューラルネットワークを用いた識別・分類 ーマルチラベルー ML-10 ニューラルネットワークで画像識別 ML-11 ニューラルネットワークのチューニングの基本 3
4.
Re:識別(分類)問題とは? • 特徴ベクトルを基に、クラスを分類する問題を識別問題という 4 • 特徴ベクトルが数値やラベルという点は回帰問題と同じ •
正解が文字列や整数で与えられる「ラベル」という点が回帰問 題と異なる “ネコ” “イヌ” 学習器 学習器 ここでの「クラ ス」とは、”ネコ” とか”イヌ”のこと
5.
5 識別(分類)問題は更に シングルラベル分類問題とマルチラベル分類問題に別れる *正確には、識別(分類)問題といえばシングルラベルでの分類問題を指し、「シングルラベル 分類問題」とはほぼ言わないのだが、このスライドでは区別しやすくこう呼ぶこととする。
6.
シングルラベル分類問題と マルチラベル分類問題 • 写真に写っている物体が”イヌ”か”ネコ”かという単一のラベ ルに分類する問題は、シングルラベル分類問題という • 一方で、「SF」「アニメ」など、映画のジャンルの様に複数のラ ベルに分類する問題はマルチラベル分類問題という 6 タイトル
アニメ SF 映画版 押し プリンセス・プリンシパル ◯ ◯ ◯ ノーゲーム・ノーライフ ゼロ ◯ ◯ ◯ マルチラベルの例 入力画像 識別結果の正解 ネコが写った画像 “ネコ” イヌが写った画像 “イヌ” シングルラベルの例
7.
7 このスライドでは、シングルラベル分類問題を扱う
8.
8 さて、扱う問題領域を明らかにしたので、次は シングルラベル分類問題をNNで扱う上での定石 を見てみよう
9.
ラベルを含む問題はほぼ非線形問題 9 4次元ベクトルデータ 花のラベル(整数) 2 1 0 この変換を一次式だ けで実現は不可能 Irisの識別例 非線形な問題を扱えるアルゴリズムを使う
10.
正解ラベルをベクトル化する • 正解(整数)を非線形回帰問題として求められなくはない • しかし、正解はベクトル化した方が高性能となる •
正解をベクトル化すると、出力層におけるとあるユニットにつながる結合 係数を調整しても、他の出力層のユニットには影響せず、調整し易い • ∴正解ラベルをベクトル化する(これをOne-hot-encodingという) 10 教師データに含まれ る正解ラベル 2 1 0 virginica versicolor setosa Irisの識別例におけるOne-hot-encoding [0, 0, 1] [0, 1, 0] [1, 0, 0] このベクトルを出力層のユニット の出力として学習させる ベクトル化した 正解ラベル
11.
11 3層NNを使ったIris分類においてversicolor の特徴量を入力した場合の出力層の出力例 中間層 (隠れ層) 出力層 入力層 がくの長さ がくの幅 花弁の長さ 花弁の幅 setosa versicolor virginica 0.07 0.93 0.1
12.
NNにおける識別問題への対応 • ニューラルネットワークを用いて識別問題を解く場合、実現 したいことが非線形な変換なので、3層以上の構成として、 中間層には非線形な活性化関数を使う • また、出力層のユニットには0か1しか出して欲しくないので、 出力層の活性化関数はsigmoidを使う •
故に、入力する特徴ベクトルは次元ごとの正規化をしていな いとほとんど学習が進まない • 正規化しない場合は、活性化関数を全てLeakyReLUにすると良いか もしれないが、ノイズに弱くなるかもしれない • 出力層の出力を確率に変換するために、softmax層を使う 12
13.
Softmax層の役割 13 • 出力層の複数のユニットが同時に活性化している場合は、推定 結果の信頼性は低下する • 例えば、”ネコ”のユニットが最も活性化していても、他にも”イヌ”のユ ニットも活性化している場合は”ネコ”の可能性は下がる •
Softmax層は信頼性を反映した確率を計算する • 後述する、categorical_crossentropyを使った学習にも寄与する 中間層 (隠れ層) 出力層 ネコ イヌ 0.98 0.65 ・・・ 中間層 (隠れ層) 出力層 ネコ イヌ 0.98 0.05 ・・・ ネコのユニットは0.98と強く発火してい るが、イヌのユニットもそこそこ発火し ており、ネコの可能性が低い状態 ネコのユニットは同じ0.98だが、イ ヌのユニットは発火しておらず、ネ コである可能性が高い状態 小さい
14.
基本的なモデル構成のイメージ 14 活性化関数は ReLUやsigmoidなど 活性化関数は sigmoid 中間層 (隠れ層) Softmax層 入力層 出力層 ・・・ 中間層は1層以上 𝑥1 𝑥2 𝑥3 ⋮ 𝑥 𝑛−1 𝑥
𝑛 𝑦1 𝑦2 𝑦3 ⋮ 𝑦 𝑁−1 𝑦 𝑁 各次元毎に N(0,1)に調整し た特徴ベクトル 𝑦′1 𝑦′2 𝑦′3 ⋮ 𝑦′ 𝑁−1 𝑦′ 𝑁 𝑗=1 𝑁 𝑦′ 𝑗 = 1.0 * 𝑁は識別したいクラス の数でもあり、出力層 のユニット数 に等しい。
15.
Kerasでは、損失関数(目的関数)に binary_crossentropyか categorical_crossentropyを使う • 出力の誤差を定義するのが損失関数 • binary_crossentropy •
正解のベクトルに含まれる1と0を学習に使う • categorical_crossentropy • 正解のベクトルに含まれる1だけを学習に使う • ∴Softmax層とセットで使う • 一般的には、categorical_crossentropyが使われる • とはいえ、性能の良い方を使えば良い 15
16.
クラス間データ量のバランスを取る 16 クラス イヌ イヌ イヌ イヌ ネコ ←こんな教師データを1通り学習すると、”イヌ”は5回 学習されるが、”ネコ”は1回しか学習に使われない。 学習の過程で、本当は”ネコ”だけど”イヌ”と間違えて も全体の誤差は少ない。”ネコ”は1/5の重みしかない。 極端な例で言うと、”イヌ”のデータ100万個と”ネコ”のデータ1万個を 含む教師データの学習では、何を入力しても”イヌ”と答えても精度 99%を達成できる。これでは”ネコ”と”イヌ”を分類できなくてダメ。 クラスの識別能力を高めるには、学習データ内の各クラス の数を同数にするか、学習時の重みを調整する。
17.
17 な、長かった・・・・・
18.
18 ようやく、NNでシングルラベル分類問題に 取り組むための前提知識をインプットできた それではお馴染みのIrisを分類するサンプルコードを眺めてみよう
19.
Kerasを使ったIrisの分類例 19
20.
アヤメ(Iris)の分類問題 20 Iris versicolorIris setosa
Iris versinica 3種類の花の種類を自動的に識別したい
21.
Irisの4つの特徴量 • ガク片の長さと幅 • 花弁の長さと幅 21 https://www.kamikochi-vc.or.jp/learn/dictionary/dic_plants.html
22.
特徴量の散布図行列 花の種類毎(層別)に色を付けた散布図行列 setosaは完全に集団から独立しており、識別しやすそうだ。 22
23.
サンプルプログラムのダウンロード 23 1 2 Download: https://github.com/KatsuhiroMorishita/machine_leaning_samples
24.
24 • 以降のスライドでは、下記のプログラムを使った解説を行います • Irisの識別を行うサンプルです
25.
iris_learning_str_label.csv • 教師データのCSVファイル • 正解は文字列のラベルで与えてある 25
26.
iris_learning_num_label.csv • 教師データのCSVファイル • 正解は整数で与えてある •
注:Excelで編集したときに数値が丸まったorz 26
27.
iris_test.csv • 検証用の正解が付属していない未知データのCSVファイル 27
28.
learning.py • 教師データを学習するプログラム(スクリプト) • 教師データを学習データと検証データに自動的に分割 •
結果は教師データに含まれる正解ラベルに自動変換 28 200行もあって結構複雑→
29.
29 データの読み込み 予測結果をラベルに変換する辞書を作成 クラス毎の重みを計算 モデルを構築 学習の実行 検証用のデータの予測 検証用のデータの予測結果の保存 学習器の学習済み結合係数や モデル情報の保存 learning.pyのmain()だけ
30.
カスタマイズする際の調整項目 30 読み込むファイル名 学習回数やバッチサイズ モデル構造(飛んで行った先 の関数の記述を編集) 中間層の数 (活性化関数の指定を忘れないように) 中間層のユニット数 学習係数
31.
活性化関数は ReLU 活性化関数は sigmoid モデル構造 31 ユニット数 input_dim ユニット数3 ユニット数 output_dim 中間層 (隠れ層) Softmax層 入力層 Layer 0 Layer
1 Layer 3 出力層 Layer 2
32.
実行時に出力されるもの 32 学習に使ったデータと検証用のデー タに対するlossのepoch毎の変化 コンソールに表示された、検証デー タを使って作成された分割表 (上は数、下は割合) この例では、2つのversicolorを virginicaに誤って分類している。 ファイルにも保存されている 上から、モデルデータ,結合係数,正 規化用のパラメータ(平均と標準偏 差),ラベル変換用の辞書データ
33.
prediction.py • 未知データの属するクラスを推定するプログラム • 取り込むファイルは正解が付属していないことを想定 •
結果はprediction_rexult.csvに出力 33
34.
34 prediction.py データの読み込み モデル情報の読み込み 結合係数の読み込み 予測結果をラベルに変 換する辞書の読み込み 予測と結果の保存
35.
prediction.pyの実行結果 • 予測結果はprediction_result.csvに出力される 35 出力例
36.
36 予測結果をラベルに変換したりクラス間の重みを計算するなど の周辺機能のせいでプログラムが膨れてしまった。 このスライドでは、ニューラルネットワーク(NN)で識別問題を扱 う上での複雑さが際立ったように思う。Scikit-learn内のランダム フォレスト(RF)のシンプルさが目に染みる・・・。 だが、NNにはRFにはできない画像の識別がある。 次は画像の識別について見てみよう。 あ、その前にマルチラベル分類問題だった。。。
37.
37
Download now