最先端ディープランニング活用事例大集合! - Deep Learningオールスターズ2017 -
ニューラルネットワークのその次へ
2つ目の講演は、Rettyの氏原さんによる「ニューラルネットワークのその次へ」。
氏原淳志(うじはら・あつし)/Retty株式会社 エンジニア。1983年生まれ。高知県出身。京都大学薬学部卒。株式会社数理技研での勤務を経て、2015年にRettyへ入社。クラフトビール好き。
「ディープラーニング」と聞くと、「ニューラルネットワーク」が思い浮かぶ方が多いかもしれません。しかし、今回氏原さんが紹介するのは「Deep Forest」という手法。まずはその事前知識として「決定木」と「Random Forest」について氏原さんは解説します。
「決定木」とは「YES-NOチャート」のようなもの。あるデータセットがあった場合、そのデータセットをどんどんきれいに分割して、最終的に分類や判別を行う手法です。
「Random Forest」は、この「決定木」を複数つかった手法です。まず、トレーニング用のデータセットから、決定木の数だけサブセットをランダムに取り出し、それぞれの決定木で学習させます。そして推論のPhaseでは、すべての決定木に同じデータを投げて、その結果の平均を答えとするのが「Random Forest」の手法です。
本講演のメインテーマである「Deep Forest」とは、「Random Forest」や、分割さえもランダムな「Completely-Random Tree Forest」を複数・多層にして使う手法です。
その構成には、「Deep Forest」の入力層である「Multi-Grained Scanning」と「Deep Forest」の全結合層的なものである「Cascade Forest Structure」があります。
「Random Forest」は機械学習ライブラリ「scikit-learn」に実装が公開されています。氏原さんはそれを重ねて「Deep Forest」を作成し、「Retty」の口コミを分類する実験を実施しました。
そこから得られた「Character-level CNN」との性能差を比較した結果は次の通りです。
- Character-level CNN:63.0%
- Deep Forest:69.5%
上記より「Deep Forest」は少ないデータ量でも同等の精度が出せるとわかりました。ただし、データが大きくなると「Character-level CNN」の方が精度は高く、そもそも「Deep Forest」にはデータが多いとメモリが対応できないなどの課題があります。
それでも、「Deep Forest」には次の3点においてメリットがあると氏原さんは指摘します。
- 各決定木でそれぞれの学習コストが低コストで速い
- GPU不要
- 各決定木がそれぞれ独立しているので、マルチホストで分散させて学習可能
これらを踏まえて、氏原さんは「Random Forest」が全てのデータを一気に学習する「バッチ学習」にしか対応できていないことがそもそもの問題だと捉え、それさえ解決できればミニバッチ処理で大量データをも扱えると考えました。
そこで、氏原さんが実験を始めたのが「Random Forest」をオンライン学習へ対応させた「Mondrian Forest」です。実際に「scikit-learn」のIrisデータ分類してみると、オンライン学習の「Mondrian Forest」でも「Ramdom Forest」と同じくらいの精度を達成することができました。
現在、氏原さんは「Mondrian Forest」に「Deep Forest」を使った「Deep Mondrian Forest」を開発しています。最後に今回の取り組みを振り返り、氏原さんは次のようにまとめました。
- ディープラーニングはニューラルネットワークだけじゃない
- 「Deep Forest」は分散学環境に向いている
- 「Mondrian Forest」で「Deep Forest」を実装したらビッグデータを大量のマシンで並列処理する基盤が作れそう
当日の氏原さんのスライドはこちらに公開されています。
Deep Learningの世界に飛び込む前の命綱
休憩を挟んで、続いての講演はTISの嘉村さんです。
嘉村準弥(かむら・じゅんや)/TIS株式会社 戦略技術センター エンジニア。機械学習や自然言語処理についてリサーチ、システム開発の業務改革を目指すプロトタイピングを担当。ツーリング好き。
ディープラーニングの領域が盛り上がっている昨今ですが、「まず機械学習から学習していくほうが得策ではないか」と嘉村さんは説明します。
嘉村さんは機械学習とディープラーニングを性能比較するために、映画レビューデータの公開データセット「IMDB」を用いて、その文書が肯定的か否定的かを推定する極性判定を行いました。ここでの機械学習とはニューラルネットワークではなく、「Naive Bayes」による手法です。
実験ではまずは肯定、否定のデータを与え、文章や単語の出現率を学習、文章中に出てくる割合からカテゴリーを推定します。先行研究の論文によると、設定によっては正解率は86.59%を示しており、「Naive Bayes」とサポートベクターマシンを組み合わせると91%の正解率を出すことができています。
実装には「scikit-learn」を利用し、文章を2単語で区切る「Bag of Bigrams」方式を採用。その結果、正解率は87.9%と論文と同等の性能を示すことができました。
それではディープラーニングではどこまでの正解率を出せるのでしょうか。
今回は文章のような不定長な連続データについて、勾配消失・ハッサン問題を軽減して学習することが可能である「LSTM(Long short-term memory)」という手法を用いました。実装には「Keras」を使用。すると、予想に反して「LSTM」の正解率は80.8%と「Naive Bayes」には及ばない結果が。
そこで正解率と損失をプロットしてみると、過学習が原因のひとつとして考えられることがわかります。そこで、嘉村さんはパラメータチューニングによる解決を図りました。
ところが、整を重ねても性能が思うように上がりませんでした。嘉村さんは今回の取り組みに関して次のように振り返ります。
- ベースラインに近づけるのも難しい
ディープラーニングを用いれば、すぐに性能が出ると思っていたが勉強が必要 - 延々とパラメータの調整に取り組む危険性
既存の機械学習手法の結果から客観的に取り組みを見直すことができる
ディープラーニングを導入する場合は、性能向上の目安を機械学習などからあらかじめ設定し、比較対象や代替案を用意しておくことが必要だとまとめました。
嘉村さんの当日のスライドはこちらに公開されています。
次のページ :
ファッションアイテム検索における深層学習の活用