Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゼロから始めるニューラルネットワーク CNN編
Search
Yamamoto
June 05, 2024
Technology
0
130
ゼロから始めるニューラルネットワーク CNN編
KC3 2023の学生勉強会に登壇した際に使用したスライドです。
Yamamoto
June 05, 2024
Tweet
Share
More Decks by Yamamoto
See All by Yamamoto
ふんわり理解するロジスティック回帰
yamamotoeigo
0
76
Other Decks in Technology
See All in Technology
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
220
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1.1k
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
1
950
RSCの時代にReactとフレームワークの境界を探る
uhyo
10
3.5k
普通のチームがスクラムを会得するたった一つの冴えたやり方 / the best way to scrum
okamototakuyasr2
0
110
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
Django's GeneratedField by example - DjangoCon US 2025
pauloxnet
0
160
slog.Handlerのよくある実装ミス
sakiengineer
4
470
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
460
S3アクセス制御の設計ポイント
tommy0124
3
200
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.8k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Faster Mobile Websites
deanohume
309
31k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Balancing Empowerment & Direction
lara
3
620
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Designing Experiences People Love
moore
142
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Transcript
ゼロから始める ニューラルネットワーク CNN編 KINDAI Info-Tech HUB ⼭本 瑛悟
始める前に • 勉強会中たびたび質問します(HTTP 200 OK) • スライドのこの⾊の単語・⽂章はぜひメモを︕ • 時間の都合上勉強会中は質問受け付けられないかも •
トイレや具合が悪くなった⼈は何も⾔わず⾏って頂いて⼤丈夫で す︕ • つまらねえなと思ったら寝るかYouTubeとかみててください
⽬次 • ⾃⼰紹介 • ニューラルネットワークの概要 • ニューラルネットワークの基礎 ~休憩~ • CNNの仕組み
• やってみよう ~説明編~ • やってみよう ~ハンズオン編~ 座学: 約60分 ハンズオン: 約30分
⾃⼰紹介 • 名前: ⼭本 瑛悟 • 所属: 近畿⼤学理⼯学部情報学科 • 団体:
KINDAI Info-Tech HUB/CSG • 学年: 学部4年 • 専⾨: ⼤規模ニューラルネットワークの分散処理 • やってたこと: web系, 深層学習, 強化学習, 深層強化学習 • ひとこと: はやおきつらい
ニューラルネットワークの概要 キーワード: 線形分類、⾮線形分類、パーセプトロン、ニューラルネットワーク
どんなイメージ︖
どんなイメージ︖ • ブラックボックス… • なんか胡散臭い • なんでもできる万能さん • かわいい •
なんもわからん • 完璧で究極のアイドル
ニューラルネットワークの種類(⼀部) • ディープニューラルネットワーク • 畳み込みニューラルネットワーク(CNN): 画像認識・分類 • 再帰型ニューラルネットワーク: 系列データ •
グラフニューラルネットワーク: グラフ構造のデータ • 敵対的⽣成ネットワーク(GAN): データ⽣成
ニューラルネットワークの概要 • ニューラルネットワークって何︖ → ⼀⾔で表すと
線形分類 0 1 2 3 4 5 0 1 2
3 4 y
線形分類 0 1 2 3 4 5 0 1 2
3 4 y
線形分類
パーセプトロン • 1958年: ローゼンブラットが提案 • 事前に決められた出⼒(学習データ)を実現するためのパラメータ (重み)を⼊⼒に合わせて最急降下法で推定 • ニューラルネットワークの元となったアイデア(後ほど説明)
(単純)パーセプトロン 𝑥! : ⼊⼒ 𝑤! : 重み 𝑓: 活性化関数(ステップ関数) 𝑦:
出⼒
線形分類
ロジスティック回帰との違い(分からなくてもおk) • パーセプトロンはロジスティック回帰とほぼ等価と批判を受けた • 活性化関数(後ほど説明) • パーセプトロン: ステップ関数 → 0と1の⼆値の出⼒
• ロジスティック回帰: シグモイド関数 → 0~1の間の確率的な出⼒
⾮線形分類
⾮線形分類 「線形分類不可能な問題が解けマセーン」 「パーセプトロンを複数繋げてみたらええんとちゃう︖」 パーセプトロンの「層」を増やすたびに、決定境界の形が 「直線→領域→ドーナツ型領域」と複雑さを増やしていける
(単純)パーセプトロン
ニューラルネットワーク ⼊⼒層 中間層 出⼒層 𝑾! 𝑾"
⾮線形分類するとこんな感じ 領域 ドーナツ型領域
おまけ • ディープニューラルネットワークは中間層を2層以上持つもの 深さ 幅
ニューラルネットワークの基礎 キーワード: 活性化関数、最急降下法、確率勾配降下法、誤差逆伝播学習法、学 習、畳み込みニューラルネットワーク
数式がちょこっと出てきます。 眠気に注意してください。
ニューラルネットワークの構造 ⼊⼒層 中間層 出⼒層 𝑾! 𝑾"
ニューラルネットワークの中⾝ 𝑢! = # "#$ % 𝑤" 𝑥" + 𝑏!
𝑦 = 𝑓(𝑢) 𝑥# : ⼊⼒ 𝑤# : 重み 𝑓: 活性化関数 𝑦: 出⼒ ユニット 𝑚 = 2のとき 𝑢 = 𝑤! 𝑥! + 𝑤" 𝑥" + 𝑏
各パラメータの解説 • 重み(weight) • 各⼊⼒の重要度を⽰す • 重みは誤差を最⼩化するように調整される → 最適化アルゴリズム •
バイアス(bias) • ユニットの出⼒を調整 • 活性化関数の閾値を調整 • ユニットの「感度」を調整する役割 • バイアスも同様に調整される
各パラメータの解説
補⾜(式の表現) 𝒖 = 𝑾𝒙 + 𝒃 𝑧 = 𝑓(𝑢) 𝒛
= 𝒇(𝒖) 𝑢! = # "#$ % 𝑤" 𝑥" + 𝑏!
活性化関数とは • ニューラルネットワークの各ニューロンの出⼒に適⽤される関数 • ⾮線形性の導⼊(等価変換しても⼀次関数のまま) • ニューロンの出⼒の範囲を制限する役割 • 閾値を超えるとそのニューロンは発⽕(アクティブ化)する •
学習の安定化 • 過学習を防ぐ • 現代では、ReLUなどが⼀般的
活性化関数
ニューラルネットワークにおける学習とは • ⼀⾔で⾔うと → 損失関数(コスト関数)を最⼩化する → 損失関数を最⼩化するために重みやバイアスを更新するプロセス • 損失関数 •
ニューラルネットワークの出⼒と⽬的の出⼒との差を数値化したもの • 最適化アルゴリズム • 勾配法(勾配降下法)を⽤いる
損失関数の具体例 活性化関数はシグモイド関数とする 𝑓 𝑥 = 1 1 + 𝑒#$ モデルの出⼒を
̂ 𝑧 = 𝑓 𝑥! 𝑤! 、正解値が𝑧 = 1とする。 ℒ = (𝑧 − ̂ 𝑧)" = 1 − 1 1 + 𝑒#$!%! " 最⼩になるような 𝑤! を求める
補⾜ ← パラメータ2つ GPT-4: 1兆7,600億
最適化アルゴリズムについて • 勾配法: 関数の傾き(勾配)をもとに最⼩値を探す⼿法 • 勾配降下法の種類 • 最急降下法 • 確率的勾配降下法(SGD)
• Adagrad • RMSprop • Adadelta • Adam • AdamW
勾配降下法 勾配降下法 1.⼊⼒からニューラルネットワークの出⼒を計算する 2.出⼒から損失関数を計算 3.損失関数の勾配を計算する(→誤差逆伝播法) 4.それを⽤いて重みを更新 𝑤& = 𝑤 −
𝜂 𝜕ℒ 𝜕𝑤 𝜂: 学習率
最急降下法 ⽋点 • 1回のパラメータ更新でデータ(バッチ)全部を使う • 計算量が⼤きい(並列計算で対策可能) • 局所的最適解から抜け出せない → 確率的勾配降下法(SGD)
確率的勾配降下法(SGD) 特徴 • SGDではランダムに選ばれた1つのデータを⽤いる • 毎回の更新で違うデータを使うので局所的最適解から抜け出せ る可能性がある ⽋点 • 並列化ができない
→ ミニバッチSGD
局所的最適解と⼤域的最適解
準備
準備
準備
動かしてみましょう︕ visualizeng_optimiser.ipynbを実⾏してみてください
勾配消失問題
活性化関数
まとめ① • ニューラルネットワークは⾮線形分類を⾏う︕ → より複雑な関数を表現できるように • 学習とはつまり、正解との誤差をもとにパラメータを更新すること
CNNの仕組み キーワード: 畳み込み層、プーリング層、CNN、フィルター(カーネル)、特徴量
CNNとは • 畳み込み層とプーリング層を持つニューラルネットワーク • 画像分類や画像認識の分野で多く⽤いられている • 局所的な特徴抽出 • パラメータ数の削減 •
重みとしてフィルタを⽤いる
CNNの構造
畳み込み層 • 似たパターン → 値が⼤きくなる 特徴量抽出 𝑥!! 𝑥!" 𝑥!# 𝑥!$
𝑥!% 𝑥"! 𝑥"" 𝑥"# 𝑥"$ 𝑥"% 𝑥#! 𝑥#" 𝑥## 𝑥#$ 𝑥#% 𝑥$! 𝑥$" 𝑥$# 𝑥$$ 𝑥!% 𝑥%! 𝑥%" 𝑥%# 𝑥%$ 𝑥%% ℎ!! ℎ!" ℎ!# ℎ"! ℎ"" ℎ"# ℎ#! ℎ#" ℎ## 𝑢"" 𝑢## x = 𝑢!! 𝑢!" 𝑢!# 𝑢"! 𝑢"" 𝑢"# 𝑢#! 𝑢#" 𝑢## 𝑢!! = 𝑥!! ℎ!! + 𝑥!" ℎ!" + ⋯ + 𝑥'' ℎ'' フィルター(カーネル) 特徴マップ フィルタの数だけ特徴マップが⽣成
畳み込み層
畳み込み層
プーリング層 位置がある程度変化しても値が変化しない → 頑健性 𝑥!! 𝑥!" 𝑥!# 𝑥!$ 𝑥"! 𝑥""
𝑥"# 𝑥"$ 𝑥#! 𝑥#" 𝑥## 𝑥#$ 𝑥$! 𝑥$" 𝑥$# 𝑥$$ 𝑢!! 𝑢!" 𝑢"! 𝑢"" 𝑢!! = 𝑚𝑎𝑥 𝑥!! 𝑥!" 𝑥"! 𝑥"" 最⼤プーリング
全結合層 • 全てのニューロンが全ての⼊⼒と結合されている層 • 「どれくらい似てるか」をスカラー値で出⼒する • 特徴マップを結合して⼀次元のスカラー値を出⼒ → 元の画像データがどのラベルに属するかを⽰す確率
出⼒層 • 多くは、全結合層の出⼒に活性化関数を通したもの • ソフトマックス関数 𝑦! 𝑦" 𝑦$ ⋮ 𝑢!
𝑢" 𝑢$ 𝑦! = 𝑒"& 𝑒"' + 𝑒"( + ⋯ 𝑒") 分⼦: ⼤きい値をより強調 分⺟: 規格化のため 0~1の値を取り、総和が1 → 確率に対応
誤差関数 • 交差エントロピー • 確率分布間の「距離」を測定 𝐸 = − 7 ()!
* 𝑑( log 𝑦( 教師データ(正解)
説明できなかったものたち • 勾配消失問題 • 誤差逆伝播法 • 諸々の数学的な定理 • 万能近似定理 •
ニューラルネットワークにおけるテクニックや研究動向
やってみよう 〜説明編〜
サンプルのCNNの構造 ⼊ 畳 プ 畳 プ 全 出 ⋮ ⋮
⋮ ⋮ ⋮ ⋮ ⋮
Conv1 幅 ⾼ " RGBで3チャンネル ※チャンネル数=特徴マップの数 ••• 幅: 32 ⾼さ:
32 チャンネル: 32 •••
conv1 → max_pool2d ••• ••• ••• 幅: 32 ⾼さ: 32
チャンネル: 32 幅: 16 ⾼さ: 16 チャンネル: 32
max_pool2d → conv2 ••• ••• ••• 幅: 16 ⾼さ: 16
チャンネル: 32 幅: 16 ⾼さ: 16 チャンネル: 64
conv2 → max_pool2d(2回⽬の⽅) ••• ••• ••• 幅: 16 ⾼さ: 16
チャンネル: 64 幅: 8 ⾼さ: 8 チャンネル: 64
max_pool2d(2回⽬) → flatten • Flatten(平滑化) • CNNでは全結合層に渡す前に使う • Softmax関数で扱えるようにする •
多次元テンソルを任意の次元まで平滑化する → 多次元の特徴マップを⼀次元に変換
max_pool2d(2回⽬) → flatten ••• ••• 幅: 16 ⾼さ: 16 チャンネル:
64 幅: 8 ⾼さ: 8 チャンネル: 64 [………] 配列のサイズ 8x8x64 flatten
flatten → fc1 → relu → fc2 [………] 配列のサイズ 8x8x64
[………] 配列のサイズ 256 [………] 配列のサイズ 10 → 各クラスの確率 torchのCrossEntropyLossは ⾃動的にSoftmax関数使ってくれる
CNNのアニメーション 「CNN Explainer」
ではやってみましょう︕ • 層の数 • チャンネルの数 • 活性化関数の種類 • 最適化アルゴリズムの種類 •
バッチ正規化 • ドロップアウト 精度を上げられるよう に⼯夫してみよう︕
終わりに • ⼤規模で複雑なモデルには莫⼤な計算資源が必要 • ニューラルネットワークはブラックボックス︖ • SIGNATE、Kaggleなどのコンペにぜひ︕ • マネタイズが難しい分野 •
AIに騙されないように︕
アンケートのお願い
引⽤・参考 • https://tjo.hatenablog.com/entry/2020/08/16/153129 • https://axa.biopapyrus.jp/deep-learning/perceptron.html • 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) •
⾼校数学からはじめる深層学習⼊⾨(畳み込みニューラルネットワークの理解) • Chat-GPT(校正と図の出⼒に使⽤)