ディープラーニングには「全結合ニューラルネットワーク」や「畳み込みニューラルネットワーク」といった手法があります。第1部では前者をハードウエア化しましたが、第2部では後者に挑戦します。
●第1部でFPGAに実装したのは「全結合ニューラルネットワーク」
第1部では28×28画素を1列に並べてニューラルネットワークに入力し、784個全画素で積和をとっていました。この手法を「全結合ニューラルネットワーク」といいます。
●全結合ニューラルネットワークの問題点
しかしこの手法では、元々2次元である画像が1次元に並び替えられてしまうため、「縦方向の画素データの関係性」が失われてしまいます。つまり、「画素データの2次元的な形状が無視される」という問題点があります。
●3×3の画素データとフィルタ係数を畳み込む
そこで2次元の画像のまま演算を行うことを考えます。一例として、画像から3×3の画素データを取り出し、3×3のフィルタ係数との積和をとります。
その処理を図6-01のように、画像の左上から右下にかけて、3×3のエリアをずらしながら続けます。この一連の所作を「畳み込み」といいます。
図6−01 画像における畳み込み
●画素データの形状を考慮に入れた「畳み込みニューラルネットワーク」
ニューラルネットワークの最初の層をこのような「畳み込み層」とすれば、「画素データの2次元的な形状」を推論に反映させることができ、さらなる正解率の向上が望めそうです。このような手法を「畳み込みニューラルネットワーク」といいます。
●演算量が多いのでFPGA化の際は工夫が必要
「全結合ニューラルネットワーク」に比べて「畳み込みニューラルネットワーク」はより大量の積和演算が必要になります。第2部では演算の並列化・パイプライン化により高速化を図ります。またFPGAに実装可能になるよう、回路の簡略化も検討します。
なお第2部では、この書籍の242ページにある畳み込みニューラルネットワークを題材にハードウエア化を図ります。 |