ニューラル・ネットワーク(人工ニューラル・ネットワーク(ANN)または模倣ニューラル・ネットワーク(SNN)とも呼ばれます)は、機械学習のサブセットで、ディープ・ラーニング・アルゴリズムの中枢をなします。その名称と構造は人間の脳から着想を得ており、生体ニューロンが信号を相互に伝達する方法を模倣しています。
人工ニューラル・ネットワーク(ANN)は、1つの入力層、1つ以上の隠れ層、1つの出力層を含む、ノードの層で構成されます。各ノード(人工ニューロン)は別のノードに接続し、関連する重みとしきい値を持ちます。個々のノードのいずれかの出力が、指定されたしきい値を超えると、そのノードがアクティブ化されて、ネットワークの次の層にデータが送信されます。しきい値を超えなければ、データはネットワークの次の層に渡されることはありません。
ニューラル・ネットワークはトレーニング・データによって徐々に学習し、その精度を高めていきます。そして、精度のための微調整が行われた学習アルゴリズムは、コンピューター・サイエンスおよび人工知能における強力なツールとなって、データの高速な分類とクラスター化を可能にします。専門家が手動で識別すると何時間もかかる音声認識や画像認識のタスクを、数分で完了することができます。 最も有名なニューラル・ネットワークのひとつが、Googleの検索アルゴリズムです。
個々のノードは、入力データ、重み、バイアス(またはしきい値)、および出力データで構成される、固有の線形回帰モデルだと考えることができます。これを数式で表すと次のようになります。
∑wixi +バイアス= w1x1 + w2x2 + w3x3 +バイアス
出力 = f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b < 0
入力層が決定されると、重みが割り当てられます。重みは、ある変数の重要度を判断するのに役立ち、重みが大きい入力データほど、出力データに大きな影響を及ぼします。次いで、すべての入力データが、それぞれの重みで乗算されたうえで合算されます。そこから、活性化関数を通じて、出力データが決定されます。この出力データが所定のしきい値を超えた場合、そのノードは「発火」(アクティブ化)し、データがネットワーク内の次の層に渡されます。これにより、1つのノードの出力データが次のノードの入力データになります。このように、ある層から次の層にデータが渡されるプロセスから、このニューラル・ネットワークはフィードフォワード・ネットワークであると言えます。
バイナリー値を使用して、ある単一ノードがどのような仕組みになっているかを分析してみましょう。この概念は、「サーフィンに行くかどうか(はい:1、いいえ:2)」など、より具体的な例に適用することができます。行くかどうかの決定が、予測される結果、すなわちyハットとなります。ここで、意思決定に影響する要因として以下の3点が挙げられると仮定します。
次に、それぞれの前提に沿って、入力値を以下ように決定します。
ここで、重みを割り当てて重要度を決定する必要があります。重みが大きいほど、特定の変数が意思決定または結果にとって、より重要であることを意味します。
最後に、しきい値を3と仮定します。これは、-3のバイアス値に変換されます。すべての入力データが揃ったら、値を数式に当てはめて、目的の出力値を算出します。
Yハット= (1*5) + (0*2) + (1*4) - 3 = 6
このセクションの冒頭で紹介した活性化関数を使用する場合、6は0より大きいため、このノードの出力は1になると判断できます。この場合、サーフィンに行くことになりますが、重みまたはしきい値を調整すると、このモデルから異なる結果が導き出される場合があります。上記の例のように1つの決定に注目すると、ニューラル・ネットワークが、その前の決定あるいは層の出力に応じて、より一層複雑な決定を行えることがわかります。
上記の例では、パーセプトロンを使用してここに登場する数学の一部を説明していますが、ニューラル・ネットワークではシグモイド・ニューロンを活用します。シグモイド・ニューロンは、0から1の間の連続な値をとれることを特徴とします。ニューラル・ネットワークは決定木と同じように動作し、あるノードから別のノードにデータを伝達します。そのため、0と1の間にあるx値をとることで、単一の変数の変化が任意のノードの出力、そしてニューラル・ネットワークの出力に及ぼす影響は軽減されます。
画像認識や分類など、ニューラル・ネットワークのより実用的なユースケースを視野に入れる場合は、教師あり学習(つまりラベル付きデータ・セット)を活用して、アルゴリズムを訓練していきます。モデルを訓練する際には、コスト(または損失)関数を使用して、モデルの精度を評価します。これは、一般的に平均二乗誤差(MSE)と呼ばれることもあります。以下の数式では、
= =1/2 ∑129_(=1)^▒( ̂^(() )−^(() ) )^2
最終的な目標は、コスト関数を最小化することで、あらゆる観測に合う精度を確保することです。このモデルはその重みとバイアスを調整する際に、コスト関数と強化学習を使って、収束点(極小値)に到達します。アルゴリズムがその重みを調整するプロセスでは最急降下法が使用されるため、モデルは誤差を減らす(またはコスト関数を最小化する)ための方向を判別することができます。モデルのパラメーターはそれぞれの訓練例を使い、最小値に段階的に収束するように調整されます。
ニューラル・ネットワークにおける量的概念の詳しい説明については、このIBM Developerの記事を参照してください。
ほとんどのディープ・ニューラル・ネットワークはフィードフォワードであり、これは入力から出力へと1方向のみに流れることを意味します。ただし、バック・プロパゲーションを通じてモデルを訓練することもできます。これは、出力から入力への反対方向の移動となります。バック・プロパゲーションにより、各ニューロンに関連する誤差を計算し、属性化することができるため、モデルのパラメーターを適切に調整して適合させることが可能になります。
ニューラル・ネットワークは、各種の目的に使用されるさまざまなタイプに分類することができます。 以下に示すのは、すべてのタイプを網羅したリストではないものの、一般的なユースケースで使用される最も代表的なタイプのニューラル・ネットワークです。
パーセプトロンは1958年にFrank Rosenblatt氏が考案した、最古のニューラル・ネットワークです。
この記事で主に取り上げているのは、フィードフォワード・ニューラル・ネットワーク、または多層パーセプトロン(MLP)と呼ばれるものです。 これらは入力層、隠れ層(複数可)、出力層で構成されています。 これらのニューラル・ネットワークは一般的にはMLPとも呼ばれますが、重要なのは、こうしたネットワークが実際にはパーセプトロンではなくシグモイド・ニューロンで構成されている点です。これは、現実世界の問題の大部分は非線形であるためです。 通常、これらのモデルを訓練するためにデータが取り込まれ、こうしたモデルがコンピューター・ビジョン、自然言語処理、およびその他のニューラル・ネットワークの基盤となります。
畳み込みニューラル・ネットワーク(CNN)はフィードフォワード・ネットワークに似ていますが、通常は画像認識、パターン認識、コンピューター・ビジョンなどに利用されています。 これらのネットワークは線形代数、特に行列の乗法の原理を利用して、画像内のパターンを識別しています。
回帰型ニューラル・ネットワーク(RNNs)は、そのフィードバック・ループによって識別されます。 これらの学習アルゴリズムは主に、株式市場の予測や販売予測など、将来の成果について予測するために、時系列データを使用する際に活用されます。
ディープ・ラーニングとニューラル・ネットワークは同じものとして語られる傾向がありますが、これは混乱を招くおそれがあります。ここで、ディープ・ラーニングの「ディープ」とは、単にニューラル・ネットワークにおける層の深さを指すということに留意してください。4層以上で構成されるニューラル・ネットワーク(入力層と出力層を含む)は、 ディープ・ラーニング・アルゴリズムと考えることができます。2層または3層しかないニューラル・ネットワークは、単なる基本的なニューラル・ネットワークです。
ニューラル・ネットワークと、機械学習など他の形態の人工知能との違いについてさらに詳しく知りたい方は、ブログ記事「AI、機械学習、ディープ・ラーニング、ニューラル・ネットワークの相違点」を参照してください。
ニューラル・ネットワークは、多くの人々が考えるよりも長い歴史を持っています。 「考える機械」というアイデアは古代ギリシャ時代にまで遡ることができますが、ここでは長い年月の間に盛衰を繰り返してきた、ニューラル・ネットワークを巡る思考の進化に貢献してきた重要な出来事に焦点を当てます。
1943年:Warren S. McCulloch氏とWalter Pitts氏は『A logical calculus of the ideas immanent in nervous activity(神経活動に内在する思考の論理計算)』(PDF、1 MB)(ibm.com外部へのリンク)を発行しました。この研究は、人間の脳が、互いにつながった脳細胞、つまりニューロンを通じて、複雑なパターンをどのように生成できるのかを理解しようとするものでした。 この研究から生まれた主なアイデアの1つは、2値化しきい値を持つニューロンを、ブール論理(すなわち、0か1、または真偽式の問題)と比較するというものでした。
1958年:Frank Rosenblatt氏は、パーセプトロンの発展における功績が評価されており、その論理は自身の研究『The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain(パーセプトロン:脳内の情報の保存と編成の確率モデル)』(ibm.com外部へのリンク)にまとめられています。 Frank Rosenblatt氏はは重みという概念を導入することで、McCulloch氏とPitt氏の研究を一歩前進させています。 Rosenblatt氏はIBM 704を活用することで、左側に印を付けられたカードと、右側に印を付けられたカードを区別する方法を、コンピューターに学ばせることに成功しました。
1974年:バックプロパゲーションのアイデアには数多くの研究者が貢献しましたが、Paul Werbos氏は自身の博士論文(PDF、8.1 MB)(ibm.com外部へのリンク)の中で、米国で初めて、ニューラル・ネットワークにおけるバックプロパゲーションの応用について言及しました。
1989年:Yann LeCun氏が研究論文(PDF、5.7 MB)(ibm.com外部へのリンク)を発表し、バックプロパゲーションにおける制約事項の活用と、ニューラル・ネットワーク・アーキテクチャーへの統合が、アルゴリズムの訓練にどのように利用できるかを明らかにしました。 この研究では、ニューラル・ネットワークを活用して、米国の郵便局から提供された、手書きの郵便番号の数字を認識させることに成功しました。