ニューラルネットワーク

 

ニューラルネットワーク

これだけは知っておきたい3つのこと

ニューラルネットワークとは、脳内の神経細胞(ニューロン)のネットワーク構造を模した数学モデルです。相互に接続する複数ノードからなる多層で構築されています。ニューラルネットワークはデータから学習できるという特徴から、パターン認識、データ分類、未来の予測に活用されています。

ニューラルネットワークは入力を抽象層に分解します。膨大な量の例となるデータで学習させることにより、人間の脳と同じように、ニューラルネットワークは音声や画像のパターンを認識することができます。その動作は、ネットワークの個々の要素の接続方法と、それらの接続の強度または重みによって定義されます。この重みは、ニューラルネットワークがタスクを正しく実行するまで、指定された学習のルールに従い学習中に自動的に調整されます。

なぜニューラルネットワークが重要か

ニューラルネットワークは、音声、ビジョン、制御システムにおいて、物体や信号を識別・分類する パターン認識に特に適しているといえます。また、ニューラルネットワークは時系列予測やモデリングにも使用できます。

ニューラルネットワークの応用例をいくつか示します。

  • 電力会社はニューラルネットワークを活用して、電力網の負荷を正確に予測し、信頼性を確保して、発電効率を最適化しています。
  • ATM は小切手の口座番号と預金額を読み取ることにより、正確に銀行預金を受け取ります。
  • 病理学者はニューラルネットワークを活用して、癌細胞の検出を行っています。細胞サイズ、凝集塊の厚さ、有糸分裂、および他の要因の均一性に基づいて、腫瘍を良性または悪性に分類します。

ディープラーニング(深層学習)

結合されたニューロンの2つまたは3つの層で動作するニューラルネットワークは、浅いニューラルネットワークとして知られています 。一方で、ディープラーニングのネットワークは、多層で構成され、数百層を持つこともあります。いずれも入力データから直接特徴抽出を行い、学習することができる機械学習の技術です。ディープラーニングは、人工知能(AI)の急速な発展を支える技術であり、その進歩により様々な分野への実用化が進んでいます。

近年ディープラーニングが注目を集めているのには理由があります。それはディープラーニングが、従来の技術では不可能だったレベルの認識精度に到達するようになっているからです。

ディープラーニングは、顔認識、テキスト翻訳、音声認識のような複雑な識別が必要とされる分野に特に適しています。また、先進運転支援システム(ADAS)や車線分類や交通標識認識などのタスクにおいても使用される重要な技術です。ディープニューラルネットワークのひとつである、畳み込みニューラルネットワークは現在広く使われているモデルです。

ニューラルネットワークの基礎となる仕組み

ニューラルネットワークはいくつかの処理層で構成されており、その処理層には、並行して動作し、脳神経系システムから着想を得たシンプルな要素が使われています。ニューラルネットワークは、入力層、1 つ以上の隠れ層、および出力レイヤーで構成されています。各層は前の層の出力を入力として使い、ノードまたはニューロン間は相互接続されています。

代表的なニューラルネットワークアーキテクチャ

ニューラルネットワークで使用される技術

ニューラルネットワークのアプリケーションを設計するための一般的な機械学習の技術には、教師あり学習・教師なし学習、分類、回帰、パターン認識、およびクラスタリングが含まれます。

教師あり学習

教師あり学習のニューラルネットワークは、サンプル入力に応じて望ましい出力を生成するように学習されており、動的システムのモデリング、制御、ノイズの多いデータ分類、未来の予測に特に適しています。Deep Learning Toolbox™には、フィードフォワード、放射基底、動的、学習ベクトル量子化の 4 種類の教師ありネットワークがあります。

分類

分類は、ラベル付きデータの例から新しい対象を分類するアルゴリズムを「学習」する教師あり学習の一種です。

回帰

回帰モデルは、応答(出力)変数と 1 つ以上の予測(入力)変数との間の関係を記述します。

パターン認識

パターン認識は、コンピュータビジョン、レーダー処理、音声認識、テキスト分類において、ニューラルネットワークのアプリケーションの重要な要素です。入力データを、教師ありまたは教師なしの分類のいずれかを使用して、主要機能に基づいて物体またはクラスに分類することによって機能します。

例えば、コンピュータビジョンでは、光学式文字認識(OCR)、顔検出、顔認識、物体検出、物体分類において、教師ありのパターン認識技術が使用されます。また、画像処理・コンピュータビジョンでは、教師なしのパターン認識技術が物体検出および画像セグメンテーションに使用されます。

教師なし学習

教師なし学習は、ニューラルネットワークに新しい入力データを継続的に調整させることによって学習されます。教師なし学習は、ラベル付けされた応答を持たない入力データから推論を導き出すために用いられます。教師なし学習を使用することで、自然な分布、カテゴリ、およびデータ内のカテゴリ関係を発見することができます。

Deep Learning Toolboxには、競合層と自己組織化マップの 2 種類の教師なしネットワークが含まれています。

クラスタリング

クラスタリングは教師なし学習の手法です。これは、探索的データ分析により、データ内の隠れたパターンやグループ構造を発見するために用いるものです。このプロセスでは、類似性によってデータをグループ化します。クラスタリングは、遺伝子配列解析、市場調査、および物体認識などに利用されています。

MATLABによる浅いニューラルネットワークの開発

大規模なデータセットを管理するためのツールや機能に加えて、MATLAB®は、機械学習、ニューラルネットワーク、ディープラーニング、コンピュータビジョン、および自動運転に特化した専用のツールボックスを提供しています。

