世界一分かりやすいAI、ディープラーニングの話!~違いや概要について~

世界一分かりやすいAI、ディープラーニングの話!~違いや概要について~

はじめに

「AI」、「機械学習」、「ディープラーニング」。

なんとなく言葉として使っているけど、実はしっかりとはわかっていない人もいるのではないでしょうか。

これらを一からちゃんと理解しようとすると、歴史もあり、深すぎて一日あっても足りないでしょう。

ここでは、これら3つがどういった点で違うのか説明したあと、ディープラーニングについて、仕組み、テクニック、流れに分けてできるだけ優しく解説していきます!

 

初めてAIについて触れる人には、わかりづらい専門用語に心を折られるかもしれません。

しかし、専門用語から逃げて、AIを理解することはありません。

しっかりたちむかって、正面からぶち当たりましょう。

 

この記事をきっかけに実際にプログラムを書いてみたい!もっと詳しくディープラーニングについて学びたい!と思ってくれるように記事を書きました。

 

1.AI、機械学習、ディープラーニングの定義

「AI」、「機械学習」、「ディープラーニング」。

まずはこれらの定義を確認していきましょう。

 

AI:「計算(computation)」という概念と「コンピュータ(computer)」という道具を用いて「知能」を研究する計算幾何学(computer science)の一分野。

 

機械学習:人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のこと。

 

ディープラーニング:多層のニューラルネットワーク(ディープニューラルネットワーク、英: deep neural network)による機械学習手法。

 

参照:Wikipedia

 

これを読んで、「AI」、「機械学習」、「ディープラーニング」について「なるほど、わかった」ってなる人は、なかなかいないのではないでしょうか。

 

ちなみに、上に出てきた言葉では、「学習」、「層」、「ニューラルネットワーク」なんて言葉が大事になってきます。

 

ここからはこれらの「用語」含め、わかりやすく「ディープラーニング」について説明していきます。

 

2.よく聞く「AI」「機械学習」「ディープラーニング」。それらの違いと関係性って何なの!?

 

関係性を一言でいうと、「AI」の中に「機械学習」があり、「機械学習」の中に「ディープラーニング」があるという構成です。

しかし、「AI」と「機械学習」「ディープラーニング」同じ重さで見てはいけません。

 

AI研究が始まってから様々な技術が生まれてきましたが、「AI」は言葉通り人間の知能を人工的に模したものであるので、とても包括的なものです。

しかし、「機械学習」「ディープラーニング」はより技術的な話になっています。

 

また、機械学習の中にディープラーニングがあるように、ディープラーニングは機械学習の発展系のような感じで出てきました。

 

まずはこのあたりのことをざっくりと理解しておいてください。

 

2-1.「AI」と「機械学習」の違い

現在のAIブームが来るまでのAIというは専門家などの知識を大量に入力することで、その入力された知識に応じて仕事をしていました。

 

しかし、基本的にコンピュータは記号と意味を結び付けられないので、入力された知識以上のことはできず、例外を考えようとすると、膨大な例外の知識を入力しなければならず、いつまでも終わらないという事態が起きました。

 

そんな時に「機械学習」、「ディープラーニング」が生まれ、現在のAIブームが起きました。

「機械学習」が生まれたことにより、コンピュータに大量のデータを与えることで、自動的に「学習」の仕方を習得してくれるようになりました。

 

「・・・学習??」

「学習」といってもそんなに大したことではありません。

 

「学習」の手法はいくつかあるのですが、ここでは比較的わかりやすいクラス分類、クラスタリングを例に見ていきます。(ほかには、回帰や、次元圧縮などがある。)

 

ここでいう「学習」とは、「分類」つまり分けることです。

具体的にやっていることとしては、線を引いてるのです。

 

簡単な例を見てみましょう。

データが上の図のようにプロッド(点)されていた時に、それらを2つにわけるような分類器を作りたいとき、赤い線を引いてくれるというものです。

 

つまり、従来のAIと機械学習は以下の図のように表すことができます。

 

