カーネル(畳み込み)とは

かーねるkernel (convolution)別名 畳み込みカーネル

1行定義

カーネル(畳み込み)とは、CNNの畳み込み層で入力の上をずらしながら当てる小さな重みの配列で、局所的な特徴を取り出す役割をもつもののことです。

くわしく

カーネルは、CNN(畳み込みニューラルネットワーク)の畳み込み層で使う、3×3や5×5などの小さな重みの配列です。シラバスでは「カーネル」が教師あり学習と畳み込み層の両方に出てくるため、このページではSVMのカーネルと区別して「カーネル(畳み込み)」と表記しています。

畳み込みでの働き

カーネルを入力画像の左上に重ね、重なった画素の値とカーネルの値を掛け合わせて合計します。この合計にバイアスを加えた値が、出力の1マスになります。カーネルを少しずつずらしながら同じ計算を繰り返すと、特徴マップができあがります。カーネルが表す模様に似た部分ほど、大きな値が出ます。

従来の画像処理では、縦のエッジを強調するSobelフィルタのように、カーネルの値を人が設計していました。CNNでは、カーネルの値は重みとして誤差逆伝播法で学習されます。人が決めるのは、カーネルの大きさや枚数です。

フィルタとの関係

カーネルとフィルタは、ほぼ同じ意味で使われることの多い言葉です。厳密には、カラー画像のように複数のチャネルをもつ入力では、チャネルごとのカーネルを束ねたものを1枚のフィルタと呼びます。3チャネルの入力に3×3のフィルタを使うなら、1枚あたり3×3×3=27個の重みをもちます。フィルタの枚数が、出力される特徴マップのチャネル数になります。

大きさの選び方

カーネルが大きいほど一度に広い範囲を見られますが、重みが増えます。VGGは3×3の小さなカーネルを何層も重ね、少ない重みで広い範囲を見る構成をとりました。出力の縦横の大きさは、入力の大きさをW、カーネルの大きさをK、パディングをP、ストライドをSとして、(W + 2P − K) ÷ S + 1で求めます。割り切れないときは、割り算の結果の小数点以下を切り捨てます。

SVMのカーネルとの違い

SVMのカーネルは、データを高次元の空間に写したときの内積を、写像を計算せずに求める関数のことで、別物です。

覚え方

「画像の上をすべっていく、小さな重みの窓」と覚えます。

G検定での出題

フィルタとの関係、カーネルの大きさと出力サイズやパラメータ数の計算、値を人が設計せず学習で求める点、SVMのカーネルとの取り違えが問われます。

シラバスでは「カーネル」と表記されています。

混同しやすい用語

用語意味
カーネルトリックデータを高次元の空間に写像したあとの内積を、写像を直接計算せずにカーネル関数で元の空間のまま求める、計算上の工夫

◯×チェック

  1. 3チャネルの画像に、3×3のカーネルをもつフィルタを64枚適用する畳み込み層の重みの数は、バイアスを除くと1,728個である。

    答えを見る

    答え ◯ 正しい

    フィルタ1枚の重みは3×3×3=27個で、それが64枚なので27×64=1,728個です。バイアスを64個加えると1,792個になります。

  2. CNNのカーネルの値は、エッジ検出などの目的に合わせて、人があらかじめ設計して与える。

    答えを見る

    答え × 誤り

    カーネルの値は重みとして、誤差逆伝播法による学習で決まります。人が決めるのは、カーネルの大きさや枚数などのハイパーパラメータです。

  3. ストライドが1でチャネル数も変えない場合、3×3のカーネルの畳み込み層を2層重ねると、5×5のカーネルの層1つと同じ広さの入力範囲を見られ、重みの数も少なく済む。

    答えを見る

    答え ◯ 正しい

    入力と出力のチャネル数をどちらもCとすると、3×3を2層では18C²個、5×5を1層では25C²個の重みです。VGGが小さなカーネルを重ねた理由の1つです。

練習問題

カーネル(畳み込み)の問題(4問)
  1. エッジ検出フィルタの出力計算
  2. CNNとSVMのカーネルの違い
  3. 射影ショートカットの重みの数
  4. VGGの3×3畳み込みの積み重ね

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術18

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習