深層学習について説明します!

ここでは、「深層学習」について解説します。「深層学習」は、昨今のAIブームで注目を浴び始めた技術です。一方で、「深層学習」とAIの違いが理解されていない場合も多いのではないでしょうか。

深層学習にまつわる単語としては、AIのほかにも、「機械学習」という用語が存在します。これら、3つの単語の意味する所は微妙に異なります。

具体的には、次のような内包関係が存在します。

深層学習の説明の前に、深層学習を内包する概念である、「AI」「機械学習」について知る必要があります。

人工知能(AI)とは

今日では人工知能(AI)に関する研究が進み、様々なメディアで人工知能(AI)の話題が取り上げられています。

しかし、よく耳にする人工知能(AI)という単語は、研究者のなかでも定義が異なります。

メディアが取り上げる人工知能(AI)という単語の意味は、特化型人工知能と汎用型人工知能の2つに大別されます。

特化型人工知能は、自動運転技術、将棋・チェス、対話などそれぞれ1つの機能に特化して稼働するものです。社会に浸透しつつあるのはこの特化型人工知能です。

汎用型人工知能は、特定の作業やタスクに限定せず人間と同様、あるいはそれ以上の汎化能力をもち、さまざまな状況に応じて自律的に動くものです。理想的な技術ですが、実用化にはまだまだ課題が多いのも現状です。

機械学習について

機械学習は人工知能(AI)をつくる、手段の一つです。

まず、以下のプログラムをご覧ください。

a = input() # プログラムへの入力
kansha = 'ありがとうございました。' # 感謝を示す日本語
response = 'どういたしまして' # 感謝に対する返事
if a == kansha:
print(response)

上記のプログラムはpythonで表記された、非常に簡単な会話プログラムです。このプログラムを実行した状態で、人間がコンピュータにたいして、「ありがとうございました。」と感謝する文章を入力すると、「どういたしまして」と返事をしてくれます。

kansha = 'ありがとうございました。' # 感謝を示す日本語

このように、特定の入力に対して決まったルールに則って応答する仕組みは、LINE公式アカウントのチャット機能などで用いられます。

しかし、これらは機械学習とは言えません

なぜなら、上の一文で「ありがとうございました。」と入力されたら、「ありがとうございました」と返すというルールに則って会話が実現されるからです。日本語をはじめ、言語はかなりバリエーションを持つ存在です。「サンキュー」や「どうも!」など感謝を指す表現は、他にも多数存在しますが、上記のプログラムに「サンキュー」と入力しても、返事をしてくれません。

このような問題に対して、例えば、感謝を示すあらゆる単語を一つ一つ定義していくことで解決することもできますが、膨大かつ柔軟すぎる言語にたいして、この方法は適切ではありません。このようなケースに置いて、トレーニングという解決方法を用いるのが、機械学習なのです。

機械学習では、膨大なデータをもとに自らトレーニングを行うことで、タスクの実行能力を獲得していきます。これまでに見てきた、感謝に関する例では、小説、記事を始めとする、大量の文章を学習することで、感謝の言葉を持つ文章、単語の持つ特徴を掴み、それを法則化していくのです。トレーニングするデータの量が多ければ多いほど、感謝の言葉を理解するための法則は洗練化されていき、より高い会話能力を獲得していくのです。

以上に述べたように、トレーニングによって特定のタスクを実行出来るようになることを、機械学習と呼ぶのです。

深層学習について

ここからは、機械学習の手法の一つである、「深層学習」についての説明に入ります。

機械学習が「トレーニングによって特定のタスクを実行出来るようになる」ことは先に述べたとおりであり、トレーニングの過程で、学習データをもとに、掴んだ特徴から法則化を行うことで、タスクの実行能力が洗練されていきます。その際に、特徴をつかむために、ニューラルネットワークを活用する機械学習のことを深層学習と呼びます。

深層学習の学習方法の前に、まず、ニューラルネットワークについて説明します。

ニューラルネットワークとは、人間の脳に存在するような神経網を数理的なモデルで表現したものです。

上の図は、簡単なニューラルネットワークの模式図です。左端の列が入力層、真ん中の層を中間層、右端の層を出力層と呼びます。また、層と層を繋いでいる矢印は、重みと呼ばれます。このように、ニューラルネットワークは、多数の層と重みが、複雑に組み合わさることで構成されています。

ここからは、深層学習が行うトレーニングと、タスクの実行方法について、前章で示した、感謝の言葉に関する例で確認します。

機械学習におけるトレーニングの目的は、特徴を掴み、それを法則化することですが、深層学習では、重みの調整によって実現します。詳しくみていきましょう。

まず、入力層にデータが入力されます。次に、重みを介して、隠れ層に入る値が計算されます。なお、重みには何かしらの計算式が入っています。隠れ層の値が算出されれば、同様にして、出力層の値も算出することが出来ます。

これにより、ある文章が入力された時の、出力層の値が算出されました。この時の出力層の値は、ランダムな値です。出力層の値を変えるためには、重みを調整する必要があります。

今回の例では、出力層の値を見ただけで、入力された文章が感謝を示すかどうかが分かるように、重みを調整することが、トレーニングに当たります。

感謝の言葉を入力すると「z1が0.5以上」ように、重みが調整をされたのであれば、タスク実行時には、z1の値を確認するだけで、入力された言葉が感謝を示すか否かを判断することが出来ます。

以上のように、特徴の法則化をニューラルネットワークの重みの調整によって実現する機械学習を、深層学習というのです。