ニューラル・ネットワーク

menu icon

ニューラル・ネットワーク

ニューラル・ネットワークは人間の脳の仕組みを模倣することで、コンピューター・プログラムがパターンを認識し、AI、機械学習、ディープ・ラーニングの分野で共通する問題の解決を可能にします。

ニューラル・ネットワークとは

人工ニューラル・ネットワーク(ANN)またはシミュレートされたニューラル・ネットワーク(SNN)としても知られるニューラル・ネットワークは、機械学習のサブセットであり、ディープ・ラーニング・アルゴリズムの中心に位置するものです。 その名称と構造は人間の脳から着想を得ており、生体ニューロンが信号を相互に伝達する方法を模倣しています。

人工ニューラル・ネットワーク(ANN)は、入力層、1つ以上の隠れ層、出力層を含む、複数のノード層で構成されています。 各ノード(人工ニューロン)は別のノードに接続し、関連する重みとしきい値を持ちます。 個々のノードのいずれかの出力が、指定されたしきい値を超えると、そのノードがアクティブ化されて、ネットワークの次の層にデータが送信されます。 しきい値を超えなければ、データはネットワークの次の層に渡されることはありません。

フィードフォワード・ニューラル・ネットワークの入力層、隠れ層、出力層のビジュアル・ダイアグラム

ニューラル・ネットワークはトレーニング・データによって徐々に学習し、その精度を高めていきます。 そして、精度のための微調整が行われた学習アルゴリズムは、コンピューター・サイエンスと人工知能における強力なツールとなって、データの高速な分類とクラスター化を可能にします。 音声認識または画像認識におけるタスクは、専門家による手動での識別が何時間も要するのに対し、数分で完了します。 最も有名なニューラル・ネットワークのひとつが、Googleの検索アルゴリズムです。

ニューラル・ネットワークの仕組み

個々のノードは、入力データ、重み、バイアス(またはしきい値)、および出力データで構成される、固有の線形回帰モデルだと考えることができます。 これを数式で表すと次のようになります。

合計値の決定に使用される数式

∑wixi +バイアス= w1x1 + w2x2 + w3x3 +バイアス

出力値の決定に使用される数式

出力= f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b < 0

入力層が決定されると、重みが割り当てられます。 重みは、ある変数の重要度を判断するのに役立ち、重みが大きい入力データほど、出力データに大きな影響を及ぼします。 次いで、すべての入力データが、それぞれの重みで乗算されたうえで合算されます。 そこから、活性化関数を通じて、出力データが決定されます。 この出力データが所定のしきい値を超えた場合、そのノードは「発火」(アクティブ化)し、データがネットワーク内の次の層に渡されます。 これにより、1つのノードの出力データが次のノードの入力データになります。 このように、ある層から次の層にデータが渡されるプロセスから、このニューラル・ネットワークはフィードフォワード・ネットワークであると言えます。

バイナリー値を使用して、ある単一ノードがどのような仕組みになっているかを分析してみましょう。 この概念は、「サーフィンに行くかどうか(はい:1、いいえ:2)」など、より具体的な例に適用することができます。 行くかどうかの決定が、予測される結果、すなわちyハットとなります。 ここで、意思決定に影響する要因として以下の3点が挙げられると仮定します。

  1. 波の状態は良好ですか? (はい:1、いいえ:0)
  2. ラインアップは空いていますか? (はい:1、いいえ:0)
  3. 最近、サメによる襲撃がありましたか? (はい:0、いいえ:1)

次に、それぞれの前提に沿って、入力値を以下ように決定します。

  • X1 = 1(よい波がコンスタントに来ているため)
  • X2 = 0(人出が多いため)
  • X3 = 1(最近はサメによる襲撃が発生していないため)

ここで、重みを割り当てて重要度を決定する必要があります。 重みが大きいほど、特定の変数が意思決定または結果にとって、より重要であることを意味します。

  • W1 = 5(大きなスウェル(うねり)は頻繁には起きないため)
  • W2 = 2(人混みに慣れているため)
  • W3 = 4(サメに対する恐怖心があるため)

最後に、しきい値を3と仮定します。これは、-3のバイアス値に変換されます。 すべての入力データが揃ったら、値を数式に当てはめて、目的の出力値を算出します。

Yハット= (1*5) + (0*2) + (1*4) - 3 = 6

