【Pythonで学ぶ音声認識】第6章:DNN-HMMによる音声認識(6.1-6.2節)

1.4K Views

November 30, 23

スライド概要

Pythonで学ぶ音声認識の輪読会第7回の発表スライドです。
2023年11月30日(木) 18:30~

profile-image

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

シェア

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

関連スライド

各ページのテキスト
1.

2023年度後期輪読会 #7 Pythonで学ぶ音声認識 6.1 ~ 6.2 戸田 庸介 0

2.

目次 ● 6.1 分布からディープニューラルネットワークへ ● 6.2 ディープニューラルネットワーク 1

3.

6.1 分布からディープニューラルネットワークへ GMM-HMMの課題からDNNへ GMM-HMMの課題 1. (Gaussian Mixture Model - Hidden Markov Model) 生成モデルに基づくため、音声の識別能力に限界がある. 生成確率(尤度)を最大化するように学習したモデルのため, 正解のクラスだけでなく不正解のクラスの尤度も高くなり得る. 2. GMMによる音声のバリエーションの近似に限界がある. 音声の特徴量が正規分布や混合正規分布に従うと仮定してモデリングしているため, 分布の近似は真の分布との差異が音声認識誤りの原因になる. また,上手く学習するためには特徴量の種類や次元数も限られる. Deep Neural Network:DNN 特徴量の分布を仮定せず,様々な非線形関数を表現できる識別モデルである. 生成モデルとは異なり,事後確率は全クラスの総和は1となる. 2

4.

6.2 ディープニューラルネットワーク 線形関数と非線形関数 x2 ● 線形関数 図の2次元グラフでは直線の関数 ● 上の図は線形分離可能な例 � 𝑤𝑤𝑖𝑖 𝑥𝑥𝑖𝑖 + 𝑏𝑏 = 0 𝑖𝑖 2種類のクラス分離できているので線形識別関数と 呼ぶ x1 ● 下の図は線形分離不可能な例 複数の線形関数の組み合わせで、非線形識別関数を 近似(区分的線形識別関数と呼ぶ) 3つの線形関数の結果について当てはまる(=1)、当 てはまらない(=0)の二値に変換しているため、非線 形的な処理をしている(閾値によって二値変換する関 数のことをステップ関数と呼ぶ) x2 x1 3

5.

6.2 ディープニューラルネットワーク ディープニューラルネットワーク 隠れ層 入力層 (中間層) 出力層 ● 入力から出力までがネットワーク 構造で表現されたモデル ● 音声特徴量を入力として音素の確 率を出力とする場合、出力層の各 ノードの値は各音素の事後確率に 相当する ● 層をたくさん持つニューラルネッ トワークをディープニューラルネ ットワーク(DNN)と呼ぶ (事後確率など) (音声特徴量など) ・・・・ ノード エッジ 層(レイヤー) 順伝播(Forward propagation) 4

6.

6.2 ディープニューラルネットワーク 順伝播(Forward propagation) l-1 層 ℎ0𝑙𝑙−1 𝑙𝑙 𝑤𝑤0,1 ℎ0𝑙𝑙−1 ℎ2𝑙𝑙−1 𝑙𝑙 𝑤𝑤2,1 ℎ2𝑙𝑙−1 ℎ1𝑙𝑙−1 𝑙𝑙 𝑤𝑤1,1 ℎ1𝑙𝑙−1 バイアス 𝑏𝑏2𝑙𝑙 l層 𝑔𝑔1𝑙𝑙 + 𝑓𝑓(𝑔𝑔1𝑙𝑙 ) ● ● ● 活性化関数 各エッジには重みというパラメータ l-1 層i 番目からl 層j 番目へのエッジの重 𝑙𝑙 みを𝑤𝑤𝑖𝑖,𝑗𝑗 と表記 ℎ1𝑙𝑙 ● 線形層 l 層のj 番目のノードの値をℎ𝑗𝑗𝑙𝑙 と表記 ● 線形層の総和 𝑙𝑙 𝑙𝑙−1 𝑔𝑔𝑗𝑗𝑙𝑙 = � 𝑤𝑤𝑖𝑖,𝑗𝑗 ℎ𝑖𝑖 + 𝑏𝑏𝑗𝑗𝑙𝑙 活性化関数 ℎ𝑗𝑗𝑙𝑙 = 𝑓𝑓( 𝑔𝑔𝑗𝑗𝑙𝑙 ) 𝑖𝑖 5

