SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Ver. 1.0, 2017-08-11
森下功啓
1
回帰問題とは?
• 特徴ベクトルを基に、値を推定する問題を回帰問題という
• 特徴ベクトルが数値やラベルという点は識別問題と同じ
• 正解が実数という点が識別問題と異なる
2
学習器
過去7時間の雨量 3時間後の河川水位
河川水位を予測する回帰の例
3
ニューラルネットワークを使って回帰問題は解けるが、
全て自前でプログラムを作るのは大変だ
そこで、Kerasというライブラリを使って楽をしよう
Kerasの概要
4
Kerasとは
• ニューラルネットワークの積層を直感的に実現
• 広く使われている
5
Kerasは,Pythonで書かれた,TensorFlowまたはCNTK,
Theano上で実行可能な高水準のニューラルネットワークライブ
ラリです. Kerasは,迅速な実験を可能にすることに重点を置い
て開発されました. アイデアから結果に到達するまでのリード
タイムをできるだけ小さくすることが,良い研究をするための鍵
になります.
-Keras Documentation https://keras.io/ja/
6
kerasを使えば、ニューラルネットワークは簡単に組める
ここでは、熊本市で隔週で開催されているオトナのプログラミング
勉強会で矢野氏が発表した解説スライドを見てみよう
7
From 0から作るDeep Learning勉強会(矢野氏作)
8
From 0から作るDeep Learning勉強会(矢野氏作)
9
From 0から作るDeep Learning勉強会(矢野氏作)
10
From 0から作るDeep Learning勉強会(矢野氏作)
11
From 0から作るDeep Learning勉強会(矢野氏作)
12
From 0から作るDeep Learning勉強会(矢野氏作)
13
From 0から作るDeep Learning勉強会(矢野氏作)
14
必要なことはほぼ全部書いてあるのだけど、、、
これだけでは分からないだろうから
重回帰式を求める例を見てみよう
Kerasを使って
重回帰式を求める
15
重回帰式とは
• 重回帰式とは、式(1)である
• ここで、 𝑥は特徴量を表し、𝛽はその係数である
• 予測値の計算に式(1)を使う
• ちなみに、重回帰分析は係数𝛽を行列計算により求める
16
𝑦 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + ⋯ + 𝛽 𝑛 𝑥 𝑛 (1)
*ここでの線形とは、直線という意味である。
**式(1)は1次式であるので、直線の式である
***重回帰分析は線形の式に回帰させるので線形回帰問題の一種である
17
これをKerasで解いてみる
𝑦 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + ⋯ + 𝛽 𝑛 𝑥 𝑛 (1)
サンプルプログラムのダウンロード
18
1
2
Download:
https://github.com/KatsuhiroMorishita/machine_leaning_samples
19
• 以降のスライドでは、下記のプログラムを使った解説を行います
• 重回帰分析問題用のサンプルです
regression_learning.csv
• 重回帰問題用に作成した学習用のデータ
20
特徴ベクトル
(説明変数)
正解
(目的変数)
21
regression_learning.csvで作成した散布図行列
重回帰分析では問題になるほどの多重共線性がみられる。
learning.py
• Kerasを用いて、学習を行うプログラム
22
23
学習データの読み込み
列の切り出し
x: 特徴ベクトル
y: 正解値のベクトル
学習済みのモデルを保存
結合係数を人が読める形で保存
モデル構築
学習の実行
24
出力層の活性化関数は指
定されていないのでlinear
この層(入力層)のユニット数はs-1個(入力する教師データに依存)
学習係数は0.05
1つの教師データ当たりの
学習回数は2000
200個の教師データを使って
結合係数を更新する
次の層(出力層)の
ユニット数は1個
バイアス用のユニットは
有効(標準で有効)
誤差関数は二乗平均誤差
学習中に状況を表示するなら1
結合係数の更新回数 = epochs / batch_size
モデル構造
25
出力層入力層
𝑥1
𝑦
1
Unit 0
Unit 𝑛
𝑤1,1
0
𝑤2,1
0
𝑤0,1
0
結合係数
Layer 0 Layer 1
出力層のユニットの活
性化関数は指定され
ていないので、linear
∴ ℎ 𝑧 = 𝑧
𝑦 = 𝑦1
1
= 𝑧1
1
= 𝑾1
1
∙ 𝑿
𝑥 𝑛
・
・
・
𝑾1
1
= (𝑤0,1
0
, ⋯ , 𝑤 𝑛,1
0
) 𝑇
𝑿 = (1, 𝑥1, ⋯ , 𝑥 𝑛) 𝑇ここで、
プログラムの中で、
nはs-1として表現さ
れていた
結合係数を求めれば、そ
れが回帰式の係数となる
𝑦 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + ⋯ + 𝛽 𝑛 𝑥 𝑛重回帰式
Unit 1
学習中の出力の見方
26
エポック数(学習の進
行割合が分かる)
誤差関数の値の
バッチ毎の平均
(小さいほど高精度)
学習終了時にlossの値が収束していないようであれば、学習回数(epochs)を増やすと良い。
学習結果の見方
27
[array([[ 0.11853985],
[ 0.25794539],
[ 0.24517672],
[ 0.44266531],
[ 0.1166774 ],
[ 0.49679297],
[-0.26336813],
[-0.54205322],
[-0.83572966]], dtype=float32), array([ 0.47580394], dtype=float32)]
𝑤 𝑛,1
0
, 𝑛 = 9
𝑤1,1
0
バイアス項 𝑤0,1
0
結合係数をコンソールに出力しているので、ここから重回帰係
数を読み取ることができる。なお、「weights.txt」にも同じ文字列
が出力されている。
ファイルに保存された学習器
• learning.pyを実行すると学習が行われ、学習済みの学習
器はファイルに保存される
• 保存されたファイルを使えば、いつでも学習後の学習器を
利用できる
28
保存されたモデル情報と、結合係数
modelの中身はモデル構造が記録
されたテキストである
param.hdf5の中身は結合係数が
バイナリ形式で記録されている
prediction.py
• 検証データの特徴ベクトルから正解を推定するプログラム
29
30
検証データの読み込み
検証結果を保存
検証の実行
数値の入った2次元配列を
文字列に変換する関数
学習器のモデルをロード
結合係数をロード
列の切り出し
x: 特徴ベクトル
予測結果の検証
• prediction.pyによる予測結果がresult_test.csvに出力される
• このファイルに記載された予測結果と正解の散布図を作成した
• 完全に予測と正解が一致していれば、完全相関となる
• 一次近似式の決定係数R2で予測精度を評価できる
31
予測値と正解の散布図の例
(横軸が正解、縦軸が予測値)
重回帰分析に対する
ニューラルネットワークの利点
• 普通の重回帰分析では、ほぼ完全相関な説明変数があると逆
行列を求めることができずに計算できない
• 高い相関のある片方の変数を使わないという手で回避できるけども
• NNでは、多重共線性があっても計算できる
• 相関のある変数間ではお互いの影響を補完し得るので、相関のある変
数の重み係数は不安定ではあるが、発散はしない
32
33
34
このスライドではKerasというライブラリを使って
ニューラルネットワークで重回帰係数を求めてみました。
如何だったでしょうか?少しはニューラルネットワークの
感触がつかめると良いのですが・・・・
さて、線形近似はできましたので、次は非線形近似に
トライしてみましょう。
参考文献
35
参考リンク集
• Keras 公式
• https://keras.io/ja/getting-started/sequential-model-guide/
• Iris
• http://aidiary.hatenablog.com/entry/20161108/1478609028
• Neural Networkでの失敗経験やアンチパターンを語る
• http://nonbiri-tereka.hatenablog.com/entry/2016/03/10/073633
• 目的関数(ロス関数)
• https://keras.io/ja/objectives/
• auto encoder
• https://elix-tech.github.io/ja/2016/07/17/autoencoder.html
• KerasでVGG16を使う 人工知能に関する断創録
• http://aidiary.hatenablog.com/entry/20170104/1483535144
• 技術力の有りそうな人のブログ
• CNNの隠れ層の可視化の記事も良いかもしれない
• DeepLearning系ライブラリ、Kerasがあまりにも便利だったので使い方メモ
• 最初に読むブログとしては網羅的で分かりやすいかも
• http://www.procrasist.com/entry/2017/01/07/154441 36
参考リンク集
• TensorFlowを始める前に知っておくべきテンソルのこと(追記:より一般的な話題へ)
• http://s0sem0y.hatenablog.com/entry/2016/12/01/223834
• scikit-learn で線形回帰 (単回帰分析・重回帰分析)
• pandasの使い方の参考にも良い
• http://pythondatascience.plavox.info/scikit-learn/%E7%B7%9A%E5%BD%A2%E5%9B%9E%E5%B8%B0
• [TF]KerasでModelとParameterをLoad/Saveする方法
• http://qiita.com/supersaiakujin/items/b9c9da9497c2163d5a74
• h5pyが必要だった
• Batch Normalization:ニューラルネットワークの学習を加速させる汎用的で強力な手法
• https://deepage.net/deep_learning/2016/10/26/batch_normalization.html
• Softmaxって何をしてるの?
• http://hiro2o2.hatenablog.jp/entry/2016/07/21/013805
• 機械学習におけるクラス分類問題の各関数の意味解説
• http://qiita.com/shunchan0677/items/d30e5206677f2068a468
37
Deep Learning Tools
38
http://pytorch.org/
https://chainer.org/
流行の兆しあり
日本で人気大

