Python ではじめる機械学習 9. ニューラルネットワークの応用

>100 Views

November 22, 25

スライド概要

profile-image

機械学習・音声認識・プログラミングに関する書籍を執筆しています。

シェア

またはPlayer版

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

ダウンロード

関連スライド

各ページのテキスト
1.

9. ニューラルネットワークの応用 FNN + FNN + FNN 層正規化 + 位置 エンコーディング ⼊⼒単語列 層正規化 + multi-head アテンション 層正規化 + multi-head アテンション multi-head アテンション 層正規化 層正規化 + + 単語埋め込み 単語埋め込み マスク 位置 エンコーディング これまでの 出⼒単語列 荒木雅弘 : 『Pythonではじめる機械学 9.1 深層学習とは 9.2 畳み込みニューラルネットワーク 9.3 リカレントニューラルネットワーク 9.4 Transformer 習』 (森北出版,2025年) スライドとコード

2.

9.1 深層学習とは (1/2) 深層学習とは 多階層のニューラルネットワークを用いた機械学習 基本的な学習手段は誤差逆伝播法 特徴抽出段階も学習対象とすることで大幅に性能が向上 入力の種類に応じたネットワーク構造が提案された 画像認識に適した畳み込みネットワーク 自然言語処理に適したリカレントネットワーク さまざまな応用分野を持つ Transformer アーキテクチャ 近年では多くの処理が Transformer ベースの基盤モデルに集約されつつある

3.

9.1 深層学習とは (2/2) 通常の機械学習モデルと深層学習モデルの位置付け この部分を ⾃動で学習 特徴は⼈⼿で 設定 実世界のデータ ⼊⼒データ 特徴抽出 学習データ 機械学習モデル 出⼒ 学習 アルゴリズム (a) これまでに説明した機械学習 特徴量も⾃動で抽出 実世界のデータ ⼊⼒データ 学習データ 処理1 処理2 ... 学習アルゴリズム (b) 深層学習 処理m 出⼒

4.

9.2 畳み込みニューラルネットワーク (1/5) 畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)とは 画像認識や音声認識に適したニューラルネットワーク 空間あるいは時間軸上に並んだ信号から特定のパターンを見つけ出す 畳み込み層とプーリング層を交互に重ねて特徴抽出 畳み込み層:フィルタを使って特定のパターンを見つける プーリング層:位置の変動を吸収するダウンサンプリング これらを交互に重ねることで,複雑な特徴を表現可能 正規化層で入力値を調整することもある スキップ接続を入れることもある 最後は数段の FNN(ReLU+Softmax)

5.

9.2 畳み込みニューラルネットワーク (2/5) 畳み込みネットワークの構造 畳み込み層は各チャネルでそれぞれ異なるフィルタを学習 重みはチャネル内では共通なので,学習対象であるパラメータの数は少ない プーリング層は最大値または平均値の計算なので,その重みは学習対象外 出力側の FNN は特徴を入力として識別を行う ⼊⼒層 畳み込み層 プーリング層 畳み込み層 プーリング層 全結合層

6.

9.2 畳み込みニューラルネットワーク (3/5) 畳み込み層 畳み込み:フィルタを一定画素(ストライド)ずつずらして画像との内積を計算 フィルタ フィルタを適⽤し, の値を フィルタの例 と置き換える 1/9 1/9 1/9 -1 0 1 1/9 1/9 1/9 -1 0 1 1/9 1/9 1/9 -1 0 1 平均値フィルタ (ノイズ軽減) エッジフィルタ (線の検出) 畳み込み層の演算:畳み込み結果に対して活性化関数を適用 結果としてフィルタに対応するパターンの出現を示す特徴マップが得られる

7.

9.2 畳み込みニューラルネットワーク (4/5) 畳み込み演算の意味 切り出した画像とフィルタパターンの類似度を求めている 画像 フィルタ x と w が類似しているとは,∥x − w∥2 が小さな値となるとき ∥x − w∥2 = ∥x∥2 − 2xT w + ∥w∥2 ⇒ 内積 xT w が大きな値となるとき チャネルの意味 幅 H,高さ W のカラー画像の場合,色は RGB の3チャネルで表されるので, 入力は (H, W, 3) のテンソルとなる 隠れ層の場合,フィルタの数がその層の出力チャネル数となる

8.

9.2 畳み込みニューラルネットワーク (5/5) プーリング層 一定範囲の最大値あるいは平均値を計算し,畳み込み層の出力の解像度を低くする役割 平均値もしくは 最⼤値を出⼒ 正規化層 入力値からミニバッチ毎の平均値を引いて標準偏差で割る 多階層の演算による値の大きな変動やミニバッチ毎の分布の違いを吸収 スキップ接続 学習時に誤差をそのまま伝えるので,CNN の多階層化が可能になった

9.