7.

6.2 ディープニューラルネットワーク 活性化関数 シグモイド関数 𝑓𝑓𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 (𝑔𝑔𝑗𝑗𝑙𝑙 ) = tanh関数 1 1 + 𝑒𝑒 softmax関数 −𝑔𝑔𝑗𝑗𝑙𝑙 𝑓𝑓𝑡𝑡𝑡𝑡𝑡𝑡𝑡 (𝑔𝑔𝑗𝑗𝑙𝑙 ) 𝑓𝑓𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 (𝑔𝑔𝑗𝑗𝑙𝑙 ) = 𝑒𝑒 𝑔𝑔𝑗𝑗𝑙𝑙 ∑𝑘𝑘 𝑒𝑒 𝑔𝑔𝑗𝑗𝑙𝑙 = 𝑒𝑒 𝑒𝑒 𝑔𝑔𝑗𝑗𝑙𝑙 𝑔𝑔𝑗𝑗𝑙𝑙 − 𝑒𝑒 + 𝑒𝑒 −𝑔𝑔𝑗𝑗𝑙𝑙 −𝑔𝑔𝑗𝑗𝑙𝑙 ReLU関数 𝑓𝑓𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 (𝑔𝑔𝑗𝑗𝑙𝑙 ) = max{0, 𝑔𝑔𝑗𝑗𝑙𝑙 } 出力が0~1.0、出力の総和が1となる 最終的に確率の性質を求める場合に 出力層の活性化関数として一般的に使用される 6

8.

6.2 ディープニューラルネットワーク DNNの学習方法①損失関数 GMM-HMMでは尤度を最大化することでモデルを学習 DNNでは損失関数を設計し,最小化するように学習 交差エントロピー損失関数(Cross-Entropy Loss) 𝐿𝐿𝑐𝑐𝑐𝑐 = − � 𝑃𝑃𝑡𝑡 𝐶𝐶𝑗𝑗 𝑥𝑥 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝐶𝐶𝑗𝑗 𝑥𝑥 DNNが推定した確率分布と真の確率分布が近いほ ど低い値となる. 𝑗𝑗 DNNによって推定 真の事後確率 𝑥𝑥:入力 した𝐶𝐶𝑗𝑗 の事後確率 𝐶𝐶𝑗𝑗 :j番目のクラス 𝐿𝐿𝑐𝑐𝑐𝑐 = − � 𝑡𝑡𝑗𝑗 𝑙𝑙𝑙𝑙𝑙𝑙𝑦𝑦𝑗𝑗 𝑗𝑗 [6.8] →損失関数を最小化するように学習すれば,DNN は正しい事後確率を推定できるようになる. ● 真の事後確率𝑃𝑃𝑡𝑡 𝐶𝐶𝑗𝑗 𝑥𝑥 について,one-hot表現 (正解クラスを1,それ以外を0として定義)の 正解ラベルを𝑡𝑡𝑗𝑗 と置く ● 出力層(第L-1層)のj番目のノードの値を 𝑦𝑦𝑗𝑗 = ℎ𝑗𝑗𝐿𝐿−1 と置くと𝑦𝑦𝑗𝑗 =𝑃𝑃 𝐶𝐶𝑗𝑗 𝑥𝑥 となる 7

9.

6.2 ディープニューラルネットワーク DNNの学習方法②勾配法 𝑙𝑙 損失関数を最小化するようにDNNのパラメータである𝑤𝑤𝑖𝑖,𝑗𝑗 を求める DNNのパラメータの最適化方法として勾配法というアプローチがある 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 ← 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 − 𝜂𝜂 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝑙𝑙 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 [6.9] 損失関数𝐿𝐿𝑐𝑐𝑐𝑐 を微分した勾配(傾き) 𝐿𝐿𝑐𝑐𝑐𝑐 勾配が正 負の方向へ更新 𝐿𝐿𝑐𝑐𝑐𝑐 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 𝑙𝑙 ● パラメータ𝑤𝑤𝑖𝑖,𝑗𝑗 が収束するまで更新を繰り返し行う ● η(イータ)は学習率(Learning rate)で,1回の更新につき どの程度値を更新するかを決めるパラメータ 勾配が負 正の方向へ更新 現在の推定値 𝐿𝐿𝑐𝑐𝑐𝑐 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 勾配が0=収束 最適値 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 8