昔は分け方(ルール)を網羅的に入力することで、コンピュータに分類をさせていましたが、機械学習によって、大量のデータ(とその答え)を与えるだけで、コンピュータが線を引いてくれるようになった(分類の仕方を学習してくれるようになった)ということです。

 

2-2.機械学習の分類

機械学習は大きく下の3つに分けられます。

  • ①教師あり学習
  • ②教師なし学習
  • ③強化学習

 

それぞれ見ていきましょう。

 

①教師あり学習

ここでいう教師とは「出力データ」のことです。

出力データとは問題に対する「答え」のことであり、教師あり学習とは問題に対する答えが設定されているもののことを言いいます。

 

「2-1.「AI」と「機械学習」の違い」で出てきたクラス分類はここに当たります。

 

イメージが少しわきずらいかもしれませんね。

クラス分類の例を見ていきましょう。

 

ニュース配信を「スポーツ」、「経済」、「エンタメ」の3つのカテゴリに分けるという問題を考えていきます。

ちなみにこの3つがクラス分類の「クラス」であり、「出力データ」です。

 

大まかな流れは上の図のようになっています。

大量のニュースが入っているデータセットをコンピュータに学習させ、分類モデルを作ります。

そしてその分類モデルにほかの新しいニュースを入れると、「スポーツ」、「経済」、「エンタメ」の3つのカテゴリに分類してくれるというものです。

 

ほかの教師あり学習の例としては、手書き文字の認識や、犬と猫を見分けるというものなどがあります。

 

②教師なし学習

教師なし学習とは、問題の答えが与えられず、ただ入力データだけが与えられるというものです。

問題自体に答えはなく、入力データの中にある、未知のパターンやルールを学ぶことを目的としています。

 

「2-1.「AI」と「機械学習」の違い」で出てきたクラスタリングはここに当たります。

ちなみに、クラスタリングのクラスはクラス分類のクラス(class)ではありません。

クラスタリングを英語で書くとClustering。

Clusterには「群れ」という意味があり、クラスタリングは「似た者同士をグループ化する」と言い換えることができるでしょう。

 

クラスタリングの例を見ていきます。

あなたがeコマースサイトの運営をしているとします。

顧客に合った商品を勧めたいですよね。

そんな時に、顧客の購買情報などをもとに、顧客をカテゴライズするときに使えるのが、クラスタリングです。

教師なし学習を行ったところ、コンピュータは顧客を4つの未知のカテゴリに分類してくれました。

これらの未知のカテゴリを分析して、戦略を練ることができます。

 

③強化学習

強化学習とは、「行動を学習する仕組み」です。

ある「環境」の下で、設定した報酬(スコア)を最大化するようにエージェントに学習させるというものです。

エージェントは置かれた環境に対して何らかの「行動」をします。

そして、環境はその「行動」によって変化した「環境」の「状態」とその「行動」に対する「報酬」を与えます。

それを受け取った情報を踏まえてエージェントは、次の「行動」起こします。

これをずっと繰り返していきます。

 

強化学習の例としてはロボットの歩行制御システムがあげられます。

 

この例では「報酬」に、「歩けた距離」を設定するだけで、ロボットは自ら「行動」(ここでは歩き方、つまり、関節の角度や動かす速度)を変え、歩行距離が延びるように学習をしてくれます。

 

ちなみに世界チャンピオンの棋士を打ち負かしたアルファ碁は、強化学習にディープラーニングを組み合わせることによって作られました。

 

2-3.よく聞くニューラルネットワークって何なの?

ニューラルネットワークとは機械学習の一つで、人間の脳の神経回路を構造を真似することで学習を実現しようとするものです。

 

人間の脳にはニューロン(神経細胞)が何十億個とあり神経回路の巨大なネットワークがあります。

これらのニューロンは互いに結びつくことで神経回路という巨大なネットワークを構成しています。

 

このニューロンを模式化すると下のようになります。

ニューロンはほかのニューロンからシナプスを通じて、樹状突起から電気信号を受け取り、その電機が一定以上止まると発火して、次のニューロンに電気信号を伝えています。

 

