画像をディープラーニングで扱うとき、最初からすべての画素を全結合層でつないでしまうと、つながりの数がとても多くなり、計算が重くなってしまいます。
そこで登場するのが、畳み込み層です。
畳み込み層は、画像全体を一気に見るのではなく、一部分ずつを見ながら特徴を見つけるしくみでした。
たとえば、
・ここに線がある
・ここに角がある
・ここに輪郭の変化がある
というふうに、
画像の中の小さな手がかりを少しずつ拾っていきます。
ここまでは、とても効率のよい見方です。
でも、今度は別の問題が出てきます。
それは、見つけた特徴が、まだ細かく残りすぎているということです。
そこで必要になるのが、プーリング層です。
前の章では、畳み込み層を、虫めがねで絵を少しずつ見るたとえで説明しました。
あなたは大きな絵を前にして、虫めがねでいろいろな場所を観察していきます。
するとノートには、こんなメモがたくさん増えていきます。
・このあたりに縦の線
・ここに角
・すぐ近くにも似た線
・このへんにも輪郭の変化
つまり、絵の中のあちこちで「特徴が見つかった」という記録が、細かくたくさん集まるわけです。
でも、あとで全体を理解したいなら、そのメモを全部そのまま抱えているのは少し大変です。
そこであなたは考えます。
この近くには、大事な特徴があった。細かな位置は少し違っていても、だいたい同じ意味としてまとめてよさそうだ……。
こうして、近くにある情報を、ぎゅっとまとめて整理する。
これが、プーリング層のしていることに近いです。
プーリング層を一言でいうと、畳み込み層で見つけた特徴を要約する層です。
畳み込み層が「特徴を見つける係」だとすれば、プーリング層は「見つけた特徴を整理してまとめる係」。
つまり役割を分けると、こうなります。
全結合層→ 最初から全部をつなぐが、画像には重い
畳み込み層→ 一部分ずつ見て、効率よく特徴を見つける
プーリング層→ 見つけた特徴を少しまとめて、扱いやすくする
画像認識では、特徴の位置がいつもぴったり同じとは限りません。
たとえば猫の耳を考えてみましょう。
ある写真では耳が少し左にあり、別の写真では少し右にずれているかもしれません。
でも私たちは、それでも「耳だ」とわかりますよね。
つまり認識にとって大事なのは、その特徴が厳密にどこにあったか だけではなく、そのあたりにその特徴があったことなのです。
プーリング層は、この考え方にとても合っています。
近くにある似たような特徴を少しまとめて、「このへんに大事な特徴がある」と捉えやすくする。
だからプーリング層は、画像認識でとても役立つのです。
プーリング層には、情報量を減らす役割もあります。
畳み込み層で特徴を見つけると、画像のあちこちにたくさんの反応が現れます。
それを全部そのまま次へ渡すと、情報は多いままで、扱うのも少し大変です。
そこでプーリング層は、
・大事そうな特徴は残しつつ
・細かな違いは少しまとめて
・情報をコンパクトにする
という働きをします。
旅先で取った細かなメモを、あとで見返しやすいように要点だけまとめ直す感じに近いです。
つまりプーリング層は、特徴を見失わないようにしながら、情報を軽くする役割も持っています。
ここまでの流れを、もう一度やさしく整理するとこうです。
まず、画像を最初から全結合層だけで扱うと、つながりが多すぎて計算が重くなります。
そこで畳み込み層を使って、画像の一部分ずつから効率よく特徴を見つけます。
けれど、畳み込み層で見つけた特徴も、そのままではまだ細かく残りすぎることがあります。
そこでプーリング層を使って、その特徴を少しまとめて整理する。
つまり、
・畳み込み層が「見つける」
・プーリング層が「まとめる」
という関係です。
この二つが組み合わさることで、画像の細かな特徴から始めて、少しずつ全体の理解へ近づいていけるのです。
プーリング層は、ただ情報を減らしているだけではありません。
細かな違いを少し整理することで、むしろ全体の意味をつかみやすくする役割もあります。
細部を見つけるのは畳み込み層。
その細部を抱えたままではなく、少しまとめながら次へ進めるのがプーリング層。
つまりプーリング層は、細部から全体へ向かう途中にある整理係なのです。
next ▶ 代表的なプーリング操作