開閉ボタン
ユーザーメニュー
ユーザーメニューコンテンツ
ログイン

  • 2017/03/15

ニューラルネットワークの基礎解説:仕組みや機械学習・ディープラーニングとの関係は

「ニューラルネットワーク(Neural Network:NN)」とは、人間の脳内にある神経細胞(ニューロン)とそのつながり、つまり神経回路網を人工ニューロンという数式的なモデルで表現したものだ。近年、人工知能(AI)領域がブームになっているが、ニューラルネットワークは機械学習や深層学習(ディープラーニング)などを学ぶ際に知っておくべき基本的な仕組みである。NVIDIA(エヌビディア)CUDA & Deep Learning Solution Architect 村上真奈 氏が、ニューラルネットワークを学ぶ入門編として、仕組みや構造、機械学習、ディープラーニングとの関係性、さまざまなアプローチの具体例やディープラーニングの流れなどを解説する。

photo
ディープラーニングの前に理解すべき「ニューラルネットワーク」の基本

「ニューラルネットワーク」とは何か?

 近年注目されている機械学習や深層学習(ディープラーニング)を学習する際に、おさえておきたいのが「ニューラルネットワーク」という概念だ。

 機械学習と呼ばれるものには多くの手法があるが、そのひとつがニューラルネットワークを使った手法である。

 ニューラルネットワークとは、人間の脳内にある神経細胞(ニューロン)とそのつながり、つまり神経回路網を人工ニューロンという数式的なモデルで表現したものである。

 ニューラルネットワークは、入力層、出力層、隠れ層から構成され、層と層の間には、ニューロン同士のつながりの強さを示す重み「W」がある。

「人間の脳の中にあるニューロンは電気信号として情報伝達を行います。その際にシナプスの結合強度(つながりの強さ)によって、情報の伝わりやすさが変わってきます。この結合強度を、人工ニューロンでは重みWで表現します」(村上氏)

画像
脳のシナプスと人工ニューラルネットワーク(NN)。ニューラルネットワークは神経回路網を数式的なモデル(アルゴリズム)として表現したもの

ニューラルネットワークの仕組みと構造

 一つひとつの人工ニューロンは単純な仕組みだが、それを多数組み合わせる事で複雑な関数近似を行う事ができるのが、ニューラルネットワークの大きな特徴である。

「複雑な関数近似をしなければ分類や回帰ができない場合に、従来型の機械学習手法ではうまくいかないケースも多く、そういった問題に対して、ディープラーニング手法を使用するケースが増えています。

 ディープラーニングの手法を用いた事で、従来に比べて飛躍的に認識精度が向上するケースもあり、現在世の中でディープラーニングはたいへん注目されています。最近ではレコメンデーションや自動運転の分野など、幅広い分野で利用されています」(村上氏)

画像
機械学習とディープラニングの関係を表した図


 ニューラルネットワークの隠れ層は多層にする事が可能だ。ディープラーニングとは、「隠れ層が多数存在する多層構造のニューラルネットワーク」のことを指す。

 村上氏は「入力層」「隠れ層」「出力層」で構成される3層のパーセプトロンを例に説明した。

「今回は、話をシンプルにする為に3層のものを例に説明しますが、たとえば、ディープラーニングで画像分類を行う際は、層の数も多層にし、入力層のサイズは画素数に対応させるケースが多いです。たとえば、28x28ピクセルのグレースケール画像では、28x28x1(RGBカラーの場合は3)の入力になります」(村上氏)

画像
入力層・隠れ層・出力層で構成される三層のパーセプトロン。人工ニューロンやニューラルネットワークの一種で、ロジスティック回帰と等価なモデルだ


 データが入力層のXに入ってくると、その値に重みW1をかけ、Yに結果を出力する。そして今度は、先ほど計算したYの値を入力として重みW2をかけ出力層のZに書き出す。重みW1およびW2の値によって出力結果は異なってくる。

「たとえば、z1が0.8という出力になったとします。しかし本当はz1の出力を0.5にしたい場合、一体どうすればよいでしょうか? その結果に近づけるために、重みのW1とW2を調整していけばよいのです」(村上氏)

画像
正解の教師データに近づけるために、重みW1とW2を調整していく。これがディープラーニングの本質的な作業になる


