本文へ移動

G検定(ジェネラリスト検定)

でぃーぷらーにんぐ

ディープラーニング

DL

Deep Learning

別称: 深層学習

ディープラーニング(深層学習)は、処理の層を何段も重ねたニューラルネットワークを使い、判断に役立つデータの表現を段階的に学び取る機械学習の手法です。どこに注目すればよいかという特徴の作り方まで、人が設計せずにデータから学ぶ点が大きな特徴です。

詳しい説明

何段もの処理層でデータの表現を学ぶ手法

ディープラーニング(深層学習)は、複数の処理層を重ねた計算モデルによって、データの表現を複数の抽象度で学習する機械学習の手法です。ヤン・ルカン(Yann LeCun)、ヨシュア・ベンジオ(Yoshua Bengio)、ジェフリー・ヒントン(Geoffrey Hinton)が2015年に発表した総説「Deep learning」も、深層学習をこのように説明しています。ここでいう表現とは、元のデータを判断に役立つ形へ変換した数値の並びのことです。

計算モデルとして使われるのは、主に多層のニューラルネットワークです。ニューラルネットワークは、入力された数値に重みを掛けて足し合わせ、その結果を少し変形して次へ渡すという単純な計算単位を多数つないだモデルです。データを受け取る入力層、答えを出す出力層、その間に置かれる隠れ層で構成されます。隠れ層を何層も重ねたネットワークが「深い」ネットワークであり、ディープラーニングの「ディープ」は、この層の重なりの深さを指します。

各層は、前の層が作った表現を受け取り、それを少しだけ抽象度の高い表現に変えて次の層へ渡します。画像で考えると、入力に近い層は画素の明るさの並びに近い表現を扱い、層を進むにつれて、形の部品や物体らしさのように判断に直接つながる表現へ変わっていくと捉えると分かりやすいでしょう。1つひとつの変換は単純でも、何段も重ねることで、入力と答えの間の複雑な関係を表せるようになります。

特徴を人が設計する方法との違い

機械学習では、生のデータをそのまま扱うのではなく、判断の手がかりになる量(特徴量)に変換してから学習させることが多くあります。ディープラーニングが広まる前の多くの手法では、この変換のやり方を人が専門知識をもとに設計していました。たとえば画像から物体を見分けるなら、どの模様や輪郭に注目するかを人が決め、その計算方法をプログラムとして書いておく必要がありました。

ディープラーニングでは、この変換そのものも学習の対象になります。各層のパラメータとしてデータから学び取るのは、どのような表現を作れば正しく判断できるかということです。手がかりを人が決め切らなくてもよい点が、特徴を手で設計する方法との大きな違いです。ただし、層の数や層どうしのつなぎ方といったネットワークの形は、人が決める必要があります。

誤差を小さくする向きへパラメータを動かす学習

ここでは、画像に写っている物体の種類を当てる教師あり学習を例に、学習の基本的な流れを説明します。教師あり学習とは、入力と正解の組(ここでは画像と、その画像に写っている物体の名前)を大量に用意し、入力から正解を出せるようにモデルを調整する学習のやり方です。

まず画像をネットワークに入力し、物体の種類ごとの点数を出力させます。次に、その出力が正解からどれだけ離れているかを1つの数値で測ります。この数値を計算する関数を目的関数と呼びます。学習の目標は、目的関数の値が小さくなるように、各層の重みなどの内部パラメータを変えることです。

そのために、パラメータを1つずつ少し増やしたときに誤差が増えるか減るかを表す値の並び(勾配ベクトル)を求め、誤差が減る向きへパラメータを少しずつ動かします。実際には、訓練データ全体ではなく少数の例ごとに勾配を計算して更新を繰り返す確率的勾配降下法(SGD: Stochastic Gradient Descent)がよく使われます。少数の例から求めた勾配は全体の勾配の近似にすぎませんが、更新を何度も繰り返すことで、全体として誤差の小さいパラメータへ近づいていきます。

各層の勾配を出力側から逆向きに求めるバックプロパゲーション

層が多いネットワークでは、どの層のどのパラメータを動かせば誤差が減るのか、その答えをどう効率よく求めるかが問題になります。この計算を担うのがバックプロパゲーション(誤差逆伝播法)です。ルカンらの総説では、前の層の表現から今の層の表現をどう計算すべきかを示すために、各層の内部パラメータを機械がどう変えるべきかを示すアルゴリズムとして位置づけられています。

仕組みの中心は、微分の連鎖律です。連鎖律とは、いくつもの計算をつないだ全体の微分が、それぞれの計算の微分の掛け算で求まるという性質です。まず出力層で誤差の勾配を求め、それを1つ手前の層へ、さらにその手前の層へと順に伝えていきます。各層では、後ろの層から受け取った勾配に、その層自身の計算の微分を掛け合わせて、自分のパラメータと自分への入力についての勾配を求めます。こうして出力側から入力側へ1回たどるだけで、すべての層の勾配がそろいます。

層を深くすることで生まれる難しさ

層を重ねるほど表現できる関係は複雑になりますが、学習は難しくなります。代表的なのは、誤差の勾配が入力側へ伝わる途中で極端に小さくなり、入力に近い層のパラメータがほとんど更新されなくなる現象で、勾配消失問題と呼ばれます。層の中で使う活性化関数の選び方や、訓練データにだけ当てはまりすぎて未知のデータで誤る過学習への対策など、深いネットワークを学習させるための個々の工夫は、それぞれの関連語のページで扱います。

また、教師あり学習として使う場合は、正解の付いたデータを多く用意する必要があります。学習で得られた各層の表現が何を捉えているのかは、人が設計した特徴量のように名前を付けて説明できるとは限らず、判断の根拠を人が読み取りにくい点にも注意が必要です。

機械学習やニューラルネットワークとの位置関係

ディープラーニングは機械学習の一種で、データから規則を学ぶという点では他の機械学習の手法と変わりません。そのうち、多層のニューラルネットワークを使い、表現そのものを学習するものがディープラーニングと呼ばれます。ニューラルネットワークは計算モデルの名前で、ディープラーニングはそのモデルを深く重ねて学習させる手法の名前、という関係にあります。層のつなぎ方を画像向けや文章向けに工夫した具体的なモデルは多数あり、それぞれ個別の用語として扱われます。

試験で問われること

G検定

  • 古典的な機械学習では判断の手がかりとなる特徴量を人が設計していたのに対し、ディープラーニングは多層のネットワークで表現そのものをデータから学習する、という違いを説明できるようにする。
  • ディープラーニングの「深さ」は入力層と出力層の間に重ねた隠れ層の多さを指し、各層が前の層の表現をより抽象度の高い表現へ変換していく、という捉え方を押さえる。
  • 深いネットワークの学習は、目的関数で出力と正解の誤差を測り、バックプロパゲーションで各層の勾配を求め、確率的勾配降下法でパラメータを更新する、という組み合わせで成り立つことを押さえる。
  • 層を深くすると勾配消失問題や過学習が起きやすくなり、それらへの対策(活性化関数の選び方など)を積み重ねてディープラーニングが発展してきた流れについて、関連語とあわせて整理する。
  • 人工知能、機械学習、ニューラルネットワーク、ディープラーニングの包含関係を正しく理解する。

最終更新日: 2026/09/23