前回までの学習で、人工知能の基礎と機械学習の基本概念について理解を深めました。次に進むのは、AI技術の飛躍的な進化を支えるディープラーニングです。
ディープラーニングは、機械学習をさらに高度にした技術であり、近年のAI革命の中心にあります。
ディープラーニングは、人間の脳の神経ネットワークをモデルにしたニューラルネットワークを使い、複雑なパターンや関係性を捉える力を持っています。
これにより、画像認識や音声認識、自動翻訳など、従来の技術では難しかった高度なタスクを可能にしてきました。
この章では、ディープラーニングの仕組み、ニューラルネットワークの構造、そしてどのようにしてAIが複雑な問題を解決できるのかを学んでいきます。
ディープラーニングの世界は広く奥深いですが、基礎をしっかり理解することで、AI技術の可能性がさらに広がるでしょう。
1.ディープラーニングの基本的な仕組み
ディープラーニングの最大の特徴は、精度の高い結果をくために必要な情報(特徴量)をデータから自ら抽出できることです。
この点が従来の機械学習手法との大きな違いです。
例えば、下記の図のような、画像から犬と猫を見分けるというタスクがあったとします。
従来の機械学習手法を用いた画像認識手法では、特徴量の設計がかなり大変になります。
画像の「線の曲がり早合」や「小さな領域の明暗」「輸部」を数値化するような学習データを準備しなければいけません。
さらに、「耳がこのような形、ひげがこの角度であれば猫である」のように特徴を1つひとつ人間が細かく指定しなければいけません。
これに対して、画像認識にディープラーニング技術を活用する場合は、単に「犬」が「猫」と正解をラベル付けされた画像を大量に用意してモデルにインプットするだけで作業は完了します。
ディープラーニングは、「各領域の明暗」のような基本的な特徴量から、対象物を分類するための詳細な特徴量まで、全て自ら認識・整理することができます。
ここまで読み進めた皆さんは、特徴量を自ら認識・整理できるディープラーニングとはどんな仕組みで動いているのか気になることでしょう。
その仕組みは今後詳しく解説することにして、ここでは少しだけ触れておきます。
2.ディープラーニングとニューラルネットワーク
ディープラーニングに使われているアルゴリズムはニューラルネットワーク (NeuralNetwork)がベースになっています。
ニューラルネットワークは、人の神経構造を模したネットワーク構造をしており、「入力層(Input Layer)」「隠れ層(HiddenLayer)」「出力層(Output Layer)」の3種の層から成り立っています(下記図を参照)。
隠れ層は「中間層」とも呼ばれます。
ディープラーニングの実体は、隠れ層を多数組み合わせたような、非常に深い層を連ねた複雑なニューラルネットワークです。
歴史的な発展段階を経て、「深層学習」や「ディープニューラルネットワーク」と呼ばれるようになりました。
ニューラルネットワークの入力層の役割は外部からのデータを受け取ることです。
出カ層の役割は予測結果を出力することです。
入力層と出力層の間にある数多くの隠れ層では、ネットワークに入力されたデータから、識別に必要な特徴量を導き出す役割を果たします。
上記図のように、隠れ層は様々な経路で繋がれています。
これらの経路に沿って、大量のデータがその特徴に基づいて処理されていきます。学習プロセスの中で、経路の構造や性質は、正解を導き出せるように変化していき、最適化されていきます。
3.ニューラルネットワークの基本構造
ニューラルネットワークは、画像認識や音声認識などに効果を先輩する人間の脳神経システムを模倣したアルゴリズムです。
人間の脳内では、ニューロンの樹状突起が興奮の伝達を受けて電気信号に変え、軸索が次のニューロンに信号を送ります。
このニューロン間の結合構造と情報の処理と伝達の仕組みを、コンビュータで用現したのが、「人エニューロン」の集合体であるニューラルネットワークです。
ニューラルネットワークの構成要素の最小単位は単純パーセプトロンと呼びます。
無純パーセプトロンをたくさんつなぎ合わせたものが、多層パーセプトロンであり、ニューラルネットワークの基本形となります。
下記の図の左側が多層パーセプトロンであり、右側はニューラルネットワークから最小構成単位を取り出したものです。
図にある「丸」が1つのニューロンに相当し、「ノード」とも呼びます。
多層パーセプトロン(ニューラルネットワーク)は先述の通り、入力層、隠れ層、出力層の3種類のニューロン層から構成されています。
隠れ層は「中間層」とも呼ばれます。
単純化のため下記の図の (左)での隠れ層は3層だけにしています。
一般的にはもっと数多くの層になっています。入力層からデータを受け取り、隠れ層でデータから識別に必要な複雑な特徴量を学習し、出力層から子測結果を出力します。
例えば、分類問題に用いる場合、出力層には分類クラスの数だけニューロン(ノード)があって、出力値は各クラスの確率を表します。
上記の図からわかるように、各層のニューロンはそれぞれ前後の層の全てのノードと仮想の導線(エッジ)で結合されています。
このような構造を全結合層(FullyConnected Layers)と呼びます。
隠れ層の各ニューロンには、入力データと出力データを対応付ける関数(後で学ぶ「活性化関数)が内包されています。
各ニューロンは前の層のニューロンたちから個号を受け取り、それらを関数により処理した後、処理結果を次の際に受け渡します。
ニューロン間の結合の強さを重み(Weight)と呼び、入力と出力の関係性を決める重要なパラメータになります。
ニューラルネットワークにおける「学習」とは、正しい予測を出力するために、ニューロン間の結合の強さ(重み)を最適化する作業です。
3-1.ニューラルネットワークのヒエラルキー
次に、単純パーセプトロンと多層パーセプトロンについてより詳しく説明します。
「パーセプトロン」という用語は、ニューロンをネットワーク状に組み合わせたもの全殿として定義されます。
現在実用化されているニューラルネットワークは、多層パーセプトロンを拡張したものと解釈してください。
●単純パーセプトロン(Simple Perceptron)
- 入力(複数ノード)と出力層(単一ノード)の2層のみのシンプルな物造(入力層はデータの入力なので、実質的に出力層だけが稼働)
- ニューロンの中で情報を処理する「活性化関数」にはステップ関数を用いる
- 「出力際のノードは0か1の二種のみ出力でき、線形分離可能な問題にしか使えない」という限界がある
●多層パーセプトロン(Multilayer Perceptron)
- 単純パーセプトロンとの違いとして入力層と出力層の他に隠れ層(中間層)も持つ。つまり3層以上のパーセプトロン。
- 隠れ層を持つこと、および活性化関数に非線形関数を用いることによって、複数クラスの分類と線形分離不可能な問題にも対応可能。
多層パーセプトロンの特徴を見ると、「隠れ層の数を増やせば増やすほど、ますます複雑な情報を処理できて、より高度なデータ処理ができるのでは?」という発想が当然湧いてきますよね。
この考え方がディープニューラルネットワーク(Deep NeurallNetwork ; DNN、一般的にディープラーニングと呼ぶ)技術にたどり着きました。
ディープラーニングを大雑把にいうと、多くの隠れ層を持つニューラルネットワークと定義づけることができます。
しかしながら、ネットワークをディープにするだけではうまくいかず、後に学びますが、実用化するまでには勾配消失問題などいくつかの難題を解消する必要がありました。
3-2.ニューラルネットワークの学習に関わる構成要素
重みとバイアス
ニューラルネットワークの学習では、ニューロン間の結合の強さを表すパラメータを最適化します。最適化するパラメータは重み(Weight)とバイアス(Bias)です。
下記の図にあるように、入力と出力の関係性を疑える役割を果たす隠れ層においては、次のような言号を受け取ります。
前の層の各ニューロンからの出力信号(x1,x2,・・・,xn)のそれぞれに重み(w1,w2,・・・,wn)を乗算して足し合わせ、更に定数項としてバイアス(b)を足し算したもの
改めて説明すると、ニューラルネットワークにおける「学習」とは、正しく予測できるようニューロン間の結合の強さ、つまり重みとバイアスを層ごとに最適化する作業です。
活性化関数
あるニューロンへの入力(前の層からの出力に重みを掛けて、パイアスを足した値)を、そのニューロンの中の活性化関数(Activation Function)に通すことで、次の層に渡ず出力が決定されます。活性化関数の中では、判定基準(開値)に従いデータを処理します。
活性化関数の役割の本質は、特徴の学習をしやすくするために、データを整えることと解釈できます。
多層パーセプトロンでは活性化関数に非線形関数を採用します。歴史的に、隠れ層の活性化関数にはシグモイド関数がよく使われていました。
最近は、アルゴリズムの改善を目的にReLU関数が主流となっています。これらの活性化関数の特徴については後で学びます。
4. まとめ
ここまでで、ディープラーニングの基本的な仕組み、そしてその核となるニューラルネットワークの構造や動作原理について理解を深めてきました。
特に、従来の手法では人間が手作業で設計する必要があった特徴量を、ディープラーニングでは自動的に学習できる点が大きなメリットです。
また、ディープラーニングにおいて中心的な役割を果たすのが、ニューラルネットワークです。
このネットワークは、複数の層(入力層、隠れ層、出力層)で構成され、人間の脳の構造を模倣したアルゴリズムによってデータを処理します。
隠れ層を多層にすることで、より複雑なパターンや関係性を捉えることができるため、画像認識や音声認識、自動翻訳など、現代の高度なAI技術の基盤となっています。
ディープラーニングは、隠れ層を増やすことで「ディープ」なネットワークを形成し、より高度なデータ処理を実現しますが、その裏には「勾配消失問題」などの技術的課題もあり、実用化までには多くの試行錯誤がありました。
次回からは、さらにディープラーニングを深掘りし学習プロセスや戦術の問題点などの紹介や、具体的なアルゴリズムやモデルの詳細に踏み込んでいきます。
ここまで学んだ基礎をもとに、さらなるステップを楽しみにしつつ、焦らず進んでいきましょう。