執筆中

 第1章:イントロダクション

人工知能・機械学習・ディープラーニングとは?

人工知能を勉強したいです!という方にまずお伝えするようにしているのが、「人工知能」と「機械学習」、それから「ディープラーニング」という言葉の違いです。
特にこの言葉を混同しているからダメだというわけではないのですが、こちらを正しく認識しておくことで、これから何を勉強していくべきかといった道筋が見えると思います。

まずは、この3つの関係性を表す図を考えてみました。

まず、一番の大枠は人工知能です。
よく「AI」という言葉して聞いているかもしれません。
ちなみに、AIArtificial Intelligenceの略であり、そのまま日本語訳すると、人工知能というわけですね。

人工知能は人間の機能を計算機(コンピュータ)に再現させたいといったモチベーションから技術の開発がスタートしており、おそらく人造人間を作ることが最終的なゴールとなるのだと思います。
人間の機能を再現する以上は、「目」であったり、「耳」であったり、それこそ「口」であったりを持っているわけです。
これらに関わる全般の機能をコンピュータで再現させるためには、まずセンサーで情報を取得し、そして、その情報がなにものであるかを考える必要がでてきます。

この「なにものであるか」を考えるロジック判定機能の主要技術が「機械学習」です。
過去にこういった体験があったため、今回はこのようになりそうだなと、過去の情報に基づいて判断する部分です。
人間はこういったことを「経験」という言葉でまるっとまとめてなんとなく学習していますが、この過去の情報に基づいて、行動指針をあらためることはコンピュータにとって非常に難しいことだったりします。
※ ルールベースといって、人間側が決めたロジックに沿って行動指針を決める場合も人工知能と呼んだりもします。そのため,全ての行動指針をデータ駆動型で決めるわけではありませんが、それも人間の経験(人間の中でデータ駆動型で決定)から生まれるロジックであるため、どちらにせよ行動規則のロジックを決める部分はデータ駆動型といえます。

そして、機械学習では、ある入力された情報(X)に対して、どのような判断を下すか(Y)を決定します。
例えば、写真(画像)を入力とした際に、この画像内に「人間が写っていない(0) or 人間が写っている(1)」のように判断します。
このような入力Xと出力Yの関係性を見出すことを「機械学習」では担当しているわけです。
※ こちらは厳密には機械学習の中の教師あり学習の話ですが、ビジネスへの実用が多く進んでおり、イメージしやすいのは、この教師あり学習であるため、いまはこちらの認識のみで大丈夫です。

実は「機械学習」では、「入力Xと出力Yの関係性を見つける」といった一見もっともらしく聞こえるのですが、実際にどうやって関係性を見つけるの?といった具体的なアイディアではなかったりします。
この「具体的」にどのように、関係性を見つけるのかといったプロセスを事細かに説明する必要があり、こういった具体的な手順のことをアルゴリズムとよびます。

この機械学習アルゴリズムのうちの一つがディープラーニングとなります。
そのため、最近はなんでもディープラーニングといった流れがありますが、入力Xと出力Yの関係性を見つけるための技術はディープラーニング以外にも、重回帰分析であったり、SVMであったりと、たくさんあるわけです。

いかがでしたでしょうか。
人工知能やディープラーニングと一口に言っても、その位置づけが並列ではなく、包含関係にあることをお分かりいただけたでしょうか。

なぜ、ディープラーニングがこんなに脚光を浴びているの?

それでは、なぜ最近では、このディープラーニングのみにこんなに注目が集まっているのでしょうか。

この注目を後押ししたのは言うまでもなく、「囲碁で人工知能が人間に勝った」というニュースでしょう。
読者のみなさんも、このAlpha Goという技術をお聞きになられたことがあると思います。
このニュースは人工知能という技術の素晴らしさや現在のコンピュータ技術の現実的な性能を世界中に広める絶好の機会となりました。

