>100 Views
May 26, 25
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2025年度前期輪読会 ゼロから作るDeepLearning #4 (5/26) 学習アルゴリズム 京都大学理学部数理科学系 3回 千葉 一世 0
アジェンダ ◼ 学習の手順 ◼ TwoLayerNet ◼ 学習の実装 1
学習の手順 ⚫ 学習の手順 1. データを学習用とテスト用に分割 2. ネットワークの初期化 3. 学習用データからミニバッチをランダムに選ぶ 4. ミニバッチの各重みに対する損失関数の勾配を数値微分で計算 5. パラメータを勾配方向に学習率分更新する 6. 3~5を繰り返す 7. 定期的にテストデータで評価 確率的勾配降下法 (SGD) データ数が多いと、データ全体の勾配を計算することが難しくなるため、 データ全体ではなくランダムに取ったミニバッチ毎に勾配を取り、更新していく手法 計算効率が良く、期待値として全体の勾配に一致する。 2
アジェンダ ◼ 学習の手順 ◼ TwoLayerNet ◼ 学習の実装 実装コード (GoogleColab) Pytorch版 (ChatGPT作) 3
TwoLayerNet ネットワークのパラメータ・推論・損失計算・勾配計算・評価などをクラスで管理 変数 詳細 params パラメータを保持するdictionary型の変数 (インスタンス変数) params = {“W1” : ~, “b1” : ~, “W2” : ~, “b2” : ~} grads paramsと同じ形状で勾配を保持するdictionary型の変数 (メソッドの返り値) メソッド 詳細 __init__ パラメータの初期化を行う predict 推論を行う 入力は画像データで、各ラベルの確率値を返す loss 損失を計算 accuracy 認識精度を計算 numetrical_gradient 数値微分によって勾配を計算し、gradsを返す gradient 誤差逆伝播法による高速な勾配計算 4
TwoLayerNet • __init__(self, input_size, hidden_size, output_size, weight_init_std) 5
TwoLayerNet • predict(self, x, t) 6
TwoLayerNet • loss(self, x, t) • accuracy(self, x, t) 7
TwoLayerNet • numerical_gradient(self, x, t) 8
アジェンダ ◼ 学習の手順 ◼ TwoLayerNet ◼ 学習の実装 9
学習の実装 10
学習の実装 11
モデルの評価 • 学習時のlossと、学習データ・テストデータでの精度の推移を確認する iterと共にlossが下がっていき、 学習は順調に進んでいることが分かる epochと共に両データとも精度は上がる しかし、学習しすぎると過学習につながる 学習データで99.3%, テストデータで97.3% 12