分類と回帰の違いとは

 もう一つ、ディープラーニングを理解するために知っておきたいのが「分類(Classification)」と「回帰(Regression)」である。

関連記事

 分類問題と回帰問題、どちらもデータに法則性を見つけ、関数近似を行う必要があるという点は共通だ。ディープラーニング手法は分類問題でも回帰問題でもよく使われる。

 分類問題の事例には、たとえば犬と猫の画像を推論することなどがある。これに対して回帰問題の事例には、某社の1か月後の株価予測などがある。

 分類問題では、分布データをどこかで線引きする問題であり、たとえば異常データと正常データを見分ける事に使用する事ができる。データの分布が一次関数で境界を近似できるような簡単なものであればよいが、多くのケースではデータがバラバラに分布して法則性を見つけるのが難しい。

photo
NVIDIA
CUDA & Deep Learning Solution Architect
村上真奈 氏

「そういったデータに法則性が見つけづらく、複雑な関数近似をしなければ分類できない場合に、ディープラーニング手法を用います」(村上氏)

画像
よく質問される「分類」と「回帰」の違い。分類はすでにあるデータを分ける。回帰は未知のデータまで予測する

さまざまな種類のアプローチ

 ニューラルネットワークの各層の重みを少しずつ調整し、正解ラベルとの誤差を小さくする事を、ディープラーニングでは「学習」と呼ぶ。村上氏は、「学習には『誤差逆伝播法』が使われており、重みの更新には最適化手法の一つである『勾配降下法』が使われている」と説明した。

 これは、すでに「TensorFlow」「Chainer」「Caffe」といったディープラーニング用のフレームワークを利用しているユーザーには耳慣れたものだろう。

 勾配降下法には、確率的勾配降下法をはじめ、いくつかの種類が存在する。いわゆる「Solver」の設定では、この勾配降下法のアルゴリズムをどれにするのかの選択を行っている。

 勾配降下法の原理は次の通りだ。現在の値と教師データが近い場合は、誤差が小さくなる。これをヒントに最適化していく。つまり最も誤差が小さい値が最適解になる。

「現在値から誤差が小さくなるように、重みを増加させるのか、あるいは減少させたほうがよいのか。それを知るために変化量を調べる必要があります。そこで微分して接線の傾きが正か負かを見て、誤差が減る方向に重みの値を更新していきます。その操作をゴールである最適解に近付くように何度も何度も繰り返します。このときの更新量の幅が重要で、学習率(Learning Rate)で決まります」(村上氏)

 重みを更新する際には、いくつかの注意点が存在する。最適化がうまくいかないと局所解に陥ってしまう事があるためだ。

 局所解に陥らない為に、ディープラーニングの学習時にはさまざまな工夫を行う。たとえば、最初は学習率(Learning Rate)を大きくして重みの更新をどんどん行い、最後の方は学習率を小さくして重みの微調整を行うというように、学習率を変化させる手法を用いる事がある。

画像
重みの更新量は学習率(Learning Rate)で調整

 また、重みWをあらかじめ別途学習したプレ・トレーニングデータで初期化する手法を用いる事もある。

「ディープラーニングの学習では、ニューラルネットワークの入力層にデータを入力し重みをかけて出力するという操作を最終層までN回繰り返します。これをフォワード・プロパゲーションと呼びます」(村上氏)

 初期段階では、すぐに期待した通りの答えは出力されないため、正解ラベルと出力値の誤差をとり、誤差を各層に伝播させて正解値に近付くように各層の重みを調整する。この誤差を逆伝播させる事を「Back Propagation(バックプロパゲーション)」と呼ぶ。これが誤差逆伝播法の仕組みだ。

画像
逆伝搬法「Back Propagation」。正解値の誤差をとり、各層にフィードバックし、重みを調整しながら、正解値に近づけていく

 さらに大量の画像データを入力し、精度を高めていくためには、計算能力も時間もかかる。この画像データの処理を1枚ずつやっていたのでは大変だ。そこで、複数枚を同時に処理する「ミニバッチ」という手法も使われる。

【次ページ】画像を分類するニューラルネットワークの具体例

