• 検索結果がありません。

第13回 特徴学習

N/A
N/A
Protected

Academic year: 2021

シェア "第13回 特徴学習"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

機械学習

13 回 特徴学習

(回帰:交差検証)

白浜 公章

更新情報

2019.12.16

前回(第

12

回)は、コーディングの詳細で時間を使い切ってしまったので、

12

回に用意したスライドを第

13

回に転用

申し訳ないm(_ _)m

(2)

今日のポイント

(前回)

基底関数群による関数近似を、理想的なケースから実際のケースへ拡張

(理想的)関数全体をカバーするノイズのない大量の事例

(実際)まちまちの箇所しかカバーしないノイジーな限られた事例

(今回)

実際のケースにおける問題と解決方法

オーバー

/

アンダーフィッティング

交差検証(

Cross validation

実際に特徴学習に基づく回帰を行う上で、

必ず必要になってくる知識とノウハウ なので必ず抑えておくこと!

(理解するのは、非常に簡単)

minimize

𝑤0,𝑤1,⋯𝑤𝑀 𝑏 + 𝒇𝑝𝑇𝒘 − 𝑦𝑝 2

𝑃

𝑝=1

(3)

オーバーフィッティング

基底関数の数を増やして、モデルの表現力を上げると、

理想的な場合:目的の関数全体をカバーする大量のクリーンな事例が与えられている

常に、目的の関数をより正確に近似できる

実際の場合:まちまちの箇所しかカバーしないノイジーな限られた事例しか与えられていない

学習例に対する近似精度は向上するが、目的の関数とは限らない(オーバーフィッティング!)

(理想的) (実際)

求めたい関数は、𝑦 𝑥 = sin⁡(2𝜋𝑥)

• 𝑀 = 3個の多項式群による近似

• 𝑀 = 10個の多項式群による近似

注意してみれば、𝑀 = 10の方が、

学習例に対するラベルと予測値の 2乗誤差が小さいことが分かるはず

2乗誤差が最小」という制約しかない

minimize

𝑏,𝒘,Θ 𝑏 + 𝒇𝑝𝒘 − 𝑦𝑝 2

𝑃

𝑝=1

どういう形状の関数になるかは考慮外

目的とする関数が近似できるように、

適切に𝑴を設定することが大事!

コード 13_overfitting.ipynb参照

(4)

(余談)オッカムの剃刀( Occum’s Razor )

求める関数(モデル)は、

データに正確(柔軟)にフィットし、かつ

シンプルであるべきである!

物体の落下距離の回帰(ガリレオの落下法則)

𝑀 = 2個の多項式群によって、正しく近似された関数

(落下距離𝑦は時間𝑥の2乗に比例するので、

𝑥2に対する重みが1で、それ以外はゼロ)

人間の直感に合う

𝑀 = 1個の多項式群によって近似された関数

シンプル過ぎて、2乗誤差が大きい (アンダーフィッテイング)

𝑀 = 12個の多項式群によって近似された関数

学習データを完璧に近似しているが、

複雑すぎるし(オーバーフィッティング)、人間の直感に合わない (落下距離𝑦がマイナスにはなり得ない)

人間にとって予測がつく、納得がいく、

不必要に複雑でない

(5)

結局、何が問題なのか?

未知の事例に対応できていないことが問題!

“元の学習例”を学習例とテスト例の

2

種類に分割して、未知の事例に対する テストをシミュレーションする

この状況下で、色々な

𝑀

を試して、テスト例に対して最も精度が高いものを選ぶ ホールドアウト交差検証(

Hold-out cross validation

“元の学習例”の大部分を学習例にして学習したモデルは、全ての“元の学習例”を使って学習した モデルと類似しているので、選択した𝑀は後者でも有効であると仮定できる

(多くの事例を使って学習した方が精度が高いので、最終的には“元の学習例”を全て使用する)

紛らわしいが、これが一番正確な表現だと思われる コード 13_overfitting.ipynb参照

(6)

ホールドアウト交差検証

(入力) 𝑘:“元の学習例”を何分割するか、候補となる𝑀の集合

1. 元の学習例をランダムに𝑘分割し、1/𝑘をテスト例、残りの(𝑘 − 1)/𝑘を学習例に設定 2. それぞれの𝑀を用いて、モデルを学習・テストして、テスト例に対する最も精度が高い 2乗誤差が最小)モデルが学習できた𝑀を選択

3. 選択した𝑀を用いて、“元の学習例”の全て使用してモデルを学習し、未知の事例に備える

典型的には、“元の学習例”を𝑘 = 3~10分割することが多い

多くの事例を使用可能な場合

多くの事例(𝑘 = 31/3)をテスト例にしても問題ない。学習例も十分にあり、

2.3.で学習するモデルに大差なく、交差検定で正確なシミュレーションが行えていると考えられる。

少数の事例しか使用できない場合

少数の事例(𝑘 = 101/10)をテスト例にした方がよい。出来る限り多くの学習例を使用して、

2.3.で学習するモデルが類似してくるようにし、有意義なシミュレーションが行えるようにする。

コード 13_cross_validation.ipynb参照

(7)

ホールドアウト交差検証の例

フーリエ群を用いた関数近似で、次数𝐷 = 1~8の中で最適なものを選ぶ

1つの次数に対してsincosがあるので、基底関数の個数は𝑀 = 2𝐷

𝑘 = 3で“元の学習例”を分割し(青が学習、黄色がテスト)、各𝐷を試し、𝐷 = 5を選択している (つまり、𝑀 = 10)

𝐷 = 5で全ての“元の学習例”

を使用して学習された 最終的なモデル

𝐷(𝑀)が増えると、学習例に対しては、

常に2乗誤差が小さくなっていることに留意!

ただし、テスト例に対して有効かは別問題 𝐷 = 1,2のときは、特に

アンダーフィッティング

𝐷 = 6,7,8のときは、特に オーバーフィッティング

(8)

k 重交差検証( k-fold Cross Validation )

(ホールドアウト交差検定の欠点)

ランダムなので、学習例、テスト例に使用する事例が偏ってしまう可能性がある 実際には、有効でない𝑀を選択してしまう可能性がある

単一の学習例、テスト例だけでなく、色々なバージョンを試して、ロバストに𝑀を選択する

k重交差検証:𝑘個の分割のそれぞれをテスト例にして、ホールドアウト交差検証を𝑘回繰り返し、

平均誤差が最小となる𝑀を選択する(各回のホールドアウト交差検証をfoldという)

特に、事例数が少ない場合

𝑀に関して、それぞれのfoldにおけるテスト例に対する2乗誤差を計算し、平均を𝑀の総合的な誤差とする

総合的な誤差が最小となるものを𝑀とする

𝑀選択はロバストになるが、計算量は 𝑘倍になることに注意!

十分な事例が使用できる場合(例えば、1万個以上)は、

ホールドアウト交差検証でOK(これだけの量なので、

ランダムサンプリングによる分割でも、まず偏らない)

学習・テスト例へのそれぞれの分割をfoldということもある

(9)

k 重交差検証の例

(設定はさっきと同じ)

フーリエ群を用いた関数近似で、次数𝐷 = 1~8 の中で最適なものを選ぶ(1つの次数に対して sincosがあるので、基底関数の個数は𝑀 = 2𝐷 1番目のfold

𝐷 = 2が最適

アンダーフィッティングを引き起こす 2番目のfold

𝐷 = 5が最適 3番目のfold 𝐷 = 5が最適

3回のfoldの平均2乗誤差から、𝐷 = 5

(つまり、𝑀 = 10)が選択された。

1番目のfoldでたまたま選択された𝐷 = 2 排除できている。

青が学習例に対する2乗誤差

黄色がテスト例に対する2乗誤差

最適な𝐷による 近似結果

(全事例を使用)

各foldでの、

学習例が青

テスト例が黄色

(10)

1 個抜き交差検証( Leave-one-out Cross validation )

“元の学習例”の数が本当に少ない時、

𝑘 = 𝑃

重交差検証をすることがある

→ 1

個抜き交差検証:

1

つの事例をテスト例、それ以外を学習例という設定で、

学習・テストを

𝑃

回繰り返し、平均

2

乗誤差が最小の

𝑀

を選択する。

𝑃は“元の学習例”の数

多項式群による関数近似で、

基底関数の数(𝑀)を決めたい

(ガリレオの落下法則の データで𝑀 = 2が最適)

ただ、“元の学習例”に 𝑃 = 6個の事例しかない foldで、

青が学習例

黄色がテスト例

このfold以外では適切な𝑀 が選択されていて、平均を とって、適切な𝑀に最終決定 できている!

これまでは、最適な𝑀を発見するためだけに交差検証を使用してきたが、それ以外にも、

学習で最適化する以外のパラメータ(ハイパーパラメータ:例えば、正規化項に対する

重みなど)の最適値を選択するために使用できる! コード 13_cross_validation.ipynb参照

(11)

どの基底関数がいいの?

基底関数の選び方に関する一般的な法則はないが、

以下に、いくつかのガイドラインを示しておく。

1.

既知の法則からの類推で、データに線形、

2

乗、

3

乗などのパターンが存在しそうなとき

多項式群が有効である可能性が高い

2.

データに周期性のあるパターンが存在しそうなとき

フーリエ群が有効である可能性が高い

sinusoidal活性化関数を用いたニューラルネットワークもあり得る)

3.

人間の知覚機構(脳での処理の仕組み)が関係しそうなとき

ニューラルネットワークが有効である可能性が高い

4.

データの値域が小さい(例えば、

0

1

)とき

多項式群を使うべきではない:

𝑥 = 3

のとき

𝑥

20

= 3,486,784,401

となるように、

簡単に値域外の値になってしまい、多くの基底関数を使う意味がなくなる

5.

大量の学習例が偏りなくあり、ノイズも少ないとき

どの基底関数を使用しても

OK

(理想的なケースでの関数近似に近づく)

結局、全部試してみる方が早いことも多い

(12)

特徴学習の使いどころ

いつでも特徴学習(特に、ニューラルネットワーク)が有効な訳ではない!

データにもよるが、せめて1万個以上の事例がないと、普通の方法では無理!

どういう基底関数がいいのか分からず、調整可能なものを 使用するしかない

多くの学習例が必要(𝒃と𝒘に加えて、基底関数の 内部パラメータΘも最適化する必要がある)

パラメータが多い(表現力が高い)分、学習例に合わせて、

モデルの形状はどうとでもなる(オーバーフィッティングしやすい)

適切なモデルが学習できるだけの大量の偏りのない事例が必要

どういう基底関数を使えばいいのか固定できる

少ない学習例でもOK(最適化するのは𝒃と𝒘だけ)

転移学習、Fine-tuning、データ拡張などの名称で、少数の学習例から 一般性のあるモデルを学習する手法が研究されている

参照

関連したドキュメント

「聞こえません」は 聞こえない という意味で,問題状況が否定的に述べら れる。ところが,その状況の解決への試みは,当該の表現では提示されてい ない。ドイツ語の対応表現

・紫色に対するそれぞれの印象は、F「ミステリアス」が最も多い回答結果になり、両者ともに

このような状況の下で、当業界は、高信頼性及び省エネ・環境対応の高い製品を内外のユーザーに

小学校学習指導要領より 第4学年 B 生命・地球 (4)月と星

あり、各産地ごとの比重、屈折率等の物理的性質をは じめ、色々の特徴を調査して、それにあてはまらない ものを、Chatham

 文学部では今年度から中国語学習会が 週2回、韓国朝鮮語学習会が週1回、文学

具体的な取組の 状況とその効果 に対する評価.

具体的な取組の 状況とその効果 に対する評価.