機械学習における「leakage」とは?【15分で徹底解説】
- leakageって何?
- leakageの改善方法を知りたい。
- 過学習がどうしても改善しない。
機械学習において、leakageは非常に重要な知識であり、知っておく必要があります。
しかし、「leakageが原因で研究が上手くいかない」と研究が失敗してしまったりするケースは非常に多いです。
私は、これまでleakageが原因で上手くいっていない事例や研究発表をいくつも見てきました。
こんな失敗は絶対にしないでほしい!
そこでこの記事では、「機械学習におけるleakageについて」まとめて解説します。
この記事を読めば「機械学習におけるleakage」の全てが分かります。
leakageとは
leakageとは、直訳すると「漏れ、漏洩」です。機械学習で言うleakageは「情報漏洩」の意味です。
一言で説明すると、機械学習におけるleakageは訓練用データセットの中に、テスト用のデータセットが含まれている状態のことを言います!
具体的に説明していくと、上の図のように訓練用データの中に、仮テストデータやテストデータが含まれてはいけないということです!
訓練データの中に、テストデータが含まれるということは、答えを知っている。
つまり、カンニングし放題の状態であるという事になります。
これは大問題ですね!
わざとLeakageをおこす人はいないですが、気づかないうちに、情報が漏洩している(=訓練データにテストデータが含まれる)場合があります。
よくある事例
上の図のように、元画像100枚の画像に対して、回転、反転、ノイズなどのデータの水増し(Data Augmentation)を行うことにより、500枚に増やし、その後、シャッフルして訓練データ400枚、仮テストデータ50枚、テストデータ50枚にデータセットを分割しました。
データの水増しは、画像を増やしたと考えてください!
何が問題でしょうか?
▶ 訓練データにテストデータの一部が混入してしまう
これが問題ですね!
1枚の画像から複数枚が生成されているので、画像全部を増やしてシャッフルしてから訓練用、仮テスト用、テスト用に分割してしまうと上の図からも分かるように訓練データの中に混入してしまう可能性があります。
このように機械学習におけるleakageは非常に大きな問題です。
機械学習におけるleakageの特性を理解することは、研究をしていく上で非常に重要になりますので、理解しておく必要があります。
leakageの実例
1つ目の項目で、leakageについて説明し、leakageの問題点について理解できたと思います。
ここからは、実際にleakageが起きてしまっている事例について紹介したいと思います。
▼ MRIを用いた深層学習の論文
この論文を、こういった形で紹介するのは研究チームに対して非常に申し訳ないので、あまり紹介したくはないのですが、この論文は肝腫瘍の診断のために有用な深層学習モデルを開発したという素晴らしい論文であります。
この論文は、非常に精度の高い結果の出ている素晴らしい論文で、39年の専門医Aと7年の専門医Bの人間が診断を行った場合の、感度、特異度をこの深層学習モデルは超えたという素晴らしい結果を出しています。
しかし、こういった精度がかなり高い論文には問題があることがあります。上図からも分かるようにTestsetをそのままValidationに使用して学習させているためここで、leakageが起こってしまっています。
leakageの問題点
これまで、leakageについて勉強し、実際にleakageが起こっている事例を紹介してきました。
ここで、改めてleakageの問題点について紹介していきたいと思います。
leakageについてしっかりと知っていないと上の図のような悲劇が起きてしまいます。
また、なかなか医療(専門分野)と人工知能(AI)の分野どちらともに精通している人材が少ない現状があり、間違った研究が普及していることに繋がっています。
こうした現状が、AIに仕事を奪われてしまうという情報が世の中に溢れている原因とも言えると思います。
2つの分野を理解していないと片方だけでは、こうした研究の落とし穴に気づくことが出来ないのです。
せっかくの努力や実績が無駄になってしまう事もあるので、leakageについてしっかりと理解をし、これから研究や開発をしていく上で、leakageに気をつけていきましょう。
また、今のうちから2つの分野を学んでおくことで他にはない人材になることが出来ます!
leakageの解決策
leakageについて理解できたところで、ここからはleakageの解決方法について解説していきます。
leakageを起こさないためにもしっかりと理解しておく必要があります。
解決法① データセットをしっかり分割する
上の図のように元のデータセットを学習させる際には、訓練用のデータとテスト用のデータの2つに分割する必要があります。
当たり前な事ですが、重要なことなので覚えておく必要があります。
さらに大前提として、「モデルの学習には、テストデータについての情報を一切知らない」ことが望ましいとされています。
つまりは、上図のように、データセットを仮テストデータ(検証用:validation)、真のテストデータに分けるとさらに良いという事になります。
解決法② 水増しの際は訓練データのみ!
水増しするのは、訓練データのみにする!
これが解決策であり、必ず守るようにしてください!
上の図のようにすることで、leakageを防ぐことが出来ます。
まとめ
今回の記事では、「機械学習におけるleakageについて」まとめて解説しました!
leakageについては、この記事を見てもらえたら完全に理解できると思うので、ぜひ参考にしていただけたらと思います。
コメント