yoshizaki

記者紹介

吉崎 亮介

株式会社Carat 最高執行責任者 舞鶴高専専攻科、京都大学大学院 情報学研究科修了。CEDEC2016登壇。学生時代に3つの研究室を渡り歩き、画像処理、音声解析、制御工学、ロボット工学、進化型計算、機械学習を専攻。応用事例を踏まえ、機械学習とその魅力を配信します。

機械学習を使用したい場合は、「まずディープラーニングでいこう」という流れがあります。
それぐらい人工知能や機械学習の代名詞となったディープラーニング。
果たして毎回ディープラーニングを使用することがベストなのでしょうか。
それとも何も考えずにディープラーニングを使用すると危険なのでしょうか。

「とりあえずディープラーニング」は研究の世界では正解

最近の研究論文事情になるのですが、機械学習系の論文を書く際には、提案するアルゴリズムの性能を評価してアピールする必要があります。
よくされる方法としては、その分野で使用されている有名なアルゴリズム2〜5個程度と比較し、複数の数値例のうち概ね優れている場合は、良い手法ですよといったアピールがされます。
しかし、あくまで相対評価であるため、比較対象のアルゴリズムの性能が良いか悪いかも実際のところよく分っていません。

そんな中、ディープラーニングがここ数年でブレイクスルーを起こしました。
ディープラーニングの良さは何と言っても、内部の構造がほとんどわかっていなくても、自動的に調整して、モデルが構築できるというところ。
これによって、業界ごとに特性が異なるため、それぞれに特化していた機械学習を用いた技術が、ほとんどディープラーニングで代替可能となりました。

そのため、ディープラーニングが多くの業界の閾値となる線引を行い、これよりも良い結果を実証できた場合、そのアルゴリズムは非常に優れていると言いやすくなりました。

そういった点で、全ての例ではないですが、「とりあえずディープラーニング」は研究の世界では正解といえます。

ビジネスに応用する際に気をつけるべきポイント3点

それでは、ビジネスに応用する際には「とりあえずディープラーニング」は正解なのでしょうか。

結論から言うと、正解と不正解の間だと思います。
当たり前の話ですが、時には正解、時には不正解。

ディープラーニングは良くも悪くも、あまり現場のデータに関する知見がなくても使うことができます。
そのため、多少精度は荒くても、スピード重視で攻めていく場合は、研究と同様、スタンダードを定めるという意味で使ってみるのが良いと思います。

では、どのようなときに使用すると危険であるかを紹介します。

前処理が適切か

「とりあえずディープラーニング」というフレーズをよく使うように、持っているデータをすべてディープラーニングの学習に使うことを見かけます。
「多少データがお粗末でも、ディープラーニングが内部で関係性を見出して、うまくやってくれるだろう」
これがディープラーニングの危険なところ1点目です。
なんでもかんでもディープラーニングという気持ちにさせるのが実は危険だったりします。

まず、ディープラーニングをはじめとした機械学習を使用する場合、『データの前処理』と呼ばれる処理が必要となります。
画像の場合はノイズを除去したり、不要な部分を取り除いたり、足りない点は補完したりします。
また業界の知識も重要で、医療画像の処理の場合は、まず男女で分けて、年齢で分けてなど、ひとつのモデルではなく、「20代男性のみで1つのモデル」、「40代女性のみで1つのモデル」といったように、事前知識をもとに、データを大まかに分類しておくことが多いです。

まず、ディープラーニングを過信しすぎず、データの前処理をしっかりと行いましょう。

内部の構造がわかっていないか

そもそも事前知識として、内部の構造がある程度わかっている場合があります。
たとえば、ワインの質は、アッシェンフェルターのワイン方程式として、その年の降雨量や気温の重み付きの足し算として表現されることが知られています。

このような場合、わざわざ非線形のテクニカルなディープラーニングを使用するよりも、簡単な線形モデルで十分かつ高精度が期待されます。

サンプル数が十分にあるか

ディープラーニングにおける最も大きな問題は、モデルの内部に含まれるパラメータが非常に多いことです。
このパラメータの多さが非常に柔軟に対応できる万能さを生み出しているのですが、これは諸刃の剣です。

直感的にわかると思うのですが、内部の構造が複雑であればあるほど、たくさんのデータがないとチューニングがうまくできません。
そのため、Webのデータなど膨大な量を確保できる場合には有用なアプローチですが、数十〜数百個程度しかデータがない場合にはうまくチューニングすることができませんので注意が必要です。
もちろん入力変数の数にもより、このあたりは以下のスライドや「次元の呪い」と調べると解説されています。

まとめ

機械学習を導入する際に抑えておくべき3つのポイント
・前処理は適切か
・内部構造がわかっていないか
・サンプル数が十分にあるか

この3点を意識すると、ディープラーニング以外にも適切なアルゴリズムを見つけられると思います。

なにかを解析する際に「とりあえずディープラーニングでいこう!」から、「データ量が十分だけど、内部構造がよくわかってないし、前処理はこれで大丈夫そうだから、とりあえずディープラーニングでいこう!」になると嬉しいです。

最後になりますが、それでもディープラーニングはやっぱりすごいです。