Contenu connexe

Tendances

FIT2012招待講演「異常検知技術のビジネス応用最前線」
FIT2012招待講演「異常検知技術のビジネス応用最前線」FIT2012招待講演「異常検知技術のビジネス応用最前線」
FIT2012招待講演「異常検知技術のビジネス応用最前線」
Shohei Hido
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門
Yohei Sato
 

Tendances (20)

『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
 
FIT2012招待講演「異常検知技術のビジネス応用最前線」
FIT2012招待講演「異常検知技術のビジネス応用最前線」FIT2012招待講演「異常検知技術のビジネス応用最前線」
FIT2012招待講演「異常検知技術のビジネス応用最前線」
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
 
カルマンフィルタ入門
カルマンフィルタ入門カルマンフィルタ入門
カルマンフィルタ入門
 
A systematic study of the class imbalance problem in convolutional neural net...
A systematic study of the class imbalance problem in convolutional neural net...A systematic study of the class imbalance problem in convolutional neural net...
A systematic study of the class imbalance problem in convolutional neural net...
 
物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発
 
もしその単語がなかったら
もしその単語がなかったらもしその単語がなかったら
もしその単語がなかったら
 
PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)
 
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages. Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
 
[DL輪読会]Model soups: averaging weights of multiple fine-tuned models improves ...
[DL輪読会]Model soups: averaging weights of multiple fine-tuned models improves ...[DL輪読会]Model soups: averaging weights of multiple fine-tuned models improves ...
[DL輪読会]Model soups: averaging weights of multiple fine-tuned models improves ...
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
機械学習研究の現状とこれから
機械学習研究の現状とこれから機械学習研究の現状とこれから
機械学習研究の現状とこれから
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
Kaggleのテクニック
KaggleのテクニックKaggleのテクニック
Kaggleのテクニック
 

