430 Views
May 19, 25
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2025前期輪読回 #3 (2025/5/19) 第3章ニューラルネットワーク (3.5~3.7) 京都大学物理工学科 B4 鈴木 盛之 0
アジェンダ ■ ソフトマックス関数 ■ MNISTデータセット ■ ニューラルネットワークの推論処理 ■ バッチ処理 ■ まとめ 1
アジェンダ ■ ソフトマックス関数 ■ MNISTデータセット ■ ニューラルネットワークの推論処理 ■ バッチ処理 ■ まとめ 2
出力層の設計 - 恒等関数とソフトマックス関数 回帰問題には恒等関数、分類問題にはソフトマックス関数を用いる 回帰問題と分類問題のどちらに対応するかで、 出力層の活性化関数を変える必要がある 回帰問題 恒等関数 ある入力データから (連続的な)数値の予測を行う 入ってきたものをそのまま出力する 分類問題 ソフトマックス関数 データがどのクラスに 属するかを分類する (15℃, 10m など...) 入力の値を0〜1に変換する ( 確率として捉えられる) 3
ソフトマックス関数 ソフトマックス関数の定義 ソフトマックス関数は以下の式で表される 入力信号の指数関数 全ての入力信号の 指数関数の和 4
ソフトマックス関数 ソフトマックス関数をPythonで実装する オーバーフローするかも・・・ 5
ソフトマックス関数の問題点 大きい値を入力すると、オーバーフローが発生する 6
ソフトマックス関数 先の実装を改善する Point ! C’という定数を足しても(引 いても)最終的な値は変化し ない ある定数 (aₖで最大のものを使う ことが多い)を引くことで、 指数関数の値を小さくできる 7
ソフトマックス関数 - オーバーフローを防ぐ 先の修正をPythonで実装する 修正前 修正後 エラーが消えた! 8
ソフトマックス関数の特徴 問題に対して、確率的(統計的)な対応ができるようになる Point ! ● 出力は0〜1 ● 出力の総和は1 確率として 捉えることができる 4.0の確率が0.736 9
出力層のニューロンの数 解くべき問題に応じて、出力するニューロンの数を決める 10個のクラスに分類したい場合 0 1 何らかの計算 2 ・ ・ ・ 2である確率大 10個 8 9 10
アジェンダ ■ ソフトマックス関数 ■ MNISTデータセット ■ ニューラルネットワークの推論処理 ■ バッチ処理 ■ まとめ 11
MNISTデータセットとは MNISTデータセットとは、手書き数字の画像セット ● 0から9までの手書き数字の 画像から構成されている ● 訓練画像が60,000枚、 テスト画像が10,000枚用意されている ● 機械学習の実験用データとしてよく用いられる 12
MNISTデータセットについて MNISTデータセットを読み込んで表示する ※ ここでは本の実装に あわせています 13
アジェンダ ■ ソフトマックス関数 ■ MNISTデータセット ■ ニューラルネットワークの推論処理 ■ バッチ処理 ■ まとめ 14
ニューラルネットワークによる推論処理 ニューラルネットワークを用いて、MNISTの手書き数字を推論してみる 784 50 100 10 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 9 ● 入力層:784個 28✖28 = 784 画像サイズ ● 出力層:10個 0から9に分類する ● 隠れ層: ○ 1つ目:50個 ○ 2つ目:100個 15
ニューラルネットワークによる推論処理 ニューラルネットワークを用いて、MNISTの手書き数字を推論してみる 出力: Accuracy: 0.9352 93.5%で 正しく分類できた 16
アジェンダ ■ ソフトマックス関数 ■ MNISTデータセット ■ ニューラルネットワークの推論処理 ■ バッチ処理 ■ まとめ 17
バッチ処理 100枚の画像で同時に処理すると、出力の形状が変わる 1枚の場合 X 次元 784 W1 W2 W3 Y 784✖50 50✖100 100✖10 10 W1 W2 W3 Y 784✖50 50✖100 100✖10 100✖10 100枚の場合 X 次元 100✖ 784 出力の形状が✖100になる 18
バッチ処理 バッチとは、「まとまりのある入力データ」のこと バッチとは・・・まとまりのある入力データ のこと X 次元 100✖ 784 W1 784✖50 W2 50✖100 W3 100✖10 Y 100✖10 この「100」がバッチの大きさに相当する 19
バッチ処理 バッチ処理を実装してみる batch_sizeごとに加算 20
バッチ処理のメリット バッチ処理を使うと計算時間が減らせる Numpyなどの数値計算ライブラリは 大きな配列でも効率よく計算できるよう 最適化されている 1枚あたりの計算時間を大幅に減らすことができる 大きいサイズの配列のほうが、小さい配列を分割して計算するよ り速い 21
アジェンダ ■ ソフトマックス関数 ■ MNISTデータセット ■ ニューラルネットワークの推論処理 ■ バッチ処理 ■ まとめ 22
まとめ ● 出力層で使用する関数は、回帰問題では恒等 関数、分類問題ではソフトマックス関数を一般 的に使用する ● 分類問題では、出力層のニューロンの数を分 類するクラス数に設定する ● 入力データのまとまりをバッチといい、バッチ単 位で推論処理を行うことで、計算を高速に行う ことができる 🔗 デモ用のコード(Google Colab) 23