具体的なディープラーニングの流れ

 次に村上氏は、画像分類のニューラルネットワークを用いた具体的なディープラーニングの手法を解説した。

 まず大量の画像データを収集し、「訓練用データ」(Training data)と「検証用データ」(Validation data)に分割する。

 これは、どのフレームワークを使う場合でも同じ作業だ。訓練データは重みの更新に使うもので、検証データは未知のデータに対する状態をチェックする汎化性能の確認のために使うものだ。

 では、この2種類のデータを使って、どのように重み学習をするのだろうか。まず訓練データのほうをニューラルネットワークに与える。すべての訓練データを用いて、正解との誤差がなくなるように重みの更新を行い、次にすべての検証データで汎化性能を確認する。

画像
学習時の性能の確認は重要。各エポックで訓練データをニューラルネットワークに与えた際の間違い率と、検証データでの間違い率を確認しながら学習を進める

 重みの更新に使用していない未知のデータに対して、正しく推論が行えるネットワークであるかの検証をおこなうわけだ。ここで用意した訓練データと検証データをニューラルネットワークに一巡させることを「1エポック」(epoch)と呼び、学習時には、性能が上がるまで数エピックから数十エポック繰り返す。

画像
すべての訓練データをニューラルネットワークに与えて、出力結果と正解の誤差をなくすプロセス。ここで重みWの調整を行っていく

 ニューラルネットワークの学習がうまくいっていないケースでは、訓練データに対しては、正解ラベルに近い出力を行うが、未知のデータに対しては間違ってしまうという現象が起きる。このようなニューラルネットワークでは、使い物にならない為、学習時に汎化性能を確認しながら、重み調整を行うのは重要だ。

画像
検証データで汎化性能を確認する。用意した訓練データと検証データをニューラルネットワークに一巡させることを「1エポック」(epock)と呼ぶ

「エポックが増えるに従って(学習が進むほど)、エラー数が減少すれば学習は成功したと言えます。一方で訓練データに対してはエポックが進む毎にエラー数が減少していくのに、検証データでは一定のエポック以降はエラー数が減らないという現象が起こることがあり、このような状態を『過学習』と呼びます」(村上氏)

畳み込みニューラルネットワークとは何か

 最後に村上氏は「畳込みニューラルネットワーク」(CNN:Convolutional Neural Network)についても簡単に触れた。

 画像分類をはじめとする画像認識の分野では、ほぼ100%CNNを使っている。CNNには「Alexnet」「GoogleNet」「ResNet」などいくつかの有名なモデルが存在するが、それらはすべて何層のネットワークであるか、入力サイズはいくつであるかなどニューラルネットワークの構成を表す名称である。

「畳込みニューラルネットワーク(CNN)は畳込み層という層を持っています。今まで紹介したネットワークでは各ニューロンは全結合していましたが、畳込み層は、少し異なります。畳込み層には複数の重みフィルタがあり、入力データにその重みフィルタをかけた値が次の層の値となります。畳込み層の計算は画像処理の畳込みフィルタの処理のようなものだとイメージするとわかりやすいかもしれません」(村上氏)

画像
「畳込みニューラルネットワーク」もキーワードのひとつ。ニューラルネットワークの一形態で、画像認識や画像分類などで使われる高精度アルゴリズムだ

 畳込み層の中でも、前の方の層では点や線などの単純な特徴を獲得していき、後ろの方の層では目や鼻などのより複雑な特徴を獲得するという仕組みになっている。

 なお、NVIDIAではディープラーニングを学べる自主学習コース「NVIDIA Deep Learning Labs」も用意している。一部は無料で閲覧できるので、より詳細を学びたい向きは利用してみるとよいだろう。
この記事のご感想をお聞かせください。~今さら聞けないニューラルネットワークの基本、機械学習やディープラーニングとの関係(t)

ご投稿いただいた内容は、個人情報を含まない形で今後の編集の参考や弊社メディアでご紹介させていただくことがございます。 あらかじめご了承ください。(正しくご投稿いただいた場合、このアンケートフォームは今後表示されません)

1. この記事はあなたの業務に役立ちましたか?

2. あなたはこの記事をどこで知りましたか?

3. この記事のご感想やご意見など、ご自由にお書きください


関連記事

AI・人工知能・機械学習 ジャンルのトピックス

AI・人工知能・機械学習 ジャンルのIT導入支援情報

PR

ビジネス+IT 会員登録で、会員限定コンテンツやメルマガを購読可能、スペシャルセミナーにもご招待!