286 Views
May 19, 24
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2024年度前期輪読会#3 ニューラルネットワーク 3.5〜3.7 名古屋大学 情報学部 人間・社会情報学科 吉村昂樹 0
2. 便利なテンプレ集 目次 1. 出力層の設計 2. 手書き数字認識 3. まとめ 1
1. 出力層の設計 2
1. 出力層の設計 問題と活性化関数 回帰問題 分類問題 解く問題 解く問題 連続的な数値の予測 活性化関数 恒等関数 データがどのクラスに属するか 活性化関数 ソフトマックス関数 3
1. 出力層の設計 ソフトマックス関数 数式 exp(x)はexを表す指数関数 (eは2.7182…のネイピア数) 出力層がn個あるうちのk番目の出力ykを求め る計算式 プログラム 4
1. 出力層の設計 ソフトマックス関数 実装上の注意点 問題点:オーバーフロー 解決策(数式) 5
1. 出力層の設計 ソフトマックス関数 実装上の注意 解決策(Pythonによる実装) 6
1. 出力層の設計 ソフトマックス関数の特徴と出力層 特徴 (1) 適用しても各要素の大小関係は変らない (2) 出力が0~1.0の実数、総和が1 → 「確率」として考えられる (3) 出力層では省略される 出力層のニューロン数 分類したいクラス数に基づいて適宜決める (例) 0~9の手書きの数字の画像の分類 → 10クラス分類 = 出力層のニューロン数は10 7
2. 手書き数字認識 8
2.手書き数字認識 MNISTデータセット 特徴 手書き数字の画像セット(0~9までの数字画像で出来ている) 訓練画像:60000枚、テスト画像:10000枚 それぞれの画像データは 28×28のグレー画像で、各ピクセルは0~255をとる それぞれの画像データには書いてある数字がラベルとして与えられている 9
2.手書き数字認識 MNISTデータセット プログラム 10
2.手書き数字認識 MNISTデータセット load_mnist関数 返り値:(訓練データ, 訓練ラベル), (テスト画像, テストラベル) 引数:① normalize=True ピクセルを0.0~1.0に正規化(Falseにすれば0~255のまま) ② flatten=True 一次元配列する(True: 784, False: 1×28×28) ③ one_hot_label=False 正解となる部分を1に、それ以外は0にする (例) Falseのとき 画像に書かれた数字(正解)が2ならば、ラベルは2 Trueのとき 画像に書かれた数字(正解)が2ならば、ラベルは [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] となる 11
2.手書き数字認識 MNISTデータセット 正規化 データをある決まった範囲に変換する処理のこと ここではnormalize=Trueにして画像の各ピクセルを255で除算し、 0.0~1.0にした 前処理 ニューラルネットワークの入力データに対して何らかの変換を行うこと データ全体の分布を考慮した前処理が必要 識別性能の向上や学習の高速化が実験で示されている 12
2.手書き数字認識 ニューラルネットワークの推論 ネットワークの構造(ニューロン数) 入力層:784個(画像のサイズ 28×28=784から) 隠れ層:一つ目が50個、二つ目が100個(本来なら任意の個数に設定可能) 出力層:10個 (0~9の10クラスに分類したいから) プログラム(関数の定義) 13
2.手書き数字認識 ニューラルネットワークの推論 プログラム(関数の定義) 14
2.手書き数字認識 ニューラルネットワークの推論 プログラム(推論) 15
2.手書き数字認識 バッチ処理 バッチ処理 predict関数では一度につき1枚の画像についてしか予測を行えなかった →一度に複数の画像について予測したい 例えば100枚を1つのまとまり(バッチ)として処理をしたい メリット:1枚当たりの処理時間を大幅に短縮できる 16
2.手書き数字認識 バッチ処理 形状の推移 入力画像が1枚の場合 入力画像が100枚の場合 17
2.手書き数字認識 バッチを使ったニューラルネットワーク プログラム 18
まとめ ニューラルネットワークの順方向の伝播について述べてきた まとめ1 前章のパーセプトロンと、ニューロンの信号が階層的に伝わるという点で同じ まとめ2 信号を変化させる活性化関数が異なっていた まとめ3 パーセプトロン:信号が急激に変化するステップ関数 ニューラルネットワーク:滑らかに変化するシグモイド関数 19