基本理解から始める機械学習勉強会2025

455 Views

May 21, 25

スライド概要

profile-image

GDGoCの谷垣です。

Docswellを使いましょう

(ダウンロード不可)

関連スライド

各ページのテキスト
2.

目次 • 機械学習の概要 • 機械学習モデルの歴史 • 現在活躍する機械学習モデル • 機械学習の背景に存在する数学的概念 • 線形回帰 • ニューラルネットワーク • 誤差伝搬法 • TensorFlowを用いたGoogle Colabにおける 画像認識アプリケーションの実装 • 質問はいつでもどうぞ! 2

3.

自己紹介 3 谷垣 慶 • GDGoC Osakaの2代目LEAD • 現在は博士後期課程2年で 人間行動認識に関する研究に従事 • 趣味: 将棋 ・ゲーム プログラミング等 • 自動化というキーワードが好き

4.

機械学習の概要 4 ■AIとは? 弱いAI: 特定のタスクを達成することに特化したAI 強いAI: 人間と同じように自律思考が可能なAI ■機械学習とは? 弱いAIの一種 データを用いて自動的にアルゴリズムのパラメータを学習し 特定のタスクを達成する技術. Ex.) 自然言語処理,画像認識,時系列解析 できるだけ高性能な機械学習モデルの構造を求めて 世界中の研究者が盛んに研究を行っている

5.

機械学習の歴史 古典的な機械学習(深層学習でない) • Decision tree • 特徴量で閾値を設定し分類を行う • 各葉ノードがクラスラベルになる • Random forest • Decision treeをいっぱい集めて 精度を高めたもの • SVM: Support Vector Machine • データとデータの境界を 決定する手法 5

6.

機械学習の歴史 深層学習時代 (2010年以降) - 計算資源や、データ量の増加により高い性能を発揮 • CNN: Convolutional Neural Network • 画像認識などで多く使われている • フィルターを用いて多次元の 情報を捉えることが可能 • RNN: Recurrent Neural Network • 時系列データ解析 • 出力を時間方向につなぐ • LSTM: Long short-term memory • RNNの一種 • 長期にわたる情報も認識可能 6

7.

機械学習の歴史 7 近年活躍する深層学習モデル • GAN: Generative Adversarial Network • 敵対的生成ネットワーク • 偽物を判別するネットワークと本物っぽい偽物を作る 2つの機械学習モデルを競わせることで 本物のようなデータを生成できる. • Transformer • 新時代のエース • みんな大好きChatGPT,Geminiなどが使っているモデル • Resnet • 画像処理等において非常に高い性能を示す. • 誤差消失問題を解決することにより超深層学習が可能

8.

機械学習の理論 8 線形回帰 いくつかのパラメータから特定の値を推定 機械学習モデルの最もシンプルな形 𝒚 = 𝜷𝟏 𝒙 + 𝜷𝟎 𝒚: 予測値 𝒙: 入力 𝜷𝟎 , 𝜷𝟏 ∶ モデルのパラメータ (重み) Ex.) 来店者数(x)から店舗の収益(y)を予測する Goal: モデルを表現するパラメータ𝜷𝟎 と𝜷1 を見つける

9.

線形回帰 9 例えば学習データのペアが二個 (𝒙𝟏 , 𝒚𝟏 )(𝒙𝟐 , 𝒚𝟐 ) だったらどうする? 連立方程式を解けばOK! 𝒚𝟏 = 𝜷 𝟏 𝒙𝟏 + 𝜷 𝟎 𝒚𝟐 = 𝜷 𝟏 𝒙𝟐 + 𝜷 𝟎 誤差 (Loss) 実際は大量の学習データに適合したい! 誤差を縦軸,パラメータを横軸とする グラフを考える. 誤差をパラメータで偏微分して 傾きが0となる(誤差が最小となる) パラメータ𝛽を求めれば目的達成! ここが最適解! パラメータ

10.

数学のおさらい(偏微分) 多変数関数を 一つの変数だけに注目して微分する操作 Ex.) 𝑓 𝑥, 𝑦 = 2𝑥 2 + 𝑥𝑦 + 𝑦 2 + 1 𝑦を定数とすると 𝜕𝑓 𝑥,𝑦 𝜕𝑥 = 4𝑥 + 𝑦 𝑥を定数とすると 𝜕𝑓 𝑥,𝑦 𝜕𝑦 = 𝑥 + 2𝑦 10

11.

数学のおさらい(連鎖律) 1変数の連鎖律 𝑦=𝑓 𝑔 𝑥 ⇒ 𝑑𝑦 𝑑𝑥 = 𝑑𝑦 𝑑𝑔 𝑑𝑔 𝑑𝑥 合成関数の偏微分(連鎖律の拡張) 𝑓 𝑥 𝑢, 𝑣 , 𝑦(𝑢, 𝑣) を𝑢で偏微分する場合: 𝜕𝑓 𝜕𝑢 = 𝜕𝑓 𝜕𝑥 𝜕𝑥 𝜕𝑢 + 𝜕𝑓 𝜕𝑦 𝜕𝑦 𝜕𝑢 11

