AI・機械学習・ニューラルネットワークといった言葉を目にする機会が多くなりましたが、実際にこれらがどのようなものなのかを理解するのは難しいもの。そこで、臨床心理士でありながらプログラム開発も行うYulia Gavrilova氏が、画像・動画認識で広く使われている畳み込みニューラルネットワーク(CNN)の仕組みについて、わかりやすく解説しています。

What Are Convolutional Neural Networks?

https://serokell.io/blog/introduction-to-convolutional-neural-networks

CNNはニューラルネットワークの1つであり、画像認識やコンピュータービジョンに関連するタスクと切っても切れない関係にあります。MRI診断や農業用の土地分類のような画像分類タスクのほか……



スマートフォンでもおなじみの物体検出でも利用されています。



CNNについて理解する前に、まずニューラルネットワークの仕組みを理解する必要があるとのこと。ニューラルネットワークは英語で「Neural Network」と表記し、Neural(神経系の)という言葉が使われていることからも分かるように、脳の神経細胞(ニューロン)を模倣したノードで構成されています。神経細胞はそれぞれが緊密に接続されているように、ノードもまたそれぞれが接続されています。



ニューロンは通常、層の形で構成されます。ニューラルネットワークのノードも同様で、例えばフィードフォワード・ニューラルネットワーク(FNN)の場合は「入力層」から入った情報が複数の「中間層」を経て「出力層」に向かうという形で、単一方向に信号が伝わります。



システム内の全てのノードは前の層と後の層のノードに接続されており、前の層から情報を受け取って、その情報に何らかの処理を行ってから、次の層に情報を送信します。

このとき、全ての接続には「重み」が割り当てられます。以下の図では、中間層の一番上にあるノードが「0.8」と「0.2」という情報を受け取っていますが、これら情報に係数である「0.73」が乗算されています。このように、異なるノードから情報を受け取った時に乗算される数字を「重み」と言います。



通常、ノードの入力値は複数あり、重みも入力値ごとに存在します。



また、入力を次の層に渡すかどうかも各ノードで決定され、しきい値を超えるノードの値だけが次の層にデータが渡されるケースもあるとのこと。ニューラルネットが初めてトレーニングされるとき、全ての重みとしきい値はランダムに割り当てられますが、その後、「同じラベルのトレーニングデータが入力された時には同じ出力になる」ように重みとしきい値が調整されます。これはバックプロパゲーションと呼ばれます。

通常のニューラルネットワークは、あまり大きなデータ処理ができません。例えば、コンピュータービジョンのトレーニングには「CIFAR」と呼ばれるデータセットが使われますが、これは32×32ピクセルかつ3つのカラーチャネルを持った画像を含みます。つまり、この場合ニューラルネットワークは32×32×3=3072の重み付けを行うことになります。しかし、画像が300×300ピクセルになると27万もの重み付けを行うことになり、トレーニングに膨大な計算能力を要するだけでなく、パラメーターの数が多いためデータセットを記憶するだけとなり、過剰適合が起こりがちだとのこと。

一方、CNNは、「複数の情報をまとめる」という数学上の概念・畳み込みを使うことで、計算にかかる負荷を軽くします。以下の図は畳み込みの処理を示しており、5×5マスで構成される左図(Input)から、3×3マスの右図(Filter/kernel)を利用して特徴を抽出しています。このように特徴を抽出することがCNNにおける畳み込み処理になります。



特徴の抽出にはカーネルというフィルターが用いられます。以下の図だと、左図の濃い緑色で塗られた9マスの特徴がフィルターで抽出され、右図の「2」と書かれたピンク色部分が書き出されています。そして「5×5マスのうちの3×3マスの特徴が1マスとして表される」という作業が、フィルターをスライドさせつつ、他のマスについても繰り返し実行されていくわけです。



CNNのアーキテクチャは基本的に「畳み込み層」「プーリング層」「全結合層」の3つで構成されます。畳み込み層が上記のような処理によってピクセル内の特徴を認識し、プーリング層は抽出した特徴を抽象化、全結合層はこの特徴を予測に利用します。



畳み込みを実行すると大量のデータが生成されるため、ニューラルネットワークのトレーニングが困難になります。このためプーリング層でデータ圧縮を行う必要があるとのことです。

CNNは通常のニューラルネットワークよりも計算効率が高く、また非畳み込みのニューラルネットワークよりも精度が高くなるというメリットを持ちます。一方で、入力データに細工して誤った出力をさせる「敵対的攻撃」を受けやすいという欠点も持ちます。これにより、犯罪者がCNNベースの顔認識システムをだまして、セキュリティシステムを通過する可能性があるとのことです。また、大量のトレーニングデータを収集・前処理する必要があり、テクノロジーの普及を妨げるとも言われています。