【Pythonで学ぶ音声認識】第7章:End-to-Endモデルによる連続音声認識(7.1~7.3節)

667 Views

December 28, 23

スライド概要

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

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

音声認識 7章 1~3節 Connectionist Temporal Classification 京都大学工学部電気電子工学科4回生 三宅大貴 0

2.

フルニューラルネットモデルへ DNN-HMMのように多段的な学習を行うのではなく、一度にすべて のモデルの学習を行いたい(End-to-End) Connectionist Temporal Classification (CTC) ⚫ Attention encoder-decoder モデル を扱う ⚫ 1

3.

Recurrent neural network (RNN) (unidirectional) RNNの計算式 2

4.

RNNの弱点 𝑡 = 0~𝑇 まで計算した後に誤差逆伝播を行う (BPTT; Back Propagation Through Time) →勾配爆発や勾配消失が起きる 勾配消失の結果、初期の入力は学習にほぼ寄与しない(遠い過去の 情報を見れない) 3

5.

Long short-term memory (LSTM) LSTMの計算式 入力、出力、隠れ状態をそれぞれどれだけ保持するかを動的に決定 Residual構造により勾配消失を防ぐ 4

6.

Gated recurrent unit (GRU) GRUの計算式 GRUよりも省パラメータ 5

7.

Gradient Clipping LSTMやGRUで勾配消失は防げても勾配爆発は防げない →Gradient Clipping 6

8.

Connectionist temporal classification (CTC) フレームごとのラベル付けを諦める CTCでは各時刻(フレーム)ごとに各トークンの事後確率を予測する トークンのラベル数は音素(や仮名、単語)にブランク(空)トークン を加えた数だけ用意する 予測されたトークン列に以下の操作 𝓑 を加えて認識結果とする ⚫ 連続するトークンを1トークンとする ⚫ ブランクトークンを除去する 例えば 𝓑 [o, −, −, o, i, i, i, −] = [o, o, i]となる 7

9.

CTCの学習 トークン列の予測結果 𝑙 の事後確率は以下で計算できる 損失関数はトークン列の事後確率に対するクロスエントロピーとする 8

10.

損失関数の微分 各出力に対する勾配は以下のように求まる 𝑃 𝒍, 𝜋𝑡 = 𝑘 𝒙 は時刻 𝑡 に(𝑠 番目の)トークン 𝑘 と予測される前向き 確率 𝛼𝑠𝑡 と後ろ向き確率 𝛽𝑠𝑡 から計算される(次ページ) 9

11.

前向き確率と後ろ向き確率 10

12.

パスの遷移方法 11

13.

前向き確率の計算方法 𝑡 = 0 の時はブランク or 𝒍 の1文字目のみを考える(最終的に 𝒍 にな るパスのみを考えているため) 𝒍′ は拡張トークン列 𝒍′2𝑖 = blank 𝒍′2𝑖+1 = 𝒍𝑖 それ以降は前ページの遷移にそって更新 12

14.

後ろ向き確率の計算方法 𝑡 = 𝑇 − 1 の時はブランク or 𝒍 の最後の文字で終わると考える それ以降は前向き確率と同様に更新 13

15.

まとめ まとめ1 Recurrentな構造のモデルを使うことでEnd-to-Endで学習できる まとめ2 CTCではブランクトークンを導入しフレームごとにトークンを予測する まとめ3 前向き確率と後ろ向き確率によってトークン列の事後確率が計算できる 14