10.

6.2 ディープニューラルネットワーク DNNの学習方法③連鎖律 1. 2. 連鎖律 𝑦𝑦 = 𝑓𝑓1 (𝑥𝑥),𝑧𝑧 = 𝑓𝑓2 (𝑦𝑦) としたとき,𝜕𝜕𝑧𝑧/𝜕𝜕𝜕𝜕は以下のように計算できる. 𝜕𝜕𝑧𝑧 𝜕𝜕𝑧𝑧 𝜕𝜕𝑦𝑦 = 𝜕𝜕𝑥𝑥 𝜕𝜕𝑦𝑦 𝜕𝜕𝑥𝑥 合成関数の偏微分は,その合成関数を構成する 各関数の偏微分の積で表せる 多変数関数の連鎖律 y0 = 𝑓𝑓10 (𝑥𝑥),y1 = 𝑓𝑓11 𝑥𝑥 , … ,y𝐾𝐾−1 = 𝑓𝑓1𝐾𝐾−1 𝑥𝑥 ,𝑧𝑧 = 𝑓𝑓2 y0 , y1 , … , y𝐾𝐾−1 としたとき,𝜕𝜕𝑧𝑧/𝜕𝜕𝜕𝜕は以下のように計算できる. 𝐾𝐾−1 𝜕𝜕𝑧𝑧 𝜕𝜕𝑧𝑧 𝜕𝜕𝑦𝑦𝑘𝑘 =� 𝜕𝜕𝑥𝑥 𝜕𝜕𝑦𝑦𝑘𝑘 𝜕𝜕𝜕𝜕 𝑘𝑘=0 合成関数が多変数関数になっている場合,その偏微分は 各関数について独立に偏微分した結果の総和で表せる 9

11.

6.2 ディープニューラルネットワーク DNNの学習方法④連鎖律を用いたDNNの勾配の計算 ● ● 前の層の値は2個の関数の合成関数によって, 次の層の値に変換されている. 𝑙𝑙 𝑙𝑙−1 線形層の総和 𝑔𝑔𝑗𝑗𝑙𝑙 = ∑𝑖𝑖 𝑤𝑤𝑖𝑖,𝑗𝑗 ℎ𝑖𝑖 + 𝑏𝑏𝑗𝑗𝑙𝑙 ℎ𝑗𝑗𝑙𝑙 = 𝑓𝑓( 𝑔𝑔𝑗𝑗𝑙𝑙 ) 活性化関数 連鎖律を使うことでDNNにおける勾配の計算 が容易になる 出力層 L-2層 ℎ𝑖𝑖𝐿𝐿−2 𝐿𝐿−1 w𝑖𝑖,𝑗𝑗 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝐿𝐿−1 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 L-1層 𝑔𝑔𝑗𝑗𝐿𝐿−1 ℎ𝑗𝑗𝐿𝐿−1 + = = 𝐿𝐿−1 に対する, 出力層の重みパラメータ𝑤𝑤𝑖𝑖,𝑗𝑗 損失関数𝐿𝐿𝑐𝑐𝑐𝑐 [6.8]の勾配を求める 𝐿𝐿−1 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝜕𝜕𝑔𝑔𝑗𝑗 損失関数[6.8]の𝑦𝑦𝑗𝑗 にsoftmax関数を代入 L-1層における線形層の総和 𝐿𝐿−1 𝜕𝜕𝑔𝑔𝑗𝑗𝐿𝐿−1 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕 𝜕𝜕𝑔𝑔𝑗𝑗𝐿𝐿−1 − ∑𝑗𝑗 𝑡𝑡𝑗𝑗 𝑙𝑙𝑙𝑙𝑙𝑙 =(𝑦𝑦𝑗𝑗 - 𝑡𝑡𝑗𝑗 ) ℎ𝑖𝑖𝐿𝐿−2 𝑒𝑒 𝑔𝑔𝑙𝑙𝑗𝑗 ∑𝑘𝑘 𝑒𝑒 [6.16] 𝑔𝑔𝑙𝑙𝑗𝑗 𝜕𝜕 𝐿𝐿−1 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝐿𝐿−1 𝐿𝐿−2 ∑𝑖𝑖 𝑤𝑤𝑖𝑖,𝑗𝑗 ℎ𝑖𝑖 + 𝑏𝑏𝑗𝑗𝐿𝐿−1 10

