ぴよ猫ちゃんの機械学習

AI、人工知能、機械学習について色々記事にしています。

ディープラーニングの効果を上げる3つの方法

こんにちはー。管理人のピヨ猫でーす。

疑問

最近はビッグデータの時代だから人の手でデータの分析なんて無理じゃん。だから流行りのディープラーニングを使ってみているんだー。 だけどさー、思ったより正しく分析してくれないんだよ。何でかなー。

f:id:shibayu2002:20190310112521j:plain

ディープラーニングも万能ではないんだ。正しい使い方を理解しないと、分析精度は上がらないよ。ディープラーニングをする上で絶対に抑えておきたい基本的な考え方を、分かり易く説明するね。

 

1.ディープラーニングの仕組み

ディープラーニングは一言で言えば、『コンピューターに入力データと結果(出力データ)を与えて、求め方をコンピューターに考えさせること』です。
ディープラーニングの話から少し横道にそれますが、海外の学校の勉強方法に答えをあらかじめ教えておいて、求め方を考えさせるというものがあるそうです。
日本では、算数の授業で「1+2= 〇」の〇を答える勉強をしますが、海外では「1に何かをしたら答えが3になった。1に何をしたのでしょう?」と教えるそうです。
日本の教え方の場合は、答えは3の一択です。
海外の教え方の場合は、答えは複数あります。2を足したでも良いですし、3を掛けたでも良いです。他にも答えはあります。
日本の教え方はa + b = cという方式を知っているのが前提で、方式を使って答えを出させる、方式を丸暗記させる学習方法です。
海外の教え方は方式を丸暗記させるのではなく、方式を考えさせる学習方法になります。

ディープラーニングの学習方法は、上記の海外の勉強方法に似ています。
入力データ(変数)と出力データ(答え)を与えて、どういう計算をすれば入力データと出力データの関係を表せるかをコンピューターに考えさせます。
ディープラーニングのイメージ】
ディープラーニングのイメージ

ディープラーニングブラックボックス型のAIと呼ばれています。
法則を求める作業ですが、人は法則が分かったら、どういう法則(方程式)が成り立っているのか説明してくれますが、コンピューターは法則が分かっても教えてくれません。法則を調べて、新たな入力データ(変数)を与えてあげれば、学習した法則を使って答えを出してくれますが、どういう法則を使っているかは教えてくれません。AIは自分の専売特許を教えない秘密主義者です。

2.ディープラーニングの精度を決める3つの要素

ディープラーニングの精度を決める要素は3つあります。

  • ネットワークモデル
  • 試行回数
  • 入力データ (★ これが一番重要です。)

の3つです。
先ほどの海外の算数の教え方を例にして考えてみましょう。
「1に何かをしたら答えが3になった。1に何をしたのでしょう?」と質問しても、足し算も掛け算も知らない子供は答えを導き出せません。 ある程度、質問内容を答えられる子に質問する必要があります。
ディープラーニングも同じで、画像解析をしたいのか、音声解析をしたいのか、為替の予想をしたいのか等の目的で使うネットワークモデルが変わります。例えば画像解析をする場合はCNN、為替の予想をする場合はリカレントネットワークという、ネットワークモデルを用います。

次に、試行回数についてです。コンピューターに同じ勉強を繰り返させると、精度が悪くなることがあります。これを過学習と言います。
先ほどの算数の例を使うと、答えを考えさせ続けると、1+2、1×3、1- 1 + 3、・・・と答えが色々あって、どれを選んで良いかわからなくなるようなものです。厳密には勾配降下法の仕組み上、極点を通り過ぎるとか何とか難しい理由があるのですが今回は説明を割愛します。勉強し過ぎも良くないという話です。

最後の3つめの入力データについてです。 最後も算数の例を使って説明します。「1に何かをしたら答えが3になった。1に何をしたのでしょう?」という質問だけしたら答えがいっぱいありますね?
法則を見つけたいわけですから、1つの答えだけでは、導き出した法則が正しいか検証しようがありません。なので、法則を求める場合は複数の問題(データ)に対して検証します。
1〇△=3、2〇△ = 4、3〇△ = 5の〇と△は何かと言えば、〇は+、△は2ですね。
これと同じでディープラーニングを行う場合には、色々なデータをコンピューターに与えてあげる必要があります。

3.ディープラーニングで使うモデルの選択方法

ディープラーニングでは自分でモデルを作ることが出来ますが、基本的には既にあるモデルを利用するのが良いです。
世界中の非常に頭の良い人達が日夜効率的なモデルを考えているので、ネットワークモデルは自分で考えるより効率的と言われるモデルを使った方が絶対に良いです。
なお、もっと効率的なネットワークモデルを考えて世を驚かせたい、AIをもっと賢くさせたいという意欲がある方は是非モデルを作るもの良いと思います。

