隠れ層と隠れニューロンはいくつにするべきなのか?

  • 2018.08.03
  • AI
隠れ層と隠れニューロンはいくつにするべきなのか?

1.隠れ層と隠れニューロンはいくつにするべきなのか?まとめ

・ニューラルネットワークの隠れ層と隠れニューロンの必要数の考え方の解説
・ニューラルネットワークを単層パーセプトロンの集合と考える
・境界を表す直線の1つ1つが隠れニューロンで、それを出力層に繋げるように隠れ層を設計する

2.ニューラルネットワークに必要な隠れ層と隠れニューロンの求め方

以下、www.kdnuggets.comから「How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?」の意訳です。

ANN(artificial neural networks:人工ニューラルネットワーク)を学び始めた初心者はいくつかの似たような質問をする可能性が高いです。

これらの質問の中には、「ニューラルネットワークの隠れ層(hidden layers)をいくつにするべきですか?」「それぞれの隠れ層の中に隠れニューロンは幾つ必要ですか?」「隠れ層や隠れニューロンを使用する理由は何ですか?」「隠れ層や隠れニューロンの数を増やせばどんな時も良い結果を得られますか?」

私はそのような質問に答えることができることを喜ばしく思います。はっきりしておきますが、ニューラルネットワークを用いて解決しようとする問題が複雑な場合、上記のような質問への回答も非常に複雑すぎる事になるかもしれません。

しかし、この記事を最後まで読めば、少なくともこれらの質問にどのように答えるべきか、及び、簡単な例に基づいて自分自身で試算する事ができるようになります。ANNは生物学な脳の構造にヒントを得て開発されています。構造をシンプルにするために、コンピュータサイエンスでは、それは一連の層(レイヤー)として実装し、これらのレイヤーは、入力層、隠れ層、出力層の3つのクラスに分類されます。

入力層と出力層の数とそれらのニューロンの数を知る事は簡単です。全てのニューラルネットワークには1つの入出力層があります。入力層のニューロンの数は、処理されるデータ、つまり入力変数の数に等しいです。出力層のニューロンの数は、各入力に関連する出力の数に等しいです。しかし、問題は、隠れた層とその層に属するニューロンの数を知ることです。

人工知能を使って何かを分類する際の各隠れ層とそのニューロンの数を知るためのガイドラインは次のとおりです。

・データを分類するために必要と予期される領域(決定境界)を描きます。

・境界を線の集合として表現します。そのような線の組み合わせは、決定境界に帰着しなければならないことに注意してください。

・選択された線の数は、第1隠れ層内の隠れニューロンの数を表します。

・前のレイヤで作成された線に接続するために、新しい隠れた層を追加されます。前の隠れ層の線との間に接続を作成する必要があるたびに、新しい隠れた層が追加されることに注意してください。新しい隠れ層のそれぞれに属する隠れニューロンの数は、作られる接続の数に等しくなります。

物事をより明確にするために、多くの例についてこのガイドラインを適用してみましょう。

例1
まず、図1に示すような2つのクラスに分類する簡単な例を見てみましょう。各サンプルには、クラスラベルを表す2つの入力と1つの出力があります。それはXORの問題によく似ています。

最初の質問は、隠れたレイヤーが必要かどうかです。隠れ層が必要かどうかを判断するためのルールは次のとおりです。人工ニューラルネットワークでは、非線形にデータを分離しなければならない場合に限り、隠れ層が必要です。(言い換えれば、直線でデータを分類できない場合に隠れ層が必要になります)

図2を見ると、クラスは非線形に分離される必要があります。1つの直線では分類できません。結果として、最良の分類境界を得るためには隠れたレイヤーを使用する必要があります。このような場合でも、隠れたレイヤーを使用しない事もできますが、それは分類精度に悪い影響を及ぼします。従って、隠れたレイヤーを使用する方がよいでしょう。

隠れ層が必要な事がわかったので、私達は以下の2つの重要な質問に答える必要があります。
その質問は次のとおりです。

(1)幾つの隠れ層が必要ですか?
(2)それぞれの隠れ層に必要な隠れニューロンの数はいくつですか?

先のガイドラインに従うと、最初の手順は、2つのクラスを分割する決定境界を描画することです。図2に示すように、データを正しく分割する可能性のある決定境界は複数あります。詳細は、図2(a)を参照してください。


ガイドラインに従うと、次のステップは、複数の直線で決定境界を表現することです。

直線を使用して決定境界を表すという考えは、任意のANNが単層パーセプトロンを使って表現できるという事実から来ています。単層パーセプトロンは線形分類器であり、次の式に従って作成された線を用いてクラスを分離します。

