ディープラーニングと機械学習の違い
ここまでは、ディープラーニング:deeplearning(深層学習)の利用や特徴について解説しましたが、この節では、「機械学習」と「ディープラーニング」の違いについて紹介します。
AIと機械学習とディープラーニングの区分け
まず、機械学習とディープラーニング(深層学習)はどのように違うのか、「AI(人工知能)」との違いも含めて説明します。

この図を見ると、AIと機械学習とディープラーニング(深層学習)は互いに異なるものではなく、AIが機械学習を内包し、機械学習はディープラーニング(深層学習)を内包しています。
つまり機械学習とディープラーニング(深層学習)の違いとは、ニューラルネットワークを用いるという制限がある機械学習かどうかです。ディープラーニング(深層学習)が制限付きの機械学習です。
機械学習と深層学習(ディープラーニング)の違いについてイメージはつかめたと思います。ここからは細かい違いを確認するために機械学習と深層学習(ディープラーニング)の仕組みについて、詳しく説明します。
機械学習の詳しい仕組み
機械学習は人工知能(AI)をつくる、手段の一つです。
まず、以下のプログラムをご覧ください。
a = input() # プログラムへの入力
kansha = 'ありがとうございました。' # 感謝を示す日本語
response = 'どういたしまして' # 感謝に対する返事
if a == kansha:
print(response)
上記のプログラムはpythonで表記された、非常に簡単な会話プログラムです。このプログラムを実行した状態で、人間がコンピュータにたいして、「ありがとうございました。」と感謝する文章を入力すると、「どういたしまして」と返事をしてくれます。
kansha = 'ありがとうございました。' # 感謝を示す日本語このように、特定の入力に対して決まったルールに則って応答する単純な仕組みは、LINE公式アカウントのチャット機能などで用いられます。
しかし、これらは機械学習とは言えません。
なぜなら、上の一文で「ありがとうございました。」と入力されたら、「ありがとうございました」と返すというルールに則って会話が実現されるからです。
日本語をはじめ、言語はかなりバリエーションを持つ存在です。「サンキュー」や「どうも!」など感謝を指す表現は、他にも多数存在しますが、上記のプログラムに「サンキュー」とテキストを入力しても、返事をしてくれません。
このような問題に対して、例えば、感謝を示すあらゆる単語を一つ一つ定義していくことで解決することもできますが、膨大かつ柔軟すぎる言語にたいして、この方法は基本的に適切ではありません。
このようなケースに置いて、トレーニングという解決方法を用いるのが、機械学習なのです。機械学習では、膨大なデータをもとに自らトレーニングを行うことで、タスクの実行能力を獲得していきます。やり方はこれまでに見てきた、感謝に関する例では、小説、記事を始めとする、大量の文章を学習することで、感謝の言葉を持つ文章、単語の持つ特徴を掴み、それを法則化していくのです。トレーニングするデータの量が多ければ多いほど、感謝の言葉を理解するための法則は洗練化されていき、より高い会話能力・対応精度を獲得していくのです。
以上に述べたように、トレーニングによって特定のタスクを実行出来るようになることを、機械学習と呼ぶのです。
更に機械学習について詳細を知りたい方は以下の記事をご参照ください。
ディープラーニングの詳しい仕組み
ここから、いよいよ本題である「ディープラーニング」の仕組みの説明に入ります。
機械学習が「トレーニングによって特定のタスクを実行出来るようになる」ことは先に述べたとおりであり、トレーニングの過程で、学習データをもとに、掴んだ特徴から法則化を行うことで、タスクの実行能力が洗練されていきます。その際に、特徴をつかむために、ニューラルネットワークを活用する機械学習のことをディープラーニングと呼びます。
ディープラーニングの学習方法の前に、まず、ニューラルネットワークについて説明します。
ニューラルネットワークとは、人間の脳に存在するような神経網を数理的なモデルで表現したものです。

上の図は、簡単なニューラルネットワークの模式図です。左端の列が入力層、真ん中の層を隠れ層、右端の層を出力層と呼びます。また、層と層を繋いでいる矢印は、重みと呼ばれます。このように、ニューラルネットワークは、多数の層と重みが、複雑に組み合わさることで構成されています。
ここからは、ディープラーニングが行うトレーニングと、タスクの実行方法について、前章で示した、感謝の言葉に関する例で確認します。
機械学習におけるトレーニングの重要な目的は、特徴を掴み、それを法則化することですが、ディープラーニングでは、重みの数字を調整によって実現します。詳しくみていきましょう。
まず、入力層にデータが入力されます。次に、重みを介して、隠れ層に入る値が計算されます。なお、重みには何かしらの計算式が入っています。隠れ層の値が算出されれば、同様にして、出力層の値も算出することが出来ます。
これにより、ある文章が入力された時の、出力層の値が算出されました。この時の出力層の値は、ランダムな値です。出力層の値を変えるためには、重みを調整する必要があります。
今回の例では、出力層の値を見ただけで、入力された文章が感謝を示すかどうかが分かるように、重みを調整することが、トレーニングに当たります。感謝の言葉を入力すると「z1が0.5以上」ように、重みが調整をされたのであれば、タスク実行時には、z1の値を確認するだけで、入力された言葉が感謝を示すか否かを判断することが出来ます。以上のように、特徴の法則化をニューラルネットワークの重みの調整によって実現する機械学習を、ディープラーニングというのです。