これを少し数学的に考えると、発火しなければ0、発火すれば1と考えることができます。

数学が苦手な人はここで、「うっ。」となったかもしれません。

ここから本格的にニューラルネットワークについて説明していくので少し受け入れ態勢を作ってください。

 

まずは、一番簡単なニューラルネットワークのモデルである単純パーセプトロンについてみていきましょう。

 

人間の脳の神経回路は層になっていると考えられています。

人間の脳の層構造についての話は、ここでは少し話がそれてしまうので置いておきます。

 

ニューラルネットワークはそれにならって、シナプスから入力を受け取る部分を入力層、出力する部分を出力層と表現しています。

 

また、人間のニューロンが学習することによってシナプスの結合強度を変化させる役割として、このニューラルネットワークでは入力層と出力層をつなぐものとして「重みづけ」があります。

これはどれだけの電気信号(値)を伝えるかを調整するためのものです。

文字通り、重要なものほど影響力を持たせたいので「重み」も大きくなります。

 

そして、入力層で受け取った値に対してそれぞれ「重みづけ」をし、それらの値をかけ合わせ、出力層へ伝達していきます。

 

しかし、それだけだと、出てきた値は少し発火するのかしないのか、0なのか1なのか判断しずらいものになっています。

そこで出てくるのがシグモイド関数です。

シグモイド関数はオン・オフを数学的に扱いやすいようにするための関数です。

※層の間をどのように電気信号を伝播させるかを調整する関数(活性化関数)はほかにもあり、シグモイド関数はそのうちの一つ。

 

出てきた値をシグモイド関数にかけ合わせることによって、0~1の値をとるようにすることができます。

0~1というのは発火の強さを現しています。

 

ここまでついてこれましたか?

 

まとめると単純パーセプトロンの流れは以下のようになっています。

  • ・入力層で入力を受け取る。
  • ・受け取った値に重みづけをする。
  • ・それぞれを掛け合わせる
  • ・掛け合わせたものをシグモイド関数に当てはめる
  • ・出力層で値を出力する。(発火)

 

ここでよりイメージを確立させるために具体的な例でこの流れを確認しましょう。

 

参考:「人工知能は人間を超えるか」松尾豊

 

計算式:

入力層で受け取った値は、0.2、1.0、0.8、0.0。

 

受け取った値に重みづけをしそれぞれを掛け合わせる。

0.2×1.0+1.0×(-2.6)+0.8×0.5+0.0×4.0=-2.0

 

シグモイド関数に当てはめると、出力は0.1。

 

0.1という結果はほとんど発火しない状態を表しています。

 

単純パーセプトロンは入力層での入力をもとに出力層で出力を行うという非常にシンプルなものでした。

しかし、シンプルがゆえにシンプルな分類(線形分類)しかできません。

 

実際に分類を行うときは、もっと複雑な分類をしなくてはならないことも多いです。

そこで曲がりくねった線の分類(非線形分類)をできるようにしたのが多層パーセプトロンです。

多層パーセプトロンとは入力層と出力層の間に「隠れ層」と言わせる層をさらに追加したものです。

隠れ層と聞くと何かまた特別なことをしているのかと思ってしまいますが、電気信号を順番に伝播していくという仕組みは変わりません。

 

入力と出力の関係が、隠れ層の中に重みとして表現されているだけです。

ちなみにこれらの関係性を数学的には「関数」といいます。

つまり、隠れ層は入力と出力を対応付ける関数に相当しているといえます。

 

ちなみにディープラーニングとは、隠れ層をさらに増やしたニューラルネットワークのことです。

 

「なんだただ増やしただけ?ディープラーニング大したことないじゃん。」と思うかもしれませんがそれは大きく違います。

確かに隠れ層を増やすなんてことは誰もが思いつきそうなことです。

しかし、隠れ層を増やし、モデルの制度を上げるのは、簡単なことではなかったのです。

 

それについて詳しくは「3.ディープラーニングの仕組み。何がディープなの?」を見てください。

 