9.3 リカレントニューラルネットワーク (1/10) リカレントニューラルネットワーク(RNN: Recurrent Neural Network)とは 時系列信号の認識や自然言語処理に適したニューラルネットワーク 一時刻前の隠れ層の出力を次の入力と結合して隠れ層に入力 ⼀つ前の隠れ層の出⼒が 現在の隠れ層に⼊⼒される 出⼒層 出⼒層 時間遅れで 戻ってくるループ 隠れ層 ⼊⼒層 (a) リカレントニューラルネットワーク 隠れ層 ⼊⼒層 (b) ループを時間⽅向に展開

10.

9.3 リカレントニューラルネットワーク (2/10) 隠れ層の計算 入力を x1 , … , xN としたとき,内部状態 h が時刻毎に更新されてゆくと考える ​ ​ ht = f (W h ht−1 + W x xt + bh ) ​ ​ ​ ​ ​ ​ W h : 隠れ層のループの重みを表した行列 ​ W x : 入力層から隠れ層への重みを表した行列 bh : 各隠れ層のバイアス項を結合したベクトル ​ ​ 出力層の計算 入力系列の識別:hN から得られる重み付き和 W y hN + by の softmax 等で識別結果 ​ ​ ​ ​ y を出力 入力に対するラベルの付与:各 ht から識別と同様の手順で yt を順次出力 ​ ​

11.

9.3 リカレントニューラルネットワーク (3/10) リカレントネットワークの学習 通常の誤差逆伝播法の更新式に対して,時間を遡った更新が必要 時刻 t において,k 個過去に遡った更新式 j k T ′ W h ← W h − η ∑ ∑ ϵ(t − j)(∏ W h f (ht−1 ))hTt−j−1 t j=0 i=1 ′ ​ ​ ​ ​ ϵ(t − j) : 時刻 t − j における誤差 f ′ (⋅) : 活性化関数の微分 勾配消失を避けるため,k = 10~100 程度とする ​ ​ ​ ​

12.

9.3 リカレントニューラルネットワーク (4/10) 単純なリカレントネットワークの問題点 前方の情報が後方まで伝わりにくい 学習時にループの重み行列が何度も掛けられ,勾配消失/爆発が生じやすい positive/negative 出⼒層 … 隠れ層 ⼊⼒層 これ は … です 。

13.

9.3 リカレントニューラルネットワーク (5/10) LSTM (long short-term memory)の構造 隠れ層の情報 h に加えて,ゲートによって制御されるセル状態 c を持つユニット ゲート:前のセル状態,隠れ層への入力,隠れ層からの出力を選択的に通すメカニズム 出⼒層へ LSTM セル 忘却ゲート NNレイヤー セル状態 ⼊⼒ゲート tanh 出⼒ゲート 要素ごとの演算 線の合流:ベクトルの結合 tanh 隠れ層 ⼊⼒層から 線の分岐:コピー

14.

9.3 リカレントニューラルネットワーク (6/10) LSTMのゲート 忘却ゲート:セル状態のどの部分を伝えるか f t = σ(W f [ht−1 , xt ] + bf ) ​ ​ ​ ​ ​ 入力ゲート:入力のどの部分をセル状態の計算に用いるか it = σ(W i [ht−1 , xt ] + bi ) ​ ​ ​ ​ ​ 出力ゲート:出力のどの部分を隠れ状態に組み込むか ot = σ(W o [ht−1 , xt ] + bo ) ​ ​ ​ ​ ​

15.

9.3 リカレントニューラルネットワーク (7/10) 隠れ層の計算 ~ = tanh(W [h , x ] + b ) c t c t−1 t c ​ ​ ​ ​ ​ セル状態の計算 ~ ct = f t ∗ ct−1 + it ∗ c t ​ ​ ​ ​ ​ 学習時にW c を何度も掛けることがなくなったので,勾配消失/爆発が起きにくい ​ 出力の計算 ht = ot ∗ tanh(ct ) ​ ​ ​

16.

9.3 リカレントニューラルネットワーク (8/10) 双方向 LSTM 系列全体が入力として与えられるならば,前方から順に処理する方法に限定する必要は ない 前方からの情報と後方からの情報を結合して出力を計算

17.

9.3 リカレントニューラルネットワーク (9/10) エンコーダ-デコーダ構造 エンコーダで入力系列の内容をひとつのベクトルにまとめる そのベクトルを初期値として,デコーダで出力を順次生成 機械翻訳や対話システムにおける応答生成ができることが示された デコーダ これ エンコーダ This は ⽔ 最後の隠れ層の出⼒が デコーダの初期状態に is water <EOS> です <EOS>

18.