12.

最小二乗法 12 実際に計算してみよう! Loss: 二乗平均誤差(MSE) 𝑛 1 1 2 MSE = ෍ 𝑦𝑖 − 𝑦ෝ𝑖 = n n 1 正解の値 予測した値 𝛽0 で2回偏微分: 𝜕 2 𝑀𝑆𝐸 𝛽1 で2回偏微分: 𝜕 2 𝑀𝑆𝐸 𝜕𝑀𝑆𝐸 𝜕𝛽0 = 0 かつ 𝜕𝑀𝑆𝐸 𝜕𝛽1 𝜕 2 𝛽0 𝜕 2 𝛽1 = 2 (下に凸の二次関数グラフ) 1 = σ𝑛1 𝑥𝑖2 (下に凸の二次関数グラフ) n = 0 となればよい

13.

最小二乗法 13 𝑛 2 − ෍ 𝑦𝑖 − 𝛽1 𝑥𝑖 + 𝛽0 n =0 1 𝑛 2 − ෍ 𝑥𝑖 𝑦𝑖 − 𝛽1 𝑥𝑖 + 𝛽0 n =0 𝑖=1 𝑦ത = 𝛽1 𝑥ҧ + 𝛽0 −2𝑥1 𝑦𝑗 − 𝛽𝑖 𝑥ҧ + 𝛽0 答え: =0 σ𝑛𝑖=1(𝑥𝑖 − 𝑥)(𝑦 ҧ 𝑖 − 𝑦) ത 𝛽1 = 2 σ𝑛𝑖=1 𝑥𝑖 − 𝑥ҧ 2 β0 = 𝑦ത − 𝛽1 𝑥ҧ

14.

ニューラルネットワーク 人間の脳を参考に作られた深層学習のモデル あらゆるモデルの基本となるモデル 今回は以下のようなモデルを考える. • LOSS: 二乗平均誤差(MSE) • 活性化関数: 今回は簡略のため恒等関数 (1) 𝑤11 𝑥1 𝑤 (1) 12 Input (1) 𝑤13 (1) 𝑤21 𝑥2 (1) 𝑤22 (1) 𝑤23 ℎ1 𝑤 (2) 11 (2) 𝑤12 (2) 𝑤21 𝑦1 Output ℎ2 𝑤 (2) 21 𝑦2 (2) 𝑤31 ℎ3 (2) 𝑤32 14

15.

深層学習の手順 1. データの前処理 Train, Validation, Testの三つにデータを分ける 2. モデル構築 ランダムに重みを初期化させたモデルを構築する 3. ハイパーパラメータの設定 エポック数やモデルの形状,学習率などを設定 4. モデルの学習 1. フォワードプロパゲーション 2. バックプロパゲーション 15

16.

フォワードプロパゲーション • 機械学習モデルに 学習データを入力しその出力を保存する. (1) 𝑤11 𝑥1 Input (1) ℎ1 (2) 𝑤11 (2) 𝑤12 𝑤12 (1) 𝑤13 (2) 𝑤21 ℎ2 (1) 𝑤21 𝑥2 (1) 𝑦2 (2) ℎ3 Output (2) 𝑤21 𝑤31 (1) 𝑤22 𝑤23 𝑦1 (2) 𝑤32 16

17.

バックプロパゲーション 17 • 計算された誤差を元に重みの修正を行う • 重みの修正には誤差伝搬法を用いる (1) 𝑤11 𝑥1 Input (1) ℎ1 (2) 𝑤11 (2) 𝑤12 𝑤12 (1) 𝑤13 (2) 𝑤21 ℎ2 (1) 𝑤21 𝑥2 (1) 𝑦2 (2) ℎ3 Output (2) 𝑤21 𝑤31 (1) 𝑤22 𝑤23 𝑦1 (2) 𝑤32

18.

誤差伝搬法 18 基本的なアイデア (𝑎) 縦軸をLoss(損失),横軸を𝑊𝑖𝑗 としたとき (𝑎) Lossを𝑊𝑖𝑗 で偏微分することで傾きが求められる Lossが小さくなるように値を修正していくことで 重みを更新することが可能 Loss 𝑾𝒊𝒋𝒂 ≔ 𝑾𝒊𝒋𝒂 −𝜼 𝒏𝒆𝒘 𝐧𝐨𝐰 (𝒂) 𝑾𝒊𝒋 𝝏𝑳 𝝏𝑾𝒊𝒋𝒂

19.

勾配の計算方法 つまり 𝝏𝑳 𝒂 𝝏𝑾𝒊𝒋 を求めたい! 𝒂 • でも𝝏𝑳と𝝏𝑾𝒊𝒋 は直接関係ない。。 • ではどうやって勾配を計算するのか? 連鎖律を使う 19

20.