2-4.「機械学習」と「ディープラーニング」の違い

技術的なことは後々説明していくとして、ここでは、機械学習とディープラーニングの違い、つまり、ディープラーニングで何ができるようになったのかを説明していきます。

 

「2.よく聞く「AI」「機械学習」「ディープラーニング」。それらの違いと関係性って何なの!?」の導入で説明した通り、機械学習の中にあるディープラーニングです。

ディープラーニングは機械学習の一部(ニューラルネットワーク)を発展させた感じで出てきました。

 

では、従来の機械学習に比べて何ができるようになったのでしょうか。

 

一言でいうと、ディープラーニングによって、従来の機械学習では人間の手によって設計されていた「特徴量」を、コンピュータ自身が設計できるようになったということです。

 

「特徴量」とは何なのでしょうか。

「特徴量」とは機械学習の入力に使う変数(数値)のことです。

「特徴量」を設定するとは、数多くあるデータの中から対象に影響を与えるデータ、つまり注目すべき特徴を選び出す作業のことをいいます。

世の中には対象と関係のないデータも含めて、情報があふれかえっています。

それらをすべて使っていたら、時間も足りないですし、正しい学習とは言えません。

 

例えば、ある人の情報をみて、年収1000万以上の人と、以下の人に分類するとしましょう。

その時特徴量としては、住んでいる場所、性別、年齢などが挙げられるでしょう。

しかし、その人の情報はそれだけではありません。

身長、誕生日、よく着る服のブランドなども含まれています。

これらと年収との関係はあるのでしょうか?

コンピュータは誕生日と年収の関係性を理解することはできません。

ですので、この特徴量の選出という作業は人間がやっていたのです。

 

そして、この作業をコンピュータが自動的にしてくれるようになったのが「ディープラーニング」ということです。

 

特徴量設計ができるようになったことは、AI界では結構な大発明で、多くの研究者がやろうとしていた、できそうでできなかったことでした。

 

ディープラーニングの具体的なアルゴリズムについては「3.ディープラーニングの仕組み。何がディープなの?」を見てください。

 

3.ディープラーニングの仕組み。何がディープなの?

ディープラーニングとは機械学習の一つである、ニューラルネットワークの隠れ層の部分を「ディープに」重ねていったものだと説明しました。

 

「2-3.よく聞くニューラルネットワークって何なの?」、「2-4.「機械学習」と「ディープラーニング」の違い」でディープラーニングはニューラルネットワークの隠れ層を増やしたものだったけど、単純に見えるそれがなかなかうまくいかなかったと説明しました。

 

では何が問題だったのでしょうか。

 

ニューラルネットワークでは、出力の値と正解の値を比べ、その誤差を逆向きにフィードバックさせるような形で、重みづけを更新していました。

ちなみにこれを「バックプロパゲーション(誤差逆伝播)」といいます。

 

このやり方で隠れ層を増やしていくと、その誤差が正しく伝播していかないという問題が起きたのです。

その理由を詳しく説明するのはここでは省略させていただきますが(少し話が難しくなりすぎてしますので)、その理由の1つを簡単に少しだけ説明します。

その誤差というのはいくつかの項が掛け合わされてできたものです。

そしてその項の中にシグモイド関数を微分した関数が含まれています。

参照:https://imagingsolution.net/deep-learning/mathematics/derivative-of-sigmoid-function/

 

上のオレンジの線が微分した関数を表していますが、最大値0.25をとった後、下がり続けていることがわかります。

これは隠れ層をさかのぼっていくごとに伝播してく誤差が小さくなっていってしまうことを意味しています。

 

このような問題を解決するためには何か新しいアイデアが必要だったのです。

 

そこで出てきたのが自己符号化器(オートエンコーダ)です。

 

これは入力と出力が同じにする、というものです。

入力層と出力層が同じになるので、セットとして可視層と呼びます。

 

例えば、手書きの数字の識別する時を考えてみましょう。