ただし、このニュース以降、「人工知能は人間よりもすごい」といった先入観がついてしまい、技術相談として、「人間よりも精度の高い不良品検知センサーを作りたい」といった要望をお聞きすることがしばしばあります。

たしかに、Alpha Goでは人工知能が人間よりも強いという結果を示しました。
しかし、現実問題として、人間よりすごいAIは作ることは到底難しく、現実的なプロダクトに落とし込むのであれば、「現状の人間での認識精度が95%で、それを最終目標として90%を達成できればOK」ぐらいでないと、おそらくいつまで経ってもプロダクトは仕上がらないと思います。

話は逸れましたが、人間よりもすごいといった印象で注目の高まったディープラーニングですが、ちゃんと技術として注目を集めるに値する理由があります。
これはディープラーニング以前と以後の機械学習技術の違いを認識することで見えてきます。

まず、ディープラーニングも機械学習技術の一部であるため、入力となるデータXと出力となるデータYが与えられるという前提は同じです。

ディープラーニングが登場する前の機械学習(画像中の従来)は、データXが与えられた際に、まず特徴量と呼ばれる出力を予測するために必要そうだと思えるデータを抽出します。
例えば、画像から顔認識する例で考えると、画像の情報のままではなく、「顔を認識するなら目と耳と鼻を見つけておくべきだろう」といった具合に、元の画像から目と耳と鼻を抽出する処理を施してみたり、「顔の輪郭が重要そうだな」といった具合に、輪郭だけを抽出する処理を施してみたりといった具合です。

実際にその処理が有効であるかは、機械学習アルゴリズムの入力データとしてモデルを作って初めてわかったりするため、上手くいかないケースには、この特徴量の選択を再度行うといった手戻りが発生します。
よく言われている話でもあり、私自身の肌感としても、実際のデータ解析にかけている時間の80%程度をこの特徴量選択も含めた前処理にかけています。

それに対し、ディープラーニングの技術が画期的だった点として、この特徴量の選択を全て自動化したことにあります。
今まで人間が経験と勘で、「顔認識をするなら、この処理とこの処理と…」と本当に効果があるかどうかもよくわからないものを、ディープラーニングでは、「データがあるなら、そのデータに基づいて特徴量もこちらで決めますから」と人間側の手間を減らしてくれたわけです。
これには、2つメリットがあり、
・人間側の工数削減
・データから逆算した特徴量のため、精度の向上
です。

先ほどの手順がディープラーニングではこうなるわけです。

こちらのCNNが画像に特化したディープラーニングのことですが、本来であれば、これが理想的なデータ解析であったわけですね。

もちろん、最近の計算機のスペック向上がなければ、この技術も有限な時間内では計算を終えられないため、少し前までは机上の空論であったわけですが、最近では、数十万円で購入できるPCであれば、楽勝でこの程度の処理を実現することが出来るようになりました。

個人的には、この特徴量の選択が不要になったことが、ディープラーニングの普及を促した、非常に大きなポイントだと思っています。
※ 未だに人間側の知見があれば、ディープラーニングと言えど、データの前処理を挟むことは当たり前に行われていますが、、、

また、ディープラーニングの出現により、人間側ではどうやっても特徴量が見つけられない分野にも適用できるようになってきています。

わかりやすい例がPaints Chainerです。
Paints Chainerは、線画を入力すると、自動的に色を塗ったカラー画像として出力してくれるディープラーニングです。
実際に結構良い精度で色を塗ってくれます。
こちらでは、先ほどの顔検出のように「顔の輪郭を抽出して」といった人間側でわかりやすい処理ではありません。
そもそも色を塗るといった職人技を再現するには、どこにどのように着目するかすら全く検討がつかないものです(少なくとも私は)。
そのため、どのような処理をはさんで、特徴量を抽出するかといったことがわからないわけです。
しかし、そのようなケースにも、「この線画はこのように色を塗った」という入力とその結果だけディープラーニングに与えてあげれば、勝手に特徴量を見つけて、なんとなくうまく色を塗れるようなシステムを作ることができるわけです。