9.3 リカレントニューラルネットワーク (10/10) エンコーダ-デコーダ構造 + アテンション アテンション:エンコーダ内のすべての隠れ層出力の重み付き和 入力のどの部分を見るかという情報を出力時に利用 入力と出力で語順が異なる機械翻訳などに有効 これ アテンションベクトル アテンション This + is water <EOS> は ⽔ です <EOS>

19.

9.4 Transformer (1/6) セルフアテンションとは リカレント構造を廃止して系列全体を入力とし,各単語のベクトル表現を作成する 隠れ層の出力としてベクトル表現を作るときに,入力の各単語との関係を計算 セルフアテンション This + is water <EOS>

20.

9.4 Transformer (2/6) セルフアテンションの計算 入力 h からクエリ q ,キー k,値 v を計算 q = W Q h, k = W K h, v = W V h ​ ​ ​ 特定の入力 h のクエリ q に対して,全入力 h1 , … , hN の k との内積を計算 ​ さらにこれをクエリの次元数のルート ​ dk で割って,内積の分散が1となるようにする ​ q T ki αi = dk ​ ​ ​ ​ ​ これらのsoftmaxを値 v i の重みとする重み付き和によって,求めるベクトル表現を得る ​ h′ = softmax(α)T v

21.

9.4 Transformer (3/6) Transformerアーキテクチャ [Vaswani et al., 2017] から層正規化の位置を現在主流のものに変更 FNN + FNN + FNN 層正規化 + 位置 エンコーディング ⼊⼒単語列 層正規化 + multi-head アテンション 層正規化 + multi-head アテンション multi-head アテンション 層正規化 層正規化 + + 単語埋め込み 単語埋め込み マスク 位置 エンコーディング これまでの 出⼒単語列

22.

9.4 Transformer (4/6) Transformer エンコーダの処理 1. 入力の各要素を埋め込みベクトルに変換(embedding)する 2. 位置の情報を付与(positional encoding)する 位相が異なる三角関数を要素とするベクトルを埋め込みベクトルに加算する方法や,位 置に応じて埋め込みベクトルを回転させる方法(RoPE)などがある 位置情報を表すベクトルを学習可能なパラメータとして扱う方法もある 3. Transformer ユニットの処理を N 段階繰り返し,入力系列に対する出力系列を得る Transformer ユニットの処理 セルフアテンション,FNN のそれぞれの計算の前に,学習の安定化のために層正規化(各トー クンごとに特徴量を正規化)を行う セルフアテンション,FNN のそれぞれにスキップ接続を加える

23.

9.4 Transformer (5/6) Transformer デコーダの処理 1. 先頭記号を埋め込みベクトルに変換したものを入力とする 2. 位置の情報を付与する 3. デコーダ用に構造を変更した Transformer ユニットの処理を N 段階繰り返し,1トー クンごとにトークンの確率分布から出力を決め,それをデコーダの入力系列に加える デコーダの Transformer ユニットでは,現在処理中のトークンよりも先の情報を隠すた めにマスクを用いる セルフアテンションのあと,デコーダ側でクエリを,エンコーダの側でキーとバリュー を計算してクロスアテンション処理を行い,その後に FNN での処理を行う

24.

9.4 Transformer (6/6) Transformerを応用した基盤モデル BERT : 入力側(エンコーダ)のみの構造 事前学習:入力単語系列のうち,一部を [MASK] という記号に置き換え,その単語を予測する 自己教師あり学習を繰り返す ファインチューニング: 目的のタスクに応じてネットワーク構造を追加して再学習を行う GPT : 出力側(デコーダ)のみの構造 事前学習:大規模な文書データに対して,次単語を予測する問題を繰り返す ファインチューニング: 目的のタスクに応じたデータで再学習を行う T5 : エンコーダ-デコーダ構造 さまざまなタスクについて, 「タスク指示+入力+出力」で学習を行う(あるタスクの情報が, ほかのタスクの学習にも影響することを意図している) タスクの指示と入力を与えて,出力を得る

25.

まとめ 畳み込みニューラルネットワークは,信号の特徴抽出やダウンサンプリングを実 現しているので,画像認識などのタスクに適する リカレントニューラルネットワークは,自然言語や時系列データなどの処理に適 しており,LSTM やアテンション機構の導入で性能が向上した Transformer は,セルフアテンション機構を用いることで並列処理が可能とな り,大規模モデルの学習に適している

26.

参考文献 岡野原 大輔. ディープラーニングを支える技術 ——「正解」を導くメカニズム[技 術基礎]. 技術評論社, 2021. 岡野原 大輔. ディープラーニングを支える技術〈2〉 ——ニューラルネットワーク 最大の謎. 技術評論社, 2022. 品川 政太朗. Transformer. 電子情報通信学会誌, 107(8):826–827, 2024. (https://www.ieice-hbkb.org/files/ad_base/view_pdf.html?p=/portal/wpcontent/uploads/2024/08/k107_8_826.pdf)