Similaire à シリーズML-06 ニューラルネットワークによる線形回帰

Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo
 

Similaire à シリーズML-06 ニューラルネットワークによる線形回帰 (10)

Jenkins + awsで並列テスト
Jenkins + awsで並列テストJenkins + awsで並列テスト
Jenkins + awsで並列テスト
 
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
 
Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)
 
[DL輪読会]One Model To Learn Them All
[DL輪読会]One Model To Learn Them All[DL輪読会]One Model To Learn Them All
[DL輪読会]One Model To Learn Them All
 
AKSとTerraformでKubernetesクラスター作成
AKSとTerraformでKubernetesクラスター作成AKSとTerraformでKubernetesクラスター作成
AKSとTerraformでKubernetesクラスター作成
 
Docker and OpenVNet
Docker and OpenVNetDocker and OpenVNet
Docker and OpenVNet
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
 
Using Deep Learning for Recommendation
Using Deep Learning for RecommendationUsing Deep Learning for Recommendation
Using Deep Learning for Recommendation
 
NeurIPS2019参加報告
NeurIPS2019参加報告NeurIPS2019参加報告
NeurIPS2019参加報告
 
深層学習フレームワーク Chainerとその進化
深層学習フレームワークChainerとその進化深層学習フレームワークChainerとその進化
深層学習フレームワーク Chainerとその進化
 

Plus de Katsuhiro Morishita

Plus de Katsuhiro Morishita (20)

数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方
 
Pythonのパッケージ管理ツールの話@2020
Pythonのパッケージ管理ツールの話@2020Pythonのパッケージ管理ツールの話@2020
Pythonのパッケージ管理ツールの話@2020
 
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
 
SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3
 
Google Colaboratoryの使い方
Google Colaboratoryの使い方Google Colaboratoryの使い方
Google Colaboratoryの使い方
 
Excelでのグラフの作成方法re
Excelでのグラフの作成方法reExcelでのグラフの作成方法re
Excelでのグラフの作成方法re
 
Pythonのmain関数
Pythonのmain関数Pythonのmain関数
Pythonのmain関数
 
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
 
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
 
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
 
オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施オトナの画像認識 2018年3月21日実施
オトナの画像認識 2018年3月21日実施
 
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
 
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルーシリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
 
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
 
シリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワークシリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワーク
 
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
 
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
 
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
 
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
 
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
 

シリーズML-06 ニューラルネットワークによる線形回帰