データという土台
ディープラーニングは、とても賢く見えます。
画像を見分け、声を聞き取り、文章の意味を理解します。
さて、その賢さはどこから来るのでしょうか。
答えは、とてもシンプルです。
大量のデータです。
ディープラーニングは、自分で世界を観察して学ぶわけではありません。
与えられたデータを何度も見て、何度も間違え、そのたびに重みを少しずつ調整します。
その繰り返しの中で、だんだんと精度が上がっていきます。
つまり、学習とは、経験の積み重ねです。
経験が少なければ、うまく判断できません。
たとえば、犬を一度しか見たことがない人と、何百回も見ている人。どちらのほうが正確に見分けられるでしょうか。
ディープラーニングも同じです。
画像が数枚しかない……音声データがわずかしかない……その状態では、深いネットワークを十分に育てることはできません。
層が多いほど、調整するパラメータ(重み)も増えます。
だからこそ、それを安定して学習させるには、大量のデータが必要になるのです。
ここが、従来の機械学習との大きな違いのひとつです。
従来は、人間が「特徴」を設計していました。
でもディープラーニングでは、特徴そのものをデータから自動で学びます。
その代わり、とにかく多くのデータが必要になるのです。
計算資源という現実
ディープラーニングは、深い。
深いということは、計算がとても多いということでもあります。
ニューラルネットワークでは、
・入力された数字に重みをかけ
・それを足し合わせ
・次の層へと渡す
という計算を行います。
これを、すべての層で、すべてのニューロンについて、すべてのデータに対して行います。
しかも、一度だけではありません。何度も、何度も繰り返します。
たとえば、
・層が増える
・ニューロンの数が増える
・データが増える
このどれか一つが増えるだけでも、
計算量は一気に増えていきます。
すべてが増えれば、計算量は掛け算のように膨れ上がります。
だから、
深さ × データ量 = 計算量の増大
という関係が生まれます。
さらに、学習では「間違い」をもとに、重みを調整する必要があります。
これは一方向の計算ではなく、順方向に計算し、誤差を求め、逆方向にさかのぼって修正する、という工程を踏みます。
この「往復」が、すべてのデータについて繰り返されます。
だから、計算は重くなるのです。
ここで登場するのが、計算資源です。
CPU、GPU、TPUといった計算装置は、この膨大な計算を支える存在です。
もし計算の力が足りなければ、学習に何週間もかかる、現実的な時間で終わらない、ということも起こります。
ディープラーニングの発展は、計算装置の進化と切り離せないのです。
ディープラーニングが活きる場面
ディープラーニングは、大量のデータと計算資源を必要とします。
それだけ聞くと、「大変そうだな」と思うかもしれません。
ですが、従来の方法では難しかった問題に強いため、欠点を補ってあまりあるのです。
従来の機械学習では、人間が「どこを見るべきか」を設計していました。
たとえば、画像認識なら、
・エッジ(輪郭)を見る
・色の分布を見る
といった特徴を、人間が決めていました。
しかしディープラーニングでは、特徴そのものをデータから自動で学びます。これが大きな違いです。
だからこそ、
・画像認識
・音声認識
・自然言語処理
といった、複雑で正解の形がはっきりしない問題に強いのです。
たとえば、画像は、ただの数字の集まりです。
ですがその中には、
・線
・模様
・立体感
・表情
といった複雑な情報が含まれています。
層を重ねることで、単純な特徴から、抽象的な意味へと、段階的に変換できます。
だからディープラーニングは、画像認識で大きな成果を上げました。
音声も、波のデータです。
言語も、単なる文字の並びです。
でも私たちは、
・声のニュアンス
・文脈
・感情
を読み取ります。
こうした「多層的な意味」を扱うには、やはり「深さ」が必要です。
だから音声認識や自然言語処理でも、ディープラーニングが活躍しています。
ただし、どんな問題にも適しているわけではありません。
・データが少ない
・説明可能性が強く求められる
・計算資源が限られている
こうした場合は、別の手法のほうが適していることもあります。
ディープラーニングは万能ではありません。
でも、データが豊富で、問題が複雑なとき、その力は最大限に発揮されます。