【ゼロから作るDeap Learning】3.1~3.4

118 Views

May 12, 25

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2025年度前期輪読会 #3 (2025/5/12) 第3章 ニューラルネットワーク(~3.4節まで) 京都大学文学部倫理学研究室 B3 竹田 章汰 0

2.

アジェンダ ◼ パーセプトロンからニューラルネットワークへ ◼ 活性化関数 ◼ 多次元配列の計算 ◼ 3層ニューラルネットワークの実装 ◼ 出力層の設計 ◼ 手書き数字認識 1

3.

パーセプトロンからニューラルネットワークへ ニューラルネットワークの基本形を図示し、パーセプトロンとの共通点・相違点を掴む ニューラルネットワークの例 中間層 入力層 出力層 パーセプトロンとの 共通点 相違点 ⚫ ニューロンのつなが ⚫ 適切な重みパラメー り方 タをデータから自動 で学習できる ⚫ 複雑な関数・処理も、 (理論上)表現できる ↑機械学習のキモ! 2

4.

パーセプトロンからニューラルネットワークへ パーセプトロンの信号伝達方法を振り返り、ニューラルネットワークへの導入をする パーセプトロンの復習 1 𝑥1 𝑏 𝑤1 𝑦 𝑥2 𝑥1 𝑦 𝑤2 𝑥2 3.1 𝑤1 0 𝑏 + 𝑤1 𝑥1 + 𝑤2 𝑥2 ≤ 0 𝑦=ቊ 1 𝑏 + 𝑤1 𝑥1 + 𝑤2 𝑥2 > 0 𝑤2 3.2 𝑦 = ℎ 𝑏 + 𝑤1 𝑥1 + 𝑤2 𝑥2 3.3 0 (𝑥 ≤ 0) ℎ 𝑥 =ቊ 1 (𝑥 > 0) 3

5.

パーセプトロンからニューラルネットワークへ 活性化関数を導入する 活性化関数 入力信号の総和を出力信号に変換する関数 →前項のℎ 𝑥 3.3 0 (𝑥 ≤ 0) ℎ 𝑥 =ቊ 1 (𝑥 > 0) →右の図のように活性化関数によるプロセスは 明示化できる 1 𝑏 𝑥1 𝑥2 𝑤1 𝑎 ℎ( ) y 𝑤2 →式(3.3)で表される活性化関数は「ステップ関数」 →パーセプトロンでは、活性化関数にステップ関数を 使用している!! 3.4 𝑎 = 𝑏 + 𝑤1 𝑥1 + 𝑤2 𝑥2 3.5 𝑦=ℎ 𝑎 4

6.

活性化関数 ニューラルネットワークで使用される活性化関数「シグモイド関数」を導入する シグモイド関数 シグモイド関数(sigmoid function) 3.6 1 ℎ 𝑥 = 1 + exp(−𝑥) →ニューラルネットワークとパーセプトロンの 主な違いは、この活性化関数のみ →ニューロンが多層につながる構造や、信号の 伝達方法は基本的に同じ シグモイド関数(sigmoid function)のグラフ 5

7.

活性化関数 ステップ関数とシグモイド関数を比較する ステップ関数とシグモイド関数の比較 ステップ関数との 共通点 ⚫ 入力が小さいときに は0に近く、入力が 大きいときには1に 近い(0と1の間の値 しかとらない) 相違点 ⚫ 「滑らかさ」 ⚫ 連続な実数値をとる ⚫ 非線形関数 →ニューラルネットワークには必ず、非線形関数 を活性化関数に用いる必要がある ステップ関数とシグモイド関数を重ねて描画 (破線はステップ関数) →線形関数を用いると、どれだけ層を深くしても、 「隠れ層のないネットワーク」と同じ働きしかで きない 6

8.

活性化関数 ReLU関数を紹介する ReLu関数 ReLu関数(ReLU function) →最近のニューラルネットワークで主に用いら れている活性化関数 𝑥 (𝑥 > 0) ℎ 𝑥 =ቊ 0 (𝑥 ≤ 0) →入力が0を超えていれば、その入力をそのまま 出力し、0以下ならば0を出力する関数 7

9.

多次元配列の計算 NumPyによる多次元配列の計算を学び、ニューラルネットワークの実装に備える 多次元配列と行列の積 行列の積の直観的な計算方法 →行列とは2次元配列のこと 8

10.

3層ニューラルネットワークの実装 ニューラルネットワークの処理の説明のため、新たに記号を導入する 記号の定義 (1) 𝑎1 𝑥1 左図は入力層𝑥2 のニューロンから、次層の (1) ニューロン𝑎1 への重みだけを取り上げたもの 重みや隠れ層のニューロンの右上にある(1)は第一層 であることを示している (1) 𝑤12 (1) 𝑎2 𝑥2 (1) 𝑤12 ←第一層の重み ← 「1」は次層の1番目のニューロン 「2」は前層の2番目のニューロン (1) 𝑎3 9

11.

3層ニューラルネットワークの実装 3層ニューラルネットワークの実装を、段階を追って行う 3層ニューラルネットワーク 左図のような3層ニューラルネットワークを 実装していく 𝑥1 𝑦1 𝑥2 𝑦2 → 各層における信号伝達を、順に実装する 10

12.

3層ニューラルネットワークの実装 入力層から第一層目への信号伝達を行列の積で表す 入力層から第一層目 左図より (1) 1 (1) 𝑏1 (1) 𝑎1 (1) 𝑤11 𝑥1 (1) 𝑎2 𝑥2 (1) (1) (1) 𝑎1 = 𝑤11 𝑥1 + 𝑤12 𝑥2 + 𝑏1 また、行列の積を用いて第1層目の重み付き和を 𝐀(1) = 𝐗𝐖 (1) + 𝐁 (1) と表せる 但し、 (1) (1) (1) (1) (1) (1) 𝐗 = 𝑥1 𝑥2 𝐁 (1) = 𝑏1 𝑏2 𝑏3 𝐀(1) = 𝑎1 𝑎2 ここに数式を入力します。 𝑎3 (1) 𝑤12 (1) 𝑎3 𝐖 (1) = (1) (1) (1) (1) (1) (1) 𝑤11 𝑤21 𝑤31 𝑤12 𝑤22 𝑤32 11

13.

3層ニューラルネットワークの実装 活性化関数によるプロセスを図示する 第一層目の活性化関数 左図に示す通り、隠れ層での重み付き和を𝑎 で表し、活性化関数で変換された信号をzで 表す (1) 𝑏1 1 (1) 𝑎1 ℎ( ) (1) 𝑧1 (1) 図中のh()は活性化関数であり、ここではシ グモイド関数を用いる 𝑤11 𝑥1 (1) 𝑎2 ℎ( ) (1) 𝑤12 𝑥2 (1) 𝑎3 ℎ( ) (1) 𝑧2 (1) 𝑧3 →前項と本項のプロセスと全く同じように、 第一層目から第二層目、第二層目から出力 層への信号伝達も表せる →ただし、出力層の活性化関数だけ、シグ モイド関数ではなく恒等関数σ()を用いる 12

14.

3層ニューラルネットワークの実装 実装のまとめ 実装の概略図 1 1 ℎ( ) ℎ( ) σ( ) 𝑦1 𝑥1 左図の出力層にあるσ()が前 項で述べた恒等関数 → 入力をそのまま出力する 関数 ℎ( ) ℎ( ) σ( ) 𝑦2 𝑥2 →実際にコードを書いて実 装してみよう ℎ( ) 13