12.

6.2 ディープニューラルネットワーク DNNの学習方法⑤多変数関数の連鎖律を用いたDNNの勾配の計算 L-3層 ℎ𝑖𝑖𝐿𝐿−3 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝐿𝐿−2 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝐿𝐿−2 w𝑖𝑖,𝑗𝑗 = 𝑔𝑔𝑗𝑗𝐿𝐿−2 L-2層 + 𝐿𝐿−2 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝜕𝜕𝑔𝑔𝑗𝑗 ℎ𝑗𝑗𝐿𝐿−2 𝐿𝐿−1 w𝑗𝑗,𝑘𝑘 𝐿𝐿−2 𝜕𝜕𝑔𝑔𝑗𝑗𝐿𝐿−2 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 = ∑𝑘𝑘 = ∑𝑘𝑘 [6.16]で計算済み 𝑔𝑔𝑘𝑘𝐿𝐿−1 + 𝐿𝐿−2 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝜕𝜕𝑔𝑔𝑘𝑘𝐿𝐿−1 𝜕𝜕ℎ𝑗𝑗 𝜕𝜕𝑔𝑔𝑘𝑘𝐿𝐿−1 𝜕𝜕ℎ𝑗𝑗𝐿𝐿−2 𝜕𝜕𝑔𝑔𝑗𝑗𝐿𝐿−2 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 出力層 L-1層 ℎ𝑘𝑘𝐿𝐿−1 𝐿𝐿−1 ℎ𝑘𝑘+1 𝜕𝜕𝑔𝑔𝑗𝑗𝐿𝐿−2 𝐿𝐿−2 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝐿𝐿−2 出力層の一つ前の層の重み𝑤𝑤𝑖𝑖,𝑗𝑗 に対する勾配 を求める. 𝐿𝐿−2 はL-2層から出力層へのエッジを介して, w𝑖𝑖,𝑗𝑗 出力層の全てのノードに影響を与えます. 𝐿𝐿−2 から見たとき,損失関数𝐿𝐿𝑐𝑐𝑐𝑐 は よって, w𝑖𝑖,𝑗𝑗 多変数関数に当てはまることになる. 𝐿𝐿−3 𝐿𝐿−1 𝐿𝐿−2 𝑤𝑤 𝑓𝑓′( 𝑔𝑔 ) ℎ 𝐿𝐿−1 𝑗𝑗,𝑘𝑘 𝑗𝑗 𝑖𝑖 𝜕𝜕𝑔𝑔𝑘𝑘 𝑓𝑓’𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 (𝑔𝑔𝑗𝑗𝑙𝑙 ) 活性化関数の微分値 = ℎ𝑗𝑗𝑙𝑙 (1 − ℎ𝑗𝑗𝑙𝑙 ) 𝑓𝑓’𝑡𝑡𝑡𝑡𝑡𝑡𝑡 (𝑔𝑔𝑗𝑗𝑙𝑙 ) =1− (ℎ𝑗𝑗𝑙𝑙 )2 𝑙𝑙 > 0) 1(𝑔𝑔 𝑗𝑗 𝑙𝑙 𝑓𝑓𝑓𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 (𝑔𝑔𝑗𝑗 ) = � 0(𝑔𝑔𝑗𝑗𝑙𝑙 ≤ 0) 11

13.

6.2 ディープニューラルネットワーク DNNの学習方法⑥誤差逆伝播法(Back propagation) 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 を 𝜕𝜕𝑔𝑔𝑘𝑘𝐿𝐿−2 L-3層の勾配計算は,すでに計算された 隠れ層l について一般化する 𝜕𝜕𝑔𝑔𝑗𝑗𝑙𝑙 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝑙𝑙 = 𝑙𝑙 = 𝑙𝑙 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕𝑔𝑔𝑗𝑗𝑙𝑙 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕𝑔𝑔𝑗𝑗𝑙𝑙 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝑙𝑙 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝜕𝜕𝑔𝑔𝑗𝑗 = ℎ𝑖𝑖𝑙𝑙−1 𝑓𝑓𝑓( 𝑔𝑔𝑗𝑗𝑙𝑙 ) ∑𝑘𝑘 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝑙𝑙+1 𝑤𝑤 𝑙𝑙+1 𝑗𝑗,𝑘𝑘 𝜕𝜕𝑔𝑔𝑘𝑘 [6.28] 利用して下記を計算し,結果にℎ𝑖𝑖𝐿𝐿−4 を乗算 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝐿𝐿−3 ∑ = 𝑓𝑓𝑓( 𝑔𝑔 ) 𝑘𝑘 𝐿𝐿−3 𝑗𝑗 𝜕𝜕𝑔𝑔𝑖𝑖,𝑗𝑗 𝜕𝜕𝐿𝐿𝑐𝑐𝑐𝑐 𝐿𝐿−2 𝑤𝑤 𝐿𝐿−2 𝑗𝑗,𝑘𝑘 𝜕𝜕𝑔𝑔𝑘𝑘 このように出力層の勾配と,活性化関数の微分 さえ定義できれば,[6.28]に従って,1つ後の 層の勾配計算結果を利用して,前の層の勾配を 順次計算していくことができる. 出力層で計算された損失(誤差)が入力層へ向か って逆向きに伝播していくことから誤差逆伝播 法(Back propagation)と呼ぶ. 12

14.

6.2 ディープニューラルネットワーク DNNの学習方法⑦SGDとミニバッチ 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 ← 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕𝐿𝐿𝓏𝓏 − 𝜂𝜂 � 𝑙𝑙 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 ← 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕𝐿𝐿𝓏𝓏 − 𝜂𝜂 � 𝑙𝑙 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 𝓏𝓏∈𝒟𝒟 𝓏𝓏∈ℬ 勾配法の中で基本的な方法である勾配降下法では,学習デ ータセット内の全てのデータに対して勾配を計算し,その 総和を用いてパラメータを更新する. 学習セット𝒟𝒟に含まれるサンプル𝓏𝓏は𝓏𝓏 ∈ 𝒟𝒟で表す. DNNの学習データでは,全データからランダムに取り出し た一部分ℬ⊂ 𝒟𝒟を使って勾配を計算する. このとき,勾配計算に用いる学習データのサブセットℬを ミニバッチと呼ぶ.このように,ランダムに取り出したデ ータを用いて勾配降下法を行うことから,この手法を確率 的勾配降下法(Stochastic gradient descent:SGD)と呼ぶ. SGDを用いる理由 1. 極小値が複数ある関数の場合は,最小値ではない極小 値にパラメータが収束することを局所解と呼ぶ.SDG を使うことで局所解にはまりにくくなる. 2. GPUを使った高速計算と相性が良い.サンプルごとの 計算を同時並列に行うことで計算時間を短縮できる. 13

15.

6.2 ディープニューラルネットワーク DNNの学習方法⑧まとめ 1 学習データセットをランダムにシャッフルし,複数のミニバッチに分割する 2 ミニバッチを1つ取り出してDNNに入力し,損失関数の値を計算する 3 誤差逆伝播法により,各パラメータに対する勾配を計算する 4 勾配を用いてパラメータを更新する 5 全ミニバッチに対して手順2~4を繰り返し実施し,そのあと手順1に戻る 以上の処理を,パラメータが収束するまで繰り返します.手順1~5までを1つの単位として エポックと呼ぶ. 14

16.

6.2 ディープニューラルネットワーク 学習に関するテクニック1:オプティマイザ(モメンタムSGD) SGDを含めこれらのパラメータ更新手法のことを,DNNの分野ではオプティマイザと呼ぶ. 式[6.9]を一般化して,SGDの定義式を以下に示す. 𝑤𝑤 ← 𝑤𝑤 − 𝜂𝜂𝛻𝛻𝑤𝑤 𝐿𝐿 𝛻𝛻(ナブラ) 𝛻𝛻𝑤𝑤 𝐿𝐿は損失関数𝐿𝐿 の𝑤𝑤に関する勾配で,勾配の大きさはパラメータ𝑤𝑤の更新にダイレクトに 影響する.学習率𝜂𝜂をうまく調整しないと最適値の付近で「振動状態」が発生する.勾配が 急に変化してもパラメータが過敏に更新されないようにモメンタム(momemtum)という工 夫がされる.モメンタムを用いたSGDによる更新式を以下に示す. 𝜈𝜈 ← α𝜈𝜈 − 𝜂𝜂𝛻𝛻𝑤𝑤 𝐿𝐿 𝑤𝑤 ← 𝑤𝑤 + 𝜈𝜈 𝜈𝜈(ニュー) αは0.9や0.99がよく用いられる モメンタムは慣性や勢いのようなイメージである. 前回の更新におけるパラメータ変化量α𝜈𝜈によって過度なパラメータ変化を起きにくくする. 15

17.

6.2 ディープニューラルネットワーク 学習に関するテクニック1:オプティマイザ(AdaDelta) AdaDeltaというオプティマイザによる更新式 𝐸𝐸 𝛻𝛻𝑤𝑤 𝐿𝐿 2 ← 𝜌𝜌𝐸𝐸 𝛻𝛻𝑤𝑤 𝐿𝐿 2 + 1 − 𝜌𝜌 𝛻𝛻𝑤𝑤 𝐿𝐿 𝐸𝐸 𝜈𝜈 ← 𝜌𝜌𝐸𝐸 ν2 + 1 − 𝜌𝜌 ν2 𝜈𝜈 ← − 𝐸𝐸 ν2 𝐸𝐸 𝛻𝛻𝑤𝑤 𝐿𝐿 𝑤𝑤 ← 𝑤𝑤 + 𝜈𝜈 +𝜖𝜖 2 +𝜖𝜖 𝛻𝛻𝑤𝑤 𝐿𝐿 2 𝜖𝜖(イプシロン)はゼロ除算防止のフロアリング係数 過去の更新におけるパラメータ変化の量の二条平 均を求める その平方根を分子としている 𝜌𝜌(ロー)は0.9や0.95がよく用いられる 勾配法における学習率を自動的に決めることが目的. 勾配が大きいパラメータは小さい学習率を, 勾配が小さいパラメータは大きい学習率をそれぞれ自動に設定する 16

18.

6.2 ディープニューラルネットワーク 学習に関するテクニック2:DNNパラメータの初期化とバッチ正規化 一般的に,DNNのパラメータ初期値は乱数で生成した値を用いる. 正規分布の平均値は一般に0とするが,分散値はDNNの学習において重要. LeCunの初期化方法[LeCun 2012]では,以下の正規分布に従ってl層の重み 𝑙𝑙 の初期値を生成する. パラメータ𝑤𝑤𝑖𝑖,𝑗𝑗 𝑙𝑙 𝑤𝑤𝑖𝑖,𝑗𝑗 ~𝛮𝛮 𝑤𝑤; 𝜇𝜇, 𝜎𝜎 2 𝜇𝜇 = 0 1 𝜎𝜎 = 𝑙𝑙−1 𝑑𝑑 𝜇𝜇は正規分布の平均値 𝜎𝜎は正規分布の標準偏差 𝑑𝑑𝑙𝑙−1 は重みを求める層lへ入力するノードの数 入力が平均0,分散1の正規分布に従い,バイアスが0の場合は, 出力も平均0,分散1で活性化関数の値域全体にバランスよく散らばる バッチ正規化(Batch normalization)[loffe 2015] ミニバッチ単位で計算された𝑔𝑔𝑗𝑗𝑙𝑙 に対して平均と分散を計算し,その計算結果を用いることでミ ニバッチ単位で正規化を行うこと 17