学習器の構築

2023/10/22

学習器の構築

名前:坂島悠太
学籍番号:21060009
 

学習器の進化

前々回、ディープラーニングにおける推論の概要というテーマで記事を書いた際、ディープラーニングを構成する要素は次のようなものだと紹介しました。まずニューラルネットワークの構成要素である人工ニューロンがありました。これは入力信号が一定の値を超えると自身も信号を発信していく仕組みです。この人工ニューロンが発した信号には重みがかけられ、次のニューロンの層に信号が渡されます。最初に入力を受け取る層を入力層として、その次が中間層、最後に出力層と呼ばれ、このネットワークをニューラルネットワークと呼びました。そしてニューラルネットワークの中間層を増やしたものがディープラーニングです。この説明はディープラーニングの基礎でよくされる説明ですが、現在は画像認識でこのディープラーニングだけの設計はほぼ使われていないと言います。その代わり、現在の画像認識ではコンボリューションニューラルネットワークと呼ばれるネットワークがよく使われます。

コンボリューションニューラルネットワークとは

従来のコンボリューションニューラルネットワークをもう少し細かく見てみましょう。まず画像のピクセル数に応じた数の入力層があり、そこから全結合で人工ニューロンと活性化関数がペアになった層に繋がっていて、このペアの層を幾度か通して、最終的に最後の活性化関数(SoftMax)の層に繋がっていました。活性化関数は例えばtanhという関数であれば出力する値を-1から+1の範囲に収め、出力層にある最後の活性化関数(SoftMax)の層では最終的に出力する確率の値を合計して100%になるように正規化していました。これに対して、コンボリューションニューラルネットワークでは、与えられた画像をコンボリューション層とpooling層と活性化関数の層が一つになった層に幾度か通されて、最後は普通のニューラルネットワークと同じ全結合層を通して、最後の活性化関数(SoftMax)の層に渡され、結果が出力されます。Nvidiaが公開している畳み込みニューラルネットワークの構造を表す画像がこちらです。
Convolutional Neural Network – What Is It and Why Does It Matter? (nvidia.com)
ここでキーとなるコンボリューション層とpoolingはそれぞれ、画像フィルターと画像圧縮の工程に似ていると感じます。コンボリューション層では画像にいくつかのフィルターを掛けてそれぞれのフィルターごとに画像が出力されます。このフィルターのことをカーネルと言います。この層を通してフィルターと同じ枚数のそれぞれ異なる画像が出力されます。説明の画像を見てわかる通り、最初の画像からいくつかの画像が生成されています。この画像に次はpoolingと呼ばれる処理を行います。このpoolingとはダウンサンプリングとも呼ばれ、画像のサイズを小さくします。このpoolingにも様々な方式があり、隣接する画素の最大値を圧縮後の画像の1画素にするmaxpoolingや、平均を取るaveragepoolingと呼ばれるものもあります。このコンボリューションとプーリングはそれぞれ特徴抽出と局所ごとに特徴をまとめあげるという役割を持っています。そしてこのコンボリューションニューラルネットワークでもtanhのような活性化関数を通して、次の層へと渡されます。この3つの層を幾度か通すと、最後に普通のニューラルネットワークと同じ全結合層と最後の活性化関数(SoftMax)の層に渡されて、正規化されたものが出力されます。これを一連の流れとしてコンボリューションニューラルネットワークは構築されます。

コンボリューションニューラルネットワークのヒント

 構築の際には中間層の数や、活性化関数の選び方、各層のニューロン数などを決めなければなりません。しかし、こういった数には決まりがなく、試行錯誤しながらより良いものを作っていくようにしていくしかありません。それに対して、入力層と出力層は、与えられた問題の種類から決めることが可能です。入力層は画像の画素数に応じて決めて、出力層は分類問題なら分類される数だけ用意すればよいです。また、最後の活性化関数も今回は分類問題なのでsoftmaxを用いました。その他にも二値分類ならシグモイド関数。回帰問題には活性化関数を用いないなど、最後の活性化関数に関しては用いる組み合わせがある程度決まっています。

参考

[Deep Learning入門:ニューラルネットワーク設計の基礎](https://www.youtube.com/watch?v=O3qm6qZooP0 )
[デコンボリューションとアンプールを使用したイメージ オート エンコーダー - Cognitive Toolkit - CNTK | Microsoft Learn]( https://learn.microsoft.com/ja-jp/cognitive-toolkit/image-auto-encoder-using-deconvolution-and-unpooling )
[Convolutional Neural Network – What Is It and Why Does It Matter? (nvidia.com)]( https://www.nvidia.com/en-us/glossary/data-science/convolutional-neural-network/ )
[深層畳み込みニューラルネットワークによる画像特徴抽出と転移学習]( https://www.nlab.ci.i.u-tokyo.ac.jp/pdf/CNN_survey.pdf )
bsi_川上和吾
2023.12.21

参考図書の選定も纏め方も素晴らしいね!!

坂島 悠太
2023.12.21

ありがとうございます!とても嬉しいですー!