このセクションの冒頭で紹介した活性化関数を使用する場合、6は0より大きいため、このノードの出力は1になると判断できます。 この場合、サーフィンに行くことになりますが、重みまたはしきい値を調整すると、このモデルから異なる結果が導き出される場合があります。 上記の例のように1つの決定に注目すると、ニューラル・ネットワークが、その前の決定あるいは層の出力に応じて、より一層複雑な決定を行えることがわかります。

上記の例では、パーセプトロンを使用してここに登場する数学の一部を説明していますが、ニューラル・ネットワークではシグモイド・ニューロンを活用します。シグモイド・ニューロンは、0から1の間の連続な値をとれることを特徴とします。 ニューラル・ネットワークは決定木と同じように動作し、あるノードから別のノードにデータを伝達します。そのため、0と1の間にあるx値をとることで、単一の変数の変化が任意のノードの出力、そしてニューラル・ネットワークの出力に及ぼす影響は軽減されます。

画像認識や分類など、ニューラル・ネットワークのより実用的なユースケースを視野に入れる場合は、教師あり学習(つまりラベル付きデータ・セット)を活用して、アルゴリズムを訓練していきます。 モデルを訓練する際には、コスト(または損失)関数を使用して、モデルの精度を評価します。 これは、一般的に平均二乗誤差(MSE)と呼ばれることもあります。 以下の数式では、

  • iは、何番目のサンプルであるかを表し、
  • yハットは予測される結果、
  • yは実際の値、
  • mはサンプル数です。
コスト関数の決定に使用される数式

コスト関数= 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

最終的な目標は、コスト関数を最小化することで、あらゆる観測に合う精度を確保することです。 このモデルはその重みとバイアスを調整する際に、コスト関数と強化学習を使って、収束点(極小値)に到達します。 アルゴリズムがその重みを調整するプロセスでは最急降下法が使用されるため、モデルは誤差を減らす(またはコスト関数を最小化する)ための方向を判別することができます。 モデルのパラメーターはそれぞれの訓練例を使い、最小値に段階的に収束するように調整されます。

収束点を示す折れ線グラフ

ニューラル・ネットワークにおける量的概念の詳しい説明については、このIBM Developerの記事を参照してください。

ほとんどのディープ・ニューラル・ネットワークはフィードフォワードであり、これは入力から出力へと1方向のみに流れることを意味します。 ただし、バック・プロパゲーションを通じてモデルを訓練することもできます。これは、出力から入力への反対方向の移動となります。 バック・プロパゲーションにより、各ニューロンに関連する誤差を計算し、属性化することができるため、モデルのパラメーターを適切に調整して適合させることが可能になります。

ニューラル・ネットワークのタイプ

ニューラル・ネットワークは、各種の目的に使用されるさまざまなタイプに分類することができます。 以下に示すのは、すべてのタイプを網羅したリストではないものの、一般的なユース・ケースで使用される最も代表的なタイプのニューラル・ネットワークです。

パーセプトロンは1958年にフランク・ローゼンブラットによって作られた、最古のニューラル・ネットワークです。 以下のように1つのニューロンを持つ、最も単純な形のニューラル・ネットワークです。

パーセプトロンを示す、線と青い円を使用した単純なダイアグラム

この記事で主に取り上げているのは、フィードフォワード・ニューラル・ネットワーク、または多層パーセプトロン(MLP)と呼ばれるものです。 これらは入力層、隠れ層(複数可)、出力層で構成されています。 これらのニューラル・ネットワークは一般的にはMLPとも呼ばれますが、重要なのは、こうしたネットワークが実際にはパーセプトロンではなくシグモイド・ニューロンで構成されている点です。これは、現実世界の問題の大半は非線形であるためです。 通常、これらのモデルを訓練するためにデータが取り込まれ、こうしたモデルがコンピューター・ビジョン、自然言語処理、およびその他のニューラル・ネットワークの基盤となります。

畳み込みニューラル・ネットワーク(CNN)はフィードフォワード・ネットワークに似ていますが、通常は画像認識、パターン認識、コンピューター・ビジョンなどに利用されています。 これらのネットワークは線形代数、特に行列の乗法の原理を利用して、画像内のパターンを識別しています。

