>100 Views
June 25, 26
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2026年度前期輪読会 ゼロから作るDeep Learning 第8章 ディープラーニング (8.1~8.3) 京都大学大学院 工学研究科 M2 河田 賢斗 0
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 1
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 2
8.1 ネットワークをより深く 本章ではディープなネットワークを作り、MNISTデータセットの手 書き数字認識を行う 8.1.1 よりディープなネットワークへ ディープなネットワークについて • 畳込み層はすべて3×3の小さなフィルター • 層が深くなるにつれてチャンネル数が大きくなる • プーリング層を挿入し、中間データの空間サイズを徐々に小さく する • 全結合層では、Dropoutレイヤを使用する • 重みの初期値として、「Heの初期値」を使用 • Adamによる最適化 ネットワークの認識精度が99.38%に達した 3
8.1.1 よりディープなネットワークへ ネットワークの誤認識率はわずか0.62% →私たち人間にとっても判断が難しい画像が多かった ディープなCNNは高精度であり、かつ認識を誤った画像に対して人 間と同じような認識ミスを犯す →ディープなCNNは大きな可能性がある 8.1.2 さらに認識精度を高めるには テキスト図8-3ではMNISTデータセットに対する各手法のランキング が記載されている →ランキングの上位を占めている手法の多くは、CNNベース (ただし、さほどディープなネットワークではない) (∵ネットワークの表現力を高める必要があまりない) 4
8.1.1 よりディープなネットワークへ 認識精度をさらに高めるには? →アンサンブル学習・学習係数の減衰・データ拡張 データ拡張: 入力画像(訓練画像)をアルゴリズムにより“人工的”に拡張する (回転や縦横方向の微小な変化を与え、画像枚数を増やす) →データセットの枚数が限定的な場合に有効な手段 その他にも、「crop処理」や「flip処理」が考えられる →こうした「トリック」を利用して認識精度を高めるのが良い 5
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 6
8.1.3 層を深くすることのモチベーション 層を深くすることの重要性について ILSVRCに代表される大規模画像認識のコンペティションの結果 層を深くするにつれて、認識精度も向上する 層を深くすることの利点について ネットワークのパラメータ数を少なく出来る 5×5畳込み演算1回の領域は、3×3畳込み演算を2回行うこと でカバーできる パラメータ数を小さくしつつ、受容野を広くカバーすることが 可能となる 学習の効率性が向上する 学習データを少なくし、高速に学習が行えるようになる 7
8.1.3層を深くすることのモチベーション 具体的に、「犬」を認識する問題について • ネットワークを深くすることで、学習すべき問題を階層的に分解 することが可能となる 各層が学習すべき問題は、より単純な問題として取り組むことが 出来る • さらに、階層的に情報を渡していくことも可能となる 各層が学習すべき問題を「解きやすいシンプルな問題」へと分解 することができ、効率よく学習することが期待される 一方で、こうした技術のベースにはビッグデータやコンピュータパ ワーなどがあると考えられる 8
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 9
8.2 ディープラーニングの小歴史 ディープラーニングが注目を集めるきっかけは、 大規模画像認識のコンペティション (ILSVRC(ImageNet Large Scale Visual Recognition Challenge)) →ディープラーニングによる手法(AlexNet)が圧倒的な成績で優勝 8.2.1 ImageNet • ImageNetは100万枚を超える画像のデータセット • 様々な種類の画像が含まれており、それぞれの画像にはラベルが 紐付けられている →この巨大なデータセットを用いてILSVRCという画像認識のコンペ ティションが毎年実施される クラス分類では、ディープラーニングが着実に精度を高めている Ex. VCG, GoogLeNet, ResNet 10
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 11
8.2.2 VGG • 畳込み層とプーリング層から構成される、“基本的な”CNN • 3×3の小さなフィルターによる畳込み層を連続して行う (畳込み層を2から4回連続させ、プーリング層でサイズを半分に) → シンプルかつ応用性が高い構成であり、VGGベースのネットワーク は汎用性が高いと言える 8.2.3 GoogLeNet • ネットワークが縦方向の深さだけでなく、横方向にも深さを持っ ている • 横方向に“幅”があり、「インセプション構造」と呼ぶ 12
8.2.3 GoogLeNet インセプション構造 ビルディングブロック Filter concatenation 1×1 convolutions 3×3 convolutions 5×5 convolutions 3×3 Max pooling Previous Layer 13
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 14
8.2.4 ResNet • Microsoftのチームによって開発されたネットワーク • 層を深くしすぎると、学習が上手くいかず最終的な性能が劣るこ とも多々あった → 「スキップ構造」を導入し、層を深くしつつ性能の向上を図った • スキップ接続では、入力の を2層先の出力 にスキップして繋げる • スキップ構造により とする • VGGのネットワークをベースとして 層を深くする Weight layer relu Weight layer relu 15
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 16
8.3 ディープラニングの高速化 • 昨今は、ビッグデータとネットワークの大規模化が進む CPUを用いた計算では、心許なくなっている • ディープラーニングの多くはGPU(Graphic Processing Unit) をサポート 大量の演算を高速に処理することが可能 本章では、ディープラーニングの計算の高速化に焦点を当てる 8.3.1 取り組むべき問題 • ディープラーニングでどういった処理に時間が費やされるのか 全体に対して、畳込み層の演算がGPUでは95%, CPUでは 89% まで達する 17
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 18
8.3.2 GPUによる高速化 • 元来は、グラフィックのための専用ボードとして利用されてきた 汎用的な数値計算にもGPUは利用される (並列的な数値演算を高速に実行が可能である) 特に、ディープラーニングは大量の和積演算を行う必要がある 大量の並列的な数値演算が得意なGPUを用いることが重要 GPU : NVIDIA社・AMD社 により提供 特に、NVIDIA社のGPUがディープラーニングと親しい CUDAという統合環境が、ディープラーニングのフレームワー クで使用されているため 19
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 20
8.3.3 分散学習 • 1回の学習に必要な時間をできる限り小さくさせようとする ディープラーニングの学習をスケールアウトさせる考え方 (「分散学習」)が重要となる 高速化するためには、複数のGPUや複数台のマシンで分散して計算 を実行する必要がある (Ex.) GoogleのTensorflow・MicrosoftのCNTK 分散学習の技術的な内容(「どのように計算を分散させるか」)につい てはTensorFlowの技術論文を参照 21
アジェンダ 8.1 ネットワークをより深く • 8.1.1 よりディープなネットワークへ • 8.1.2 さらに認識精度を高めるには • 8.1.3 層を深くすることのモチベーション 8.2 ディープラニングの小歴史 • 8.2.1 ImgeNet • 8.2.2 VGG • 8.2.3 GoogLeNet • 8.2.4 ResNet 8.3 ディープラーニングの高速化 • 8.3.1 取り組むべき問題 • 8.3.2 GPUによる高速化 • 8.3.3 分散学習 • 8.3.4 演算精度のビット削減 22
8.3.4 演算精度のビット削減 ディープラーニングの高速化 (ボトルネック): 計算量・メモリ容量・バス帯域 ・メモリ容量:大量の重みパラメータを収める必要性 ・バス帯域:バスを流れるデータ量が増加し、制限を超えるとボトル ネックとなる コンピュータでは、実数の表現のために64ビットや32ビットの浮動 小数点数が用いられる 数値計算時の誤差による影響は少なくなるが、計算の処理コストや メモリ使用量が増大し、バス帯域に負荷がかかる 23
8.3.4 演算精度のビット削減 ディープラーニングについて: 数値精度のビット数をそこまで必要としない (ニューラルネットワークのロバスト性による) 入力画像に小さなノイズがかかっても、出力結果が変わらない頑健性があるという意味 32ビットの単精度浮動小数点数や64ビットの倍精度浮動小数点数な どのフォーマットがあるが、16ビットの半精度浮動小数点数でも問 題なく学習が可能である Python : 64ビットの浮動小数点が使用される Numpy:16ビットの半精度浮動小数点数が用意される Numpyを用いても認識精度自体は低下しない ディープラーニングの高速化のためにビットを削減するというテーマ は重要なテーマである 24