MATLABを使用することで、わずか数行のコードで、専門家でなくてもニューラルネットワークを構築できます。モデルの作成と可視化、サーバーや組み込みデバイスへの実装をMATLABで始めましょう。

MATLABにより、既存のアプリケーションに結果を統合できます。MATLABを使うことで、エンタープライズシステム、クラスター、クラウド、および組み込み機器へのニューラルネットワークモデルの配布を自動化できます。

ニューラルネットワークを設計するための代表的なワークフロー

ニューラルネットワークのアプリケーションは様々ですが、通常は次の手順でネットワークを構築します。

1.  データへのアクセスと準備

2.  ニューラルネットワークを作成する

3.  ネットワークの入力と出力を設定する

4.  パフォーマンスを最適化するためにネットワークパラメータ(重みとバイアス)を調整する

5.  ネットワークを学習させる

6.  ネットワークの結果を検証する

7.  ネットワークを稼働システムに統合する

浅いネットワークの分類とクラスタリング

MATLABとDeep Learning Toolboxは、浅いニューラルネットワークの作成、学習、シミュレーションを行うためのコマンドライン関数とアプリを提供します。このアプリは、分類、回帰(時系列回帰を含む)、クラスタリングなどのタスクのためのニューラルネットワークの開発を容易にします。これらのツールでニューラルネットワークを作成した後は、ツール上での作業内容をMATLABコードとして生成できますので、以降の作業を自動化することができます。

ネットワークの前処理、後処理、および改善

ネットワークの入力とターゲットを前処理することで、浅いニューラルネットワークの学習効率が向上します。また、後処理により、ネットワーク性能の詳細な分析が可能になります。MATLABとSimulink®は、以下の作業を容易にします。

  • 主成分分析を使用して入力ベクトルの次元を縮小する
  • ネットワークレスポンスと対応するターゲット間の回帰分析を実行する
  • 入力とターゲットが[-1,1]の範囲に収まるように入力とターゲットをスケーリングする
  • 学習データセットの平均と標準偏差を正規化する
  • ネットワークの作成時に自動化されたデータ前処理とデータ分割を使用する

ネットワークの汎化性を向上させることは、ニューラルネットワークの設計における共通の課題である過適合を防止するのに役立ちます。過適合は、学習データに含まれる、本来学習させたい特徴とは無関係な特徴にまで過度に適合してしまった場合に発生します。過適合は、学習データに対しては比較的小さな誤差になりますが、新しいデータがネットワークに与えられると、より大きな誤差が生じます。

汎化性を向上するための2つのソリューションは以下の通りです。

正規化は、ネットワークの性能関数(学習プロセスが最小化するエラーの測定値)を変更します。正則化は、ウェイトとバイアスのサイズを含めることによって、学習データとうまくやり取りし、新しいデータが提示されたときによりスムーズな動作を示すネットワークを作り出します。

早期停止は、ウェイトとバイアスを更新するための学習用データセットと、過学習の傾向が出始めたときに学習を停止させるための検証用データセットを使用します。

学習、検証、およびテストの各フェーズで利用できる、ネットワークパフォーマンスを分析するための後処理プロット。性能検証のための平均二乗誤差を含む連続的な学習エポック(左上)、エラーヒストグラム(右上)、および混同行列(下)

コードの生成と展開

MATLAB Coder™GPU Coder™、およびMATLAB Compiler™と共に、Deep Learning Toolboxを使用すると、学習済みのネットワークを組み込みシステムに展開したり、幅広い量産環境と統合することができます。MATLAB Coderを使用すると、学習済みのネットワーク用のCコードやC++コードを生成することができます。これにより、PCハードウェア上で学習済みネットワークをシミュレーションし、組み込みシステムにそのネットワークを展開することができます。MATLAB CompilerとMATLAB Compiler SDK™を使用することで、C/C++共有ライブラリ、Microsoft®. NETアセンブリ、Microsoft®. NET、Java®クラス、Python®パッケージとして、MATLABプログラムから、学習済みネットワークを展開できます。展開されたアプリケーションまたはコンポーネントで、ネットワークモデルを学習することもできます。

Simulinkサポート

Deep Learning Toolboxは、Simulinkで浅いニューラルネットワークを構築するための一連のブロックを提供します。すべてのブロックはSimulink Coder™と互換性があります。これらのブロックは4つのライブラリに分割されています。

伝達関数ブロック。ネット入力ベクトルを受け取り、対応する出力ベクトルを生成する。

ネット入力関数ブロック。任意の数の重み付き入力ベクトル、重み層出力ベクトル、およびバイアスベクトルを受け取り、ネット入力ベクトルを返す。

重み関数ブロック。入力ベクトル(またはレイヤ出力ベクトル)にニューロンの重みベクトルを適用して、ニューロンの重み付き入力値を取得する。

データ前処理ブロック。入力データと出力データをニューラルネットワークが直接処理するのに最適な範囲にマップする

また、MATLAB環境でネットワークを作成および学習し、Simulinkで使用するネットワークシミュレーションブロックを自動的に生成することもできます。このアプローチにより、ネットワークをグラフィカルに表示することもできます。

ニューラルネットワークを使用したアプリケーション

ルンド大学は、ニューラルネットワークを使って予測モデルを開発し、数千のリスクプロファイルの組み合わせをシミュレーションし、レシピエント(受容者)の長期生存率を改善しました。
タンパク質プロファイルに関する質量分析データから癌を検出するために、ニューラルネットワークを使用して、癌診断を改善しました。
ニューラルネットワークを学習させて数字の画像を分類します。