19年4月時点では

  • 画像解析をする場合はCNNの発展形のLeNet
  • 時系列データの解析をする場合はRNNの発展形のLSTM(Long short-term memory)

を使うのが良いと思います。

4.ディープラーニングの試行回数について

以下の学習曲線を見て下さい。

学習曲線 ※ 図はSONY Neural Network Consoleの管理コンソール画面

学習が進むにつれ、Training Error (訓練データに対するエラー)は減ってきていますが、Validation Error(テストデータに対するエラー)は増えています。
訓練データは答えが用意されているもので、テストデータは(疑似的な)未知のデータです。 学習するほど、未知のデータに対しての正答率が下がってしまっています。これが過学習です。

過学習を防ぐ方法にはドロップアウトとかearly stoppingなどの技法があります。early stoppingは早めに学習を打ち切るという、実施するのが簡単な手法ですが、ノーフリーランチ定理(なんにでも適用できるすげー良い方法)と言われているので、過学習を防ぐにはearly stoppingを行うのが良いです。

5.ディープラーニングの入力データの改善方法

ディープラーニングの精度を上げるには入力データ(教師データ)を良くするのが近道です。

  • データ量を増やす
  • データのパターンを増やす
  • データの特長を分かり易くする

まずデータ量は増やしましょう。10件や100件で機械学習をしても精度は増えません。
そもそもデータ量が100件程度ならAIにやらせる必要もありません。1万件程度は用意しましょう。
そんなに用意できない場合は、手元にある画像を傾けるなり色を変えるなりして増やすのも一つの手です。

データのパターンも同じ話です。同じデータを1万件集めても何の意味もありません。出来る限り沢山のデータパターンを用意しましょう。
そんなに用意できない場合は、手元にある画像を傾けるなり色を変えるなりして増やすのも一つの手です。

最後にデータの特長を分かり易くするということも考えましょう。
ディープラーニングはコンピューターが特徴を見つけてくれる仕組みではありますが、特徴が分かり辛ければコンピュータも特徴を見落とします。

以下の2つの画像を見て下さい。
入力データのスケール変更前 入力データのスケール変更後

どちらの画像が特徴がありますか? 恐らく、下の画像の方が、それぞれのグラフで少し違いがあるなと思われたことと思いますが、実はこれ同じデータです。 スケールを変えているだけです。
同じデータでも特徴を分かり易くすることで学習精度は変わります。学習精度が上がらない場合は試してみてください。

注. スクショの取るタイミングの都合で実際にはちょっと違うデータです。

6.どうしても分析精度が上がらない場合はどうする?

モデルは精度の高い物を使っている。学習の思考回数も調整した。入力データは沢山集めたし解析し易い工夫もした。
でも学習精度が上がらないんだよー。という場合は、どうすれば良いでしょうか?

実は、今私がその状態に陥っていて困っているので、私が知りたいのですが・・・(-_-;) が、その場合にはモデルを見直すしかないと思います。
初心者がモデルを見直すのは非常に難しいので、ツールを使ってみるのも一つの手だと思います。
SONY Neural Network Console には自動でモデルを生成して試行してくれる機能があるので、試してみると良いと思います。
コンフィグタブ(Global Config)のStructure Search(構造探索)をオンにすると、SONY Neural Network Consoleが自動でモデルを生成し試行してくれます。

f:id:shibayu2002:20190407132942p:plain
構造探索

余談です。
今、FXの将来予想を過去データからしていて精度がどうしてもあがらず、実はそもそもFXって過去データに特徴量はなくてランダムウォークなんじゃね?
FXはチャート分析だけで勝てるとかいうけど、ぶっちゃけ嘘じゃね?たまたま勝てているだけじゃね?もしくはチャートだけじゃなくてファンダメンタルも無意識にでも見てるんじゃね?
とも思うのですが、決めつけるのも時期早々なので、もう少し頑張ろうと思っています。
ディープラーニングは人が見つけられないようなデータの特長も見つけてくれるツールなので、特徴が無いのでは?と思われていたことにも新たな発見をしてくれると期待します。

f:id:shibayu2002:20190310112521j:plain


↓↓↓ この記事に記載のことをもっと詳しく知りたい場合はこの本がお勧めです。このブログの記事で毎回紹介していますが、機械学習をする方には是非読んでほしい本当に良い本です。

深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS) [ 一般社団法人日本ディープラーニング協会 ]

価格:3,024円
(2019/4/3 21:03時点)
感想(1件)