再帰型ニューラル・ネットワーク(RNN)は、そのフィードバック・ループによって識別されます。 これらの学習アルゴリズムは主に、株式市場の予測や販売予測など、将来の成果について予測するために、時系列データを使用する際に活用されます。

ニューラル・ネットワークとディープ・ラーニング

ディープ・ラーニングとニューラル・ネットワークは同じものとして語られる傾向がありますが、これは混乱を招くおそれがあります。 ここで、ディープ・ラーニングの「ディープ」とは、単にニューラル・ネットワークにおける層の深さを指すということに留意してください。 4層以上で構成されるニューラル・ネットワーク(入力層と出力層を含む)は、 ディープ・ラーニング・アルゴリズムと考えることができます。 2層または3層しかないニューラル・ネットワークは、単なる基本的なニューラル・ネットワークです。

ニューラル・ネットワークと、機械学習など他の形態の人工知能との違いについてさらに詳しく学ぶには、ブログ記事「AI、機械学習、ディープ・ラーニング、ニューラル・ネットワークの相違点」をお読みください。

ニューラル・ネットワークの歴史

ニューラル・ネットワークは、多くの人々が考えるよりも長い歴史を持っています。 「考える機械」というアイデアは古代ギリシャにまで遡ることができますが、ここでは長い年月の間に盛衰を繰り返してきた、ニューラル・ネットワークを巡る思考の進化につながった重要な出来事に焦点を当てます。

1943年: ウォーレン S. マカロックとウォルター・ピッツは『A logical calculus of the ideas immanent in nervous activity(神経活動に内在する思考の論理計算)』(PDF、1 MB)(IBM外部へのリンク)を発行しました。この研究は、人間の脳が、互いにつながった脳細胞、つまりニューロンを通じて、複雑なパターンをどのように生成できるのかを理解しようとするものでした。 この研究から生まれた主なアイデアの1つは、2値化しきい値を持つニューロンを、ブール論理(すなわち、0か1、または真偽式の問題)と比較するというものでした。

1958年:フランク・ローゼンブラットは、パーセプトロンの発展における功績が評価されており、その論理は自身の研究『The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain(パーセプトロン:脳内の情報の保存と編成の確率モデル)』(PDF、1.6 MB)(IBM外部へのリンク)にまとめられています。 ローゼンブラットは重みという概念を導入することで、マカロックとピットの研究を一歩前進させています。 ローゼンブラットはIBM 704を活用することで、左側に印を付けられたカードと、右側に印を付けられたカードを区別する方法を、コンピューターに学ばせることに成功しました。

1974年:バックプロパゲーションのアイデアには数多くの研究者が貢献しましたが、ポール・ワーボスは自身の博士論文(PDF、8.1 MB)(IBM外部へのリンク)の中で、米国で初めて、ニューラル・ネットワークにおけるバックプロパゲーションの応用について言及しました。

1989年:ヤン・ルカンが研究論文(PDF、5.7 MB)(IBM外部へのリンク)を発表し、バックプロパゲーションにおける制約事項の活用と、ニューラル・ネットワーク・アーキテクチャーへの統合が、アルゴリズムの訓練にどのように利用できるかを明らかにしました。 この研究では、ニューラル・ネットワークを活用して、米国の郵便局から提供された、手書きの郵便番号の数字を認識させることに成功しました 。

ニューラル・ネットワークとIBM Cloud

IBMは数十年間にわたり、AI技術とニューラル・ネットワークの開発における先駆者となっており、それを裏付けるのがIBM Watsonの開発と進化です。 AIの採用と実装に実績のある段階的アプローチを使用して、高度な自然言語処理とディープ・ラーニングの手法をシステムへと適用しようとしている企業にとって、Watsonは信頼できるソリューションとなっています。

WatsonはApache Unstructured Information Management Architecture(UIMA)フレームワークと、IBMのDeepQAソフトウェアを使用することで、アプリケーションが強力なディープ・ラーニング機能を利用できるようにしています。 IBM Watson Studioのようなツールを活用することで、企業は任意のクラウド上でモデルをデプロイして実行する一方で、オープンソースのAIプロジェクトを実稼働環境にシームレスに導入することができます。

ディープ・ラーニング・テクノロジーの利用を開始する方法の詳細については、IBM Watson Studioおよびディープ・ラーニング・サービスをご覧ください。

IBMidの登録とIBM Cloudアカウントの作成はこちら