>100 Views
June 30, 25
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2025年前期輪読会 ゼロから作るDeepLearning #10(6/30) CNNの実装 京都大学 理学部 数理科学系 3回 千葉 一世 0
アジェンダ ◼ Convolutionの実装 ◼ Poolingの実装 ◼ フィルターの可視化 ◼ 代表的なCNN 実装コード 1
Convolutionの実装 畳み込み層をそのまま実装しようとするとfor文の繰り返しなどで計算効率が悪い 4次元の画像を上手く二次元に変換することで、畳み込みがただの行列積で実装できる。 im2col , col2imという都合よく画像と二次元行列を変換する関数を用いる。 2
Convolutionの実装 元画像 パディング 二次元行列化 Poolingの場合 • フィルターをかけて、チャンネル間で足し合わせる操作が行列積になっている 3
Convolutionの実装 4
Poolingの実装 5
CNNの実装 一層の畳み込みと2層の線形層で構成する 実装は線形層のみのモデルに畳み込み層とプーリング層を入れるだけで変更点は特に無し 6
学習結果 線形層のみ 畳み込み層あり Train : 99.3% Test : 97.3% Train : 99.9% Test : 98.9% 7
畳み込み層の可視化 学習前のフィルター 学習後のフィルター 学習前はランダムに初期化されただけだが、学習後では縦・横・斜めの模様のような ある程度の規則性を持った状態になっている。 各フィルターが別の役割を持って画像を見ている。 8
畳み込み層の可視化 フィルターによる処理の可視化 ⊗ 9
畳み込み層の可視化 横線強調 エッジ強調 斜め強調 10
畳み込み層の可視化 一層の畳み込みでは、エッジなどの局所的・単純な構造を見るが、層を重ねる毎に 広範囲のテクスチャ・パーツなどを識別できるようになっていく。 https://donglaiw.github.io/proj/mneuron/index.html 11
• LeNet 1998年考案の初期のCNN プーリングではなくサブサンプリング 活性化関数がシグモイド関数 • AlexNet 2012年考案のCNN ReLU, Max Pooling, LRN, Dropout の使用と、 GPUによる計算速度・大規模データ によって精度が大きく向上した 12