Y = (W1 x X1 + b1) + (W2 x X2 + b2) … (Wn + Xn + bn)

ここで、Xは入力、Wは重み、bはバイアス、Yは出力です。隠れニューロンは重みの数を増加させるので、隠れニューロンの数は問題解決に必要な最小限の数にすることが推奨されます。必要以上に隠れたニューロンを使うと、複雑さが増します。

我々の例に戻ります。ANNが複数の単層パーセプトロンを使用して構築されているということは、ニューラルネットワークが表現する領域は複数の直線を使用して構築されるということと同じです。

この例では、決定境界が1組の線で表現できています。線は、境界曲線が向きを変える点から始まります。このような点では、2つの線が配置され、それぞれ異なる方向に向けて伸びる事になります。

図3では灰色の円で示されるように境界曲線が方向を変える点は1つだけです。そのため、境界を表現するために必要な線は2本だけです。言い換えれば、2つの単層パーセプトロンネットワークが存在し、各パーセプトロンが直線を生成しています。

決定境界を表現するのに必要な直線は2つであることがわかったので、最初の隠れ層には2つの隠れニューロンがある事もわかります。

この時点では、2つの隠れニューロンを持った1つの隠れ層です。それぞれの隠れニューロンは図3の直線、つまり「○と×を分類する分類器」と見なす事ができます。各分類器からの出力(つまり隠れニューロン)は2つ存在します。しかし、私達が欲しいのは1つの出力を持つ1つの分類器です。2つの分類器ではありません。

その結果、2つの隠れニューロンの出力を一つの出力にまとめる事になります。言い換えれば、2つの直線は別のニューロンに接続されることになります。その結果を図4に示します。

幸いにも、我々はその仕事をするために単一のニューロンを持つ別の隠れた層を追加する必要はありません。出力層のニューロンがこの作業を行います。そのようなニューロンは、ネットワークからの出力が1つだけになるように、以前に生成された2つの直線をまとめます。


隠れ層とそのニューロンの数がわかったので、図5に示すようにネットワークアーキテクチャが完成しました。

例2

別の分類の例を図6に示します。これは、各サンプルが2つの入力と1つの出力を持つ2つのクラスがある前の例と似ています。違いは決定境界にあります。この例の境界は、前の例より複雑です。

ガイドラインによると、最初のステップは決定境界を描くことです。我々の議論で用いられる決定境界を図7(a)に示します。

次のステップは、決定境界を一連の線に分割することであり、各線はANNのパーセプトロンとしてモデル化されます。直線を描く前に、図7(b)に示すように、境界の方向を変更するポイントに印をつける必要があります。

問題はいくつの直線が必要なのかです。トップポイントとボトムポイントのそれぞれには、2つのラインが関連付けられており、合計合計4ラインが存在します。中間ポイントは、他の点から2本の線が引かれています。作成する線を図8に示します。

最初の隠れ層には直線の数に等しい隠れニューロンを持つため、最初の隠れ層には4つの隠れニューロンがあります。言い換えれば、1つの層のパーセプトロンによってそれぞれが生成される4つの分類器が存在します。

現在のところ、ネットワークは4つの出力を生成します。各出力は各分類器から1つです。

次に、ネットワークが単なる出力を生成するように、これらの分類器を接続します。言い換えれば、線は、他の隠れた層によって一緒に接続され、単一の曲線を生成することになります。

 

モデル設計者は、ネットワークのレイアウトを選択する必要があります。 1つの実現可能なネットワークアーキテクチャは、2つの隠れたニューロンを有する第2の隠れ層を構築することである。最初の隠れニューロンは最初の2本の線を接続し、最後の隠れたニューロンは最後の2本の線を接続します。 2番目の隠れ層の結果。第2層の結果を図9に示します。

ここまでは、2つに分かれた曲線があります。したがって、ネットワークからの2つの出力がある事になります。次に、ネットワーク全体からの出力を1つだけにするために、このようなカーブを接続します。この場合、新しい隠れ層を追加するのではなく、出力層ニューロンを使用して最終的な接続を行うことができます。最終的な結果を図10に示します。

ネットワーク設計が完了した後、完全なネットワークアーキテクチャを図11に示します。

 

3.隠れ層と隠れニューロンはいくつにするべきなのか?感想

隠れ層と隠れニューロンの数はハイパーパラメータの範疇かと思ってたのでなるほどな、と納得しました。

4.隠れ層と隠れニューロンはいくつにするべきなのか?関連リンク

1)www.kdnuggets.com
Beginners Ask “How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?”

2)www.slideshare.net
brief-introduction-to-deep-learning-solving-xor-using-anns