輪読会「ゼロから作るDeep Learning」第6回

はじめに

てくますプロジェクトでは、てくますゼミと呼ばれる輪読会を隔週で開催しています。

少人数であーだこーだ議論しながら、考える楽しさを分かち合う、ゼミのようなコミュニティです。主に、AIなどの「IT × 数学」領域について学習しています。

てくますゼミ(Connpass)

てくますゼミの風景
てくますゼミの風景

現在は「ゼロから作るDeep Learning」というディープラーニングの有名な本を読み進めています。

今回は本書第6回の輪読会ということで、7章を読み進めました!

本記事では、今回の勉強会で学んだことをざっくりと紹介していきます。

学習内容(7章)

畳み込みニューラルネットワーク(CNN)

これまで見てきたニューラルネットワークでは、入力データが画像の場合でもデータを1次元にして考えていました。しかしそれでは、画像が持っていた隣接情報が失われるという問題点があります。

この問題点を解決するために、畳み込みニューラルネットワーク(CNN)では、データを1次元にせず、そのまま入力することを考えます。

畳み込みニューラルネットワークには2つの新しい層が登場します。

  1. 畳み込み層(Convolutionレイヤ)
    CNNの核となる層です。入力データに対してフィルターを考え、畳み込み演算を行います。畳み込み演算とは、入力データの要素と対応するフィルターの要素を掛け算し、それらの和を取る積和演算(つまりは内積)のことです。
  2. プーリング層(Poolingレイヤ)
    プーリングは、縦・横方向の空間を小さくする演算です。Maxプーリングの場合、対象領域の値のうち最大値を出力します。入力データの小さなずれに対し、プーリングは同じような結果を返すため、この層で小さなずれを吸収します。

○×判定で畳み込み層のイメージをつかむ

畳み込みニューラルネットワークのイメージ

ゼミでは○×判定を用いて、畳み込み層のイメージを説明しました。この例は、「本質を捉えたデータ分析のための分析モデル入門」という本を参考にしています。

畳み込み演算は内積計算であり、内積を計算する操作は、類似度を測ることを意味しています。

画像と「右上がりの線を表すようなフィルター」の内積をとることで、画像のどの位置が「右上がりの線」と類似しているかを知ることができます。

上の画像の例の場合、「○」の文字では左上と右下に「右上がりの線」の傾向が見られます。一方、「×」の文字では右上と左下に「右上がりの線」の傾向が見られます。

これは、「◯」や「×」の形状と合致する結果といえるでしょう。

上の例では、「右上がりの線を表すようなフィルター」と書きましたが、フィルターの値は人が決めるのではなく、この値をディープラーニングで学習します。

畳み込み層を重ねることで、より複雑で抽象化された情報が抽出されます。このことについてはゼミでも話題になりましたが、私はまだあまり理解できていません。

最後に

今回はCNNについて学習しました。

「ゼロから作るDeep Learning」の輪読会は今回でおしまいです。ディープラーニングの理論の根幹について理解することができました。

6人で進めてきた輪読会はとても楽しかったです! 

5月からは続編の「ゼロから作るDeep Learning② 」を輪読します。まだまだ輪読会は続けていくよ。自然言語処理について学ぶのが楽しみです。

読んでいただき、ありがとうございました。

では、また!

本シリーズの記事はこちら

各ゼミの第1回記事はこちら