これがディープラーニングによって新たに開拓された市場でもあったりするわけです。

機械学習の3大トピック

さきほどまでは機械学習と一口にまとめてご紹介してきましたが、機械学習の中でも大きく3つにカテゴリが分かれます。
この3つの大カテゴリとその中の小カテゴリの位置づけを把握しておくだけで、実際にご自身のプロジェクトに使用される際に、どの手法を使っていくべきかが分かるため、まずこのポイントを抑えておくことをつよくおすすめします。

まず、機械学習は以下の3つの大カテゴリに分けられます。

  • 教師あり学習
  • 教師なし学習
  • 強化学習

読者のみなさんは、この3つの違いを説明することができるでしょうか。

教師あり学習

「入力となるデータ(X)と出力となるデータ(Y)がセットで揃っており、入力から出力を予測するモデルを作る」
これが教師あり学習です。
先ほどまで、機械学習の概念としてご紹介していたものがこちらにあたります。

そして、教師あり学習では、以下の2つのカテゴリに分けられます。

  • 回帰(Regression):数値を予測する
  • 分類(Classification):カテゴリを予測する

ご自身の課題が、この2つのどちらであるかを認識しておきましょう。

回帰とは「家賃78,000円」といった数値を予測する問題設定であり、分類は「赤ワイン or 白ワイン」といったカテゴリを予測する問題設定となっています。
ただこれだけのすごくわかりやすい違いですが、回帰か分類かによって使う手法が異なるため、勉強していくことが変わってくるため、効率良く習得するためにも、ご自身の課題が回帰分類かを意識しておきましょう。

教師なし学習

入力となるデータ(X)のみで、データの背後に存在する本質的な構造を抽出する
これが教師なし学習です。
要するに出力Yがないケースです。

出力Yがないのに、何から何を分析するの?と思われるかもしれませんが、よく使われるものとして、いかの2つがあります。

  • クラスタリング(Clustering):類似するデータごとにまとめる
  • 次元削減(Dimensionality reduction):複雑に影響し合う複数の変数をまとめる(こちらの文言はまた要修正)

なかなかこちらは使いどころが難しいのですが、教師あり学習の前処理として使用したりもするので、まずはこういった概念があることだけでも覚えておきましょう。

強化学習

「ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する」

こちらが機械学習のなかで異色の存在ですが、データ駆動型のはずが、基本的にはデータがない、もしくは、ほとんどない状態からスタートします。
「データがないのに何を学習するの?」と思われた方、大正解です。
強化学習では、データがないので、自分自身で動いてみてデータを収集し、その収集したデータを解析して、次どう動くかを考えていくといった考え方です。
要するに、「ルンバ」です。

機械学習は「学習」という言葉が使われているだけあって、どんどん賢くなっていくんでしょ?と思われがちですが、教師あり学習も教師なし学習も、あくまで過去のデータの規則性を見出すだけなので、どんどんブラッシュアップされていくことはありません。

そのため、過去と未来でデータの特性がガラッと変わってしまうシステムに対しては、良い結果を残すことができません。
逆に、「不良品検知」のような、「傷がある or ない」といったその検出したい事象が時間に寄って左右されないケースであれば、過去のパターンを未来に対して当てはめてもうまくいくわけです。

それに対し、強化学習では、常に最新の情報を取得しながら、どんどん賢くなっていくため、まさに多くの方が期待されている「学習」を実現する手段です。
これを取り入れたのが、まさに人間に囲碁で勝利したAlpha Goでもあります。

機械学習の導入事例の紹介

なんとなく機械学習という技術がわかってきたけれども、具体的に何に使われているの?といったことがまだ掴みきれていないといった方向けにどのような事例があり、それを実現するためには、どのように問題設定を行っているかを紹介します。

※ ここは後ほど詳細に書く

  • 写真の顔認識
  • メールのスパムフィルタ
  • etc…