出現する変数 20 • 入力層: 𝑥1 , 𝑥2 • 隠れ層: ℎ1 , ℎ2 , ℎ3 (1) 1 2 • ℎ𝑗 = Σ𝑖=1 𝑤𝑗𝑖 𝑥𝑗 + 𝑏𝑘 (1) 𝑤11 𝑥1 𝑤 (1) 12 (2) 2 3 • 𝑦ො𝑗 = Σ𝑖=1 𝑤𝑗𝑖 ℎ𝑗 + 𝑏𝑘 𝑦ො𝑗 :モデルが予測した値 • 損失: 𝐿 1 • L = σ2𝑗=1 (𝑦ෝ𝑗 − 𝑦𝑗 )2 2 𝑤13 𝑥2 𝑤12 (2) 𝑤21 𝑦1 ℎ2 𝑤 (2) 21 (1) 𝑤21 (2) 11 (2) (1) • 出力層: 𝑦1 , 𝑦2 ℎ1 𝑤 (1) 𝑤22 (1) 𝑤23 𝑦2 (2) 𝑤31 ℎ3 (2) 𝑤32

21.

連鎖律を使った勾配計算 Goal: 𝝏𝑳 𝒂 𝝏𝒘𝒊𝒋 を計算したい! (1) 𝑤11 (1) 𝑤12 (1) 𝑤13 𝑥1 1 𝑊11 を中に含む変数に着目! 𝜕𝐿 2 𝜕𝐿 𝜕 𝑦 ො 𝑘 1 2 = Σ L = ෍ (𝑦ො𝑘 − 𝑦𝑘 )2 k=1 (1) 1 𝜕 𝑦ො𝑘 𝜕𝑊 2 𝜕𝑊 11 11 𝜕𝐿 2 = Σk=1 𝜕𝑦ො 𝜕 𝑦ො 𝑘 (1) 𝑘 𝜕𝑤11 (1) 𝑤21 (1) 𝑤22 (1) 𝑤23 𝑥2 𝑘=1 2 (2) 3 𝑦ො𝑗 = Σ𝑖=1 𝑤𝑗𝑖 ℎ𝑗 + 𝑏𝑘 𝜕𝐿 𝜕 𝑦ො 𝑘 𝜕ℎ1 2 = Σk=1 𝜕𝑦ො 𝜕ℎ (1) 1 𝜕𝑤11 𝑘 1 (1) 2 ℎ𝑗 = Σ𝑖=1 𝑤𝑗𝑖 𝑥𝑗 + 𝑏𝑘 21 ℎ1 𝑤 (2) 11 (2) 𝑤12 (2) 𝑤21 ℎ2 𝑤 (2) 21 (2) 𝑤31 (2) 𝑤32 ℎ3 𝑦1 𝑦2

22.

連鎖律を使った勾配計算 22 𝜕𝐿 𝜕 𝑦ො 𝑘 𝜕ℎ1 2 よって 1 = Σk=1 𝜕 𝑦 ො 𝑘 𝜕ℎ1 𝜕𝑤 (1) 𝜕𝑊11 11 𝜕𝐿 ところで 𝜕𝐿 = 𝜕 𝑦ො 𝑘 𝜕𝑦𝑘 𝜕𝑤11 ℎ1 +𝑏𝑘 ෡1 𝜕ℎ 𝜕ℎ1 • 1 ෞ𝑘 −𝑦𝑘 )2 𝜕 (𝑦 2 𝜕 𝑦ො 𝑘 2 = 𝜕ℎ1 1 = 𝑦ො𝑘 − 𝑦𝑘 (2) 2 = 𝑤𝑘1 1 (1) = 𝑤11 𝑥1 + 𝑏𝑘 𝜕𝑤11 𝝏𝑳 つまり 𝝏𝑾 = 𝑥1 (𝟐) 𝟐 ෝ𝒌 − 𝒚𝒌 𝒘𝒌𝟏 𝒙𝟏 = 𝜮 𝐤=𝟏 𝒚 𝟏 𝟏𝟏 (1) 𝑤11 (1) 𝑤12 (1) 𝑤13 (1) 𝑤21 (1) 𝑥1 𝑥2𝑤𝑤 22 (1) 23 ℎ1 𝑤 (2) (2) 11 𝑤12 (2) 𝑤21 ℎ2𝑤 (2) 21 (2) 𝑤31 (2) 𝑤32 ℎ3 𝑦1 𝑦2

23.

質問コーナー • わかりにくいところ、 疑問点があれば気軽に聞いてほしいです! • 10分休憩この辺で挟んどきます。 • 次は実践編に入ります。 25

24.

実践編 26 • Google Colabを用いて 実践形式で機械学習モデルを構築 • 最終的には描いた絵を判別してくれる ウェブアプリみたいなものを作ります。 • https://colab.research.google.com/drive/1WLnyMy GGF8Fkdh81haGciz115VTPkWuB#scrollTo=HQQTH onMcMvf

25.

クロージング • 交流タイム • 疑問点やアイデアがあれば話し合いましょう 27