普通の教師あり学習だと入力は手書きの数字の画像で、出力は数字となるが、オートエンコーダでは出力も手書きの数字の画像となるのです。

一見意味のないように思えるかもしれません。

 

では、その仕組みを見ていきましょう。

 

オートエンコーダは「情報圧縮器」と言い換えることができます。

つまり、オートエンコーダとは入力された「情報量」を圧縮するものなのです。

情報を圧縮するとはどういうことでしょうか?

これは、例えば、各都道府県の天気を予想したいときに、関東地方や中国地方などの各地方の平均から全国の天気を予想していくようなイメージです。

 

コンピュータは関東地方という概念を知りません。

層が深くなって行くにつれて、「埼玉と東京と神奈川の天気似てるな」と勝手に官という地方の県をまとめ始めるのです。

そして、まとまった県を人間がこれは関東地方だよとコンピュータに教えてあげるのです。

こうしてコンピュータは概念、つまり特徴量を獲得していきます。

 

実際の流れを「人工知能は人間を超えるか(著:松尾豊)」の例で説明していきます。

ここでは先ほど少し出てきた、手書きの数字の認識を目的とするものを考えます。

 

画像は28ピクセル×28ピクセル=784ピクセルとします。

情報圧縮のイメージとしては、これを100次元にするということです。

「ここらへんは全部黒でまとめられるな」という風にやっていくのです。(情報圧縮)

”””

 

 1層目は784次元の入力、100次元のそうであったから、2層目の入力は隠れ層の数と同じ、100次元のデータになる。

この100次元のデータを同じように入力とする。

そのため隠れ層を仮に20個とすると入力層の100次元のデータをいったん20個までに圧縮し、もう1度100次元のノードに復元するわけである。

 2層目の隠れ層には1段目の隠れ層で得られたものをさらに組み合わせてあものが出てくるから、さらに高次の特徴量が得られる(この部分を出力させるとより抽象的な画像が出てきます。)。

これを、さらに3段目の入力(および正解データ)として用い、得られた隠れ層を、さらに4段目の入力とする。

そうして次々と繰り返して、多階層にしていくわけである。

 

”””

このように、隠れ層を「ディープに」重ねていくのです。

上の層に行けば行くほどより抽象的な数字、つまり数字の概念的なものを獲得することになります。

これが「特徴量」なのです。

 

実は、人間のあたまの中でも同じようなことが行われています。

 

例えば猫を見たときも、耳や目などの高次の特徴量を取り出し、猫の概念を獲得しているのです。

 

そして、次元を戻して手書きの数字の画像(正解データ)と答え合わせをして、間違えるたびに重みづけを調整するのです。

これによって学習の精度を上げていきます。

 

4.サマリー

初めてディープラーニングについて触れる人は、専門用語が多くて少し読むのが大変だったかもしれませんね。

数学的なものは少しとっつきにくいかもしれませんが、意外と意味を知ってみると、大したことないようなことだったりします。

一度しっかり理解して、AI系の記事をすらすら読めるようになったら一気に楽になりますよ。

 

ここで説明した通り、ディープラーニングの発明は、世間をにぎわせているようにAI界でも結構な大発明でした。

しかし、大発明だからディープラーニングで「人工知能」を作れるようになる、とはいいがたいです。

ディープラーニングにもいくつか欠点はあるのです。

 

しかし、「人工知能」という巨大な壁に小さな穴をあけたのは確かでしょう。

 

そこからひびを入れて、崩し落とせるかもしれません。

 

もしかしたら最後の一押しはあなたかも知れません!?

 

5.まとめ

・機械学習が生まれたことにより、コンピュータに大量のデータを与えることで、自動的に「学習」の仕方を習得してくれるようになった。

・ディープラーニングによって、従来の機械学習では人間の手によって設計されていた「特徴量」を、コンピュータ自身が設計できるようになった。

・従来のニューラルネットワークでは隠れ層を増やすには問題があったが、事故符号化器(オートエンコーダ)によってその問題を解決し、ディープラーニングはブレイクスルーした。

 

AI検定カテゴリの最新記事