Theanoを用いた研究開発

ディープニューラルネットワークを用いた
音声認識システムの構築
ATR-Trek Co.,LTD.
2015年9月18日
松田 繁樹
会社概要
スマートフォン・タブレット
端末用アプリケーション開発
音声認識・合成・対話・翻訳
アプリケーション開発
顧客管理システム(CRM)
Webシステム開発
サーバ構築/運用
翻訳・IT・映像制作事業
1
内容
統計的音声認識手法を基礎としたシステム
– フロントエンド処理
– 音響モデル
– 言語モデル
学習データ量と音声認識性能の関係
学習時間の比較
Theanoを用いた研究開発
まとめ
2
統計的音声認識手法を基礎としたシステム
入力音声𝑋に対して最も高い確率が得られる単語列𝑊 ∗ を探索
– 様々な仮説𝑊に対するスコアは𝑃 𝑂 = 𝑓𝑒(𝑋) 𝑊 𝑃(𝑊)により計算
W *  arg max P (W | O  fe( X ))  arg max
W
デコーダ
W
音響モデル
P (O | W ) P (W )
P (O )
言語モデル
 arg max P (O  fe( X ) | W ) P (W )
W
フロントエンド処理
音響モデル
𝑃(𝑂|𝑊)
フロントエンド処理
𝑓𝑒(𝑋)
入力音声𝑋
言語モデル
𝑃(𝑊)
デコーダ
argmax
認識
結果
𝑊∗
特徴ベクトル
時系列𝑂
3
統計的音声認識手法を基礎としたシステム
入力音声𝑋に対して最も高い確率が得られる単語列𝑊 ∗ を探索
– 様々な仮説𝑊に対するスコアは𝑃 𝑂 = 𝑓𝑒(𝑋) 𝑊 𝑃(𝑊)により計算
W *  arg max P (W | O  fe( X ))  arg max
W
デコーダ
W
音響モデル
P (O | W ) P (W )
P (O )
言語モデル
 arg max P (O  fe( X ) | W ) P (W )
W
フロントエンド処理
ガウス混合分布ベースの
隠れマルコフモデル
N-gramモデル
音響モデル
𝑃(𝑂|𝑊)
言語モデル
𝑃(𝑊)
2012年以前は…
スペクトラムサブトラクションや
ウィーナフィルタ、
ETSI Advanced Frontend 等…
フロントエンド処理
𝑓𝑒(𝑋)
入力音声𝑋
デコーダ
argmax
認識
結果
𝑊∗
特徴ベクトル
時系列𝑂
3
統計的音声認識手法を基礎としたシステム
入力音声𝑋に対して最も高い確率が得られる単語列𝑊 ∗ を探索
– 様々な仮説𝑊に対するスコアは𝑃 𝑂 = 𝑓𝑒(𝑋) 𝑊 𝑃(𝑊)により計算
W *  arg max P (W | O  fe( X ))  arg max
W
デコーダ
W
音響モデル
言語モデル
 arg max P (O  fe( X ) | W ) P (W )
W
P (O | W ) P (W )
P (O )
DNN、CNN、LSTMベースの
隠れマルコフモデル
フロントエンド処理
2012年以降は…
オートエンコーダや畳み込み
ニューラルネットワークを用いた、
雑音抑圧や残響抑圧処理等…
音響モデル
𝑃(𝑂|𝑊)
フロントエンド処理
𝑂 = 𝑓𝑒(𝑋)
N-gramモデルと
RNNやLSTMの併用
言語モデル
𝑃(𝑊)
デコーダ
argmax
認識
結果
𝑊∗
入力音声𝑋
3
統計的音声認識手法を基礎としたシステム
入力音声𝑋に対して最も高い確率が得られる単語列𝑊 ∗ を探索
– 様々な仮説𝑊に対するスコアは𝑃 𝑂 = 𝑓𝑒(𝑋) 𝑊 𝑃(𝑊)により計算
W *  arg max P (W | O  fe( X ))  arg max
W
デコーダ
W
音響モデル
言語モデル
 arg max P (O  fe( X ) | W ) P (W )
W
P (O | W ) P (W )
P (O )
DNN、CNN、LSTMベースの
隠れマルコフモデル
フロントエンド処理
2012年以降は…
オートエンコーダや畳み込み
ニューラルネットワークを用いた、
雑音抑圧や残響抑圧処理等…
音響モデル
𝑃(𝑂|𝑊)
フロントエンド処理
𝑂 = 𝑓𝑒(𝑋)
N-gramモデルと
RNNやLSTMの併用
言語モデル
𝑃(𝑊)
デコーダ
argmax
認識
結果
𝑊∗
入力音声𝑋
3
フロントエンド処理
音声認識に適した音響特徴量の抽出処理
– オートエンコーダ(DAE)の利用
• 雑音や残響が重畳したノイジー信号からクリーン信号へのマッピング
をニューラルネットワークで学習
雑音抑圧されたフィルタバンク係数を出力
・・・
・・・
雑音抑圧処理後
・・・
・・・
雑音重畳音声のフィルタバンク係数を入力
図.雑音抑圧用オートエンコーダの構造
雑音重畳音声(自動車走行雑音)
図.DAEによる雑音抑圧の例
4
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を学習する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
...
周波数方向
11フレーム
(110ms)
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を学習する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
...
周波数方向
11フレーム
(110ms)
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を学習する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
...
周波数方向
11フレーム
(110ms)
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を学習する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
...
周波数方向
11フレーム
(110ms)
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を学習する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
...
周波数方向
11フレーム
(110ms)
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を学習する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
・・・
...
周波数方向
11フレーム
(110ms)
・・・
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
フロントエンド処理(続き)
– 畳み込みニューラルネットワークの利用
• 畳み込み層を持つニューラルネットワーク全体を最適化する事で
音声認識に適した特徴量を自動獲得
• 音声波形から直接認識を行う手法の検討なども
...
・・・
・・・
時間方向
畳み込み係数
特徴量マップ
図.畳み込みニューラルネットワークによる特徴量の抽出
5
統計的音声認識手法を基礎としたシステム
入力音声𝑂に対して最も高い確率が得られる単語列𝑊 ∗ を探索
– 様々な仮説𝑊一つ一つに対するスコアは𝑃 𝑂 𝑊 𝑃(𝑊)により計算
W *  arg max P (W | O )  arg max
W
デコーダ
W
音響モデル
P (O | W ) P (W )
P (O )
言語モデル
 arg max P (O | W ) P (W )
W
DNN、CNN、LSTMベースの
隠れマルコフモデル
2012年以降は…
オートエンコーダや畳み込み
ニューラルネットワークを用いた、
雑音抑圧や残響抑圧処理等…
音響モデル
𝑃(𝑂|𝑊)
フロントエンド処理
𝑂 = 𝑓𝑒(𝑋)
N-gramモデルと
RNNやLSTMの併用
言語モデル
𝑃(𝑊)
デコーダ
argmax
認識
結果
𝑊∗
入力音声𝑋
3
音響モデル
音響モデルによる𝑃(𝑂|𝑊)の計算
– 前後の音素環境を考慮したトライフォンHMMが広く利用
• 任意の単語列をトライフォンHMMの連鎖で表現
– (26音素+無音)×26音素×(26音素+無音)+無音=18955モデル
– 18955モデル×3状態=56865状態(数千状態まで共有化)
• 個々の状態出力確率 𝑃(𝑂|𝑠𝑖 ) をガウス混合分布(GMM)で計算
sil
ha
h
a
i
音響特徴量空間
音響特徴量空間
音響特徴量空間
音響特徴量空間
ガウス混合分布
ガウス混合分布
音響特徴量空間
音響特徴量空間
i
i
sil
音響特徴量空間
音響特徴量空間
ガウス混合分布
音響特徴量空間
図.従来のGMM-HMMを用いた単語「はい」の𝑃(𝑂|𝑊)の計算
6
HMMによる非定常信号のモデル化(補足)
音響特徴量空間
状態1
状態2
状態3
状態4
状態5
図.音声等の非定常信号を定常信号源の連鎖で表現
ディープニューラルネットワーク(DNN)による
状態出力確率の計算
– GMMが計算していた状態出力確率をDNNで計算
• 従来のGMM-HMMに比べて約30%の音声認識誤りの削減が報告
sil
ha
h
a
i
i
i
sil
状態出力確率を出力
…
ソフトマックス層の出力 𝑃 𝑠𝑖 𝑂 から
状態出力確率 𝑃(𝑂|𝑠𝑖 ) を計算
…
𝑃(𝑠𝑖 |𝑂) 𝑃 𝑠𝑖 𝑂 𝑃(𝑂)
𝑃(𝑠𝑖 , 𝑂)
=
=
𝑃(𝑠𝑖 )
𝑃 𝑠𝑖 𝑃(𝑂)
𝑃 𝑠𝑖 𝑃(𝑂)
…
…
…
…
𝑃(𝑂|𝑠𝑖 )
=
𝑃(𝑂)
…
音響特徴量を入力
図.DNN-HMMを用いた単語「はい」の𝑃(𝑂|𝑊)の計算
7
長い履歴を考慮した音響モデル
リカレントニューラルネットワーク(RNN)の利用
– 中間層の出力を手前の層へ戻すリカレント構造により状態を保持
– リカレント接続により内部状態を保持
• 勾配消失問題により長い履歴を考慮したモデルの学習が難しい
– 学習時に層を逆伝播する毎に学習信号が減衰
…
…
…
リカレント接続
…
図.リカレントニューラルネットワークの構造
8
長い履歴を考慮した音響モデル
リカレントニューラルネットワーク(RNN)の利用
– 中間層の出力を手前の層へ戻すリカレント構造により状態を保持
– リカレント接続により内部状態を保持
• 勾配消失問題により長い履歴を考慮したモデルの学習が難しい
– 学習時に層を逆伝播する毎に学習信号が減衰
…
…
…
リカレント接続
…
図.リカレントニューラルネットワークの構造
8
長い履歴を考慮した音響モデル
リカレントニューラルネットワーク(RNN)の利用
– 中間層の出力を手前の層へ戻すリカレント構造により状態を保持
– リカレント接続により内部状態を保持
• 勾配消失問題により長い履歴を考慮したモデルの学習が難しい
– 学習時に層を逆伝播する毎に学習信号が減衰
…
…
…
リカレント接続
…
図.リカレントニューラルネットワークの構造
8
長い履歴を考慮した音響モデル
リカレントニューラルネットワーク(RNN)の利用
– 中間層の出力を手前の層へ戻すリカレント構造により状態を保持
– リカレント接続により内部状態を保持
• 勾配消失問題により長い履歴を考慮したモデルの学習が難しい
– 学習時に層を逆伝播する毎に学習信号が減衰
…
…
…
リカレント接続
…
図.リカレントニューラルネットワークの構造
8
長い履歴を考慮した音響モデル(続き)
メモリ機能付きニューロンの利用
(Long Short Term Memory: LSTM)
– メモリ内容を制御する3種類のゲートを持つ
– 長時間の履歴を考慮したモデルの推定が可能
• 記憶の保持において勾配消失問題を回避
入力
ゲート
忘却
出力
ゲート ゲート
・・・
・・・
メモリ
図.LSTMの構造
9
長い履歴を考慮した音響モデル(続き)
メモリ機能付きニューロンの利用
(Long Short Term Memory: LSTM)
– メモリ内容を制御する3種類のゲートを持つ
– 長時間の履歴を考慮したモデルの推定が可能
• 記憶の保持において勾配消失問題を回避
入力
ゲート
忘却
出力
ゲート ゲート
・・・
・・・
メモリ
図.LSTMの構造
9
統計的音声認識手法を基礎としたシステム
入力音声𝑂に対して最も高い確率が得られる単語列𝑊 ∗ を探索
– 様々な仮説𝑊一つ一つに対するスコアは𝑃 𝑂 𝑊 𝑃(𝑊)により計算
W *  arg max P (W | O )  arg max
W
デコーダ
W
音響モデル
P (O | W ) P (W )
P (O )
言語モデル
 arg max P (O | W ) P (W )
W
DNN、CNN、LSTMベースの
隠れマルコフモデル
2012年以降は…
オートエンコーダや畳み込み
ニューラルネットワークを用いた、
雑音抑圧や残響抑圧処理等…
音響モデル
𝑃(𝑂|𝑊)
フロントエンド処理
𝑂 = 𝑓𝑒(𝑋)
N-gramモデルと
RNNやLSTMの併用
言語モデル
𝑃(𝑊)
デコーダ
argmax
認識
結果
𝑊∗
入力音声𝑋
3
言語モデル
言語モデルによる𝑃(𝑊)の計算
– n-gram(n単語の連鎖確率)が広く利用
• 過去n-1単語の条件付き確率 𝑃(𝑤𝑛 |𝑤1 , … , 𝑤𝑛−1 )
𝑃 $, コーヒー, を, 下さい, $
≅ 𝑃($)𝑃 コーヒー|$ 𝑃 を|$, コーヒー 𝑃 下さい コーヒー, を
𝑃($|を, 下さい)
10
長い履歴を考慮した言語モデル
リカレントニューラルネットワークの利用
– 通常のシグモイド型ニューロンや LSTM が使用
– 単語は 1-of-K コーディングにより表現
0.0
𝑃(𝑤𝑛 = こんにちは|𝑤0 , … , 𝑤𝑛−1 )
0.0
𝑃(𝑤𝑛 = こんばんは|𝑤0 , … , 𝑤𝑛−1 )
𝑃(𝑤𝑛 = 東京|𝑤0 , … , 𝑤𝑛−1 )
1.0
…
…
…
数十万次元のベクトル
• 入力された単語に対応する要素は 1.0、それ以外は 0.0 のベクトル
0.0
𝑃(𝑤𝑛 = 砂漠|𝑤0 , … , 𝑤𝑛−1 )
𝑃(𝑤𝑛 = まで|𝑤0 , … , 𝑤𝑛−1 )
0.0
𝑃(𝑤𝑛 = から|𝑤0 , … , 𝑤𝑛−1 )
0.0
𝑤𝑛−1
リカレント接続
0.0
図.RNNを用いた言語モデルの構造
𝑃(𝑤𝑛 = びっくり|𝑤0 , … , 𝑤𝑛−1 )
11
学習データ量と音声認識性能の関係
実験条件
– 音響モデル
• 6層DNN(中間層は2048ニューロン)を使用
• 実サービス利用音声からランダム選択された50~450時間の音声
– 言語モデル
• 単語トライグラムを使用
• ウェブクローリングデータや実利用データ約25億文
– 評価データ
• 実サービス利用音声1000発話
– 音響特徴量
• 10msフレーム周期
• 12次元MFCC、パワー、12次元ΔMFCC、Δパワー、12次元ΔΔMFCC、
ΔΔパワーの合計39次元
• DNNへの入力特徴量
– 前後5フレームを含む計11フレーム(429次元特徴量)
12
学習データ量と音声認識性能の関係(続き)
学習データ量が450時間の場合
– 従来のGMM-HMMに比べて約35%の誤りを削減
学習データ量が非常に少ない場合
– 従来のGMM-HMMよりも認識性能が劣化
GMM-HMM
DNN-HMM
GMM-HMM
25
DNN-HMM
50
20
40
文誤り率(%)
文字誤り率(%)
45
15
10
5
35
30
25
20
15
10
5
0
0
50
60
90
140
240
350
学習データ量(時間)
450
50
60
90
140
240
350
450
学習データ量(時間)
13
学習時間の比較
1000時間の学習データを15エポック学習した場合の処理時間
– 8層DNNをK40を用いて学習した場合、約11日必要
– LSTMの学習には長い時間が必要
45
学習時間(日)
40
35
30
K20(2496)
25
K40(2880)
20
K80(2496×2)
15
10
5
0
6層DNN
8層DNN
CNN
LSTM
3000 Softmax
2048
3000 Softmax
3000 Softmax
2048
2048
2048
2048
2048
512 RNN
2048
2048
2048 (128 CNN)
880 LSTM
2048
2048
1408 (MaxP)
512 RNN
2048
2048
4224 (128 CNN)
880 LSTM
429
429
1320
MFCC39x11frames
MFCC39x11frames
FBANK120x11frames
ニューラルネットワークの構造
3000 Softmax
120
FBANK120
注.1GPUのみ使用
KALDIを用いて測定
14
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
GPU側
GPUメモリ
GPUコア
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
% 目的関数の作成
cost=(y-p)^2/2
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
更新用
Python関数
% 自動微分
grads=grad(cost)
コンパイル&リンク
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
更新用
モデル
Python関数
パラメータ
コンパイル&リンク
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
学習データのシャッフリング
&ミニバッチ化
更新用
モデル
Python関数
パラメータ
コンパイル&リンク
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
学習データのシャッフリング
&ミニバッチ化
更新用
モデル
Python関数
パラメータ
コンパイル&リンク
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
学習データのシャッフリング
&ミニバッチ化
更新用
モデル
Python関数
パラメータ
コンパイル&リンク
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
学習データのシャッフリング
&ミニバッチ化
更新用
モデル
Python関数
パラメータ
コンパイル&リンク
15
Theanoを用いた研究開発
研究開発では新しいアイデアを即座に評価できる事が重要
– Python 用ライブラリ Theano の利用
• モントリオール大学で開発中
– 確率的勾配降下法(SGD)によるモデルパラメータ推定が簡単
• 目的関数(モデルの構造)を自由に記述
• 目的関数に対して自動微分が可能
ホスト側
% モデルの構造の作成
p=L5.forward(
L4.forward(
L3.forward(
L2.forward(
L1.forward(x)))))
GPU側
GPUメモリ
GPUコア
モデルパラメータ
% 目的関数の作成
cost=(y-p)^2/2
% 自動微分
grads=grad(cost)
学習データのシャッフリング
&ミニバッチ化
更新用
モデル
Python関数
パラメータ
コンパイル&リンク
15
Theanoを用いた研究開発(続き)
話者正規化学習DNNの事例
– 話者独立(非依存)層と話者依存層に分割
– 話者依存層を話者毎に切り替えながらネットワーク全体を学習
– Theanoを利用して簡単に実装
出力層(話者独立)
第6層(話者独立)
第5層(話者独立)
第4層(話者独立)
第3層(話者A)
第3層(話者B)
第3層(話者C)
第3層(話者D)
・・・
・・・
第2層(話者独立)
入力層
話者A
話者B
話者C
話者D
学習データ
学習データ
学習データ
学習データ
図.SAT-DNN の学習
16
Theanoを用いた研究開発(続き)
話者正規化学習DNNの事例
– 話者独立(非依存)層と話者依存層に分割
– 話者依存層を話者毎に切り替えながらネットワーク全体を学習
– Theanoを利用して簡単に実装
出力層(話者独立)
第6層(話者独立)
第5層(話者独立)
第4層(話者独立)
第3層(話者A)
第3層(話者B)
第3層(話者C)
第3層(話者D)
・・・
・・・
第2層(話者独立)
入力層
話者A
話者B
話者C
話者D
学習データ
学習データ
学習データ
学習データ
図.SAT-DNN の学習
16
Theanoを用いた研究開発(続き)
話者正規化学習DNNの事例
– 話者独立(非依存)層と話者依存層に分割
– 話者依存層を話者毎に切り替えながらネットワーク全体を学習
– Theanoを利用して簡単に実装
出力層(話者独立)
第6層(話者独立)
第5層(話者独立)
第4層(話者独立)
第3層(話者A)
第3層(話者B)
第3層(話者C)
第3層(話者D)
・・・
・・・
第2層(話者独立)
入力層
話者A
話者B
話者C
話者D
学習データ
学習データ
学習データ
学習データ
図.SAT-DNN の学習
16
Theanoを用いた研究開発(続き)
話者正規化学習DNNの事例
– 話者独立(非依存)層と話者依存層に分割
– 話者依存層を話者毎に切り替えながらネットワーク全体を学習
– Theanoを利用して簡単に実装
出力層(話者独立)
第6層(話者独立)
第5層(話者独立)
第4層(話者独立)
第3層(話者A)
第3層(話者B)
第3層(話者C)
第3層(話者D)
・・・
・・・
第2層(話者独立)
入力層
話者A
話者B
話者C
話者D
学習データ
学習データ
学習データ
学習データ
図.SAT-DNN の学習
16
Theanoを用いた研究開発(続き)
話者正規化学習DNNの事例
– 話者独立(非依存)層と話者依存層に分割
– 話者依存層を話者毎に切り替えながらネットワーク全体を学習
– Theanoを利用して簡単に実装
出力層(話者独立)
第6層(話者独立)
第5層(話者独立)
第4層(話者独立)
第3層(話者A)
第3層(話者B)
第3層(話者C)
第3層(話者D)
・・・
・・・
第2層(話者独立)
入力層
話者A
話者B
話者C
話者D
学習データ
学習データ
学習データ
学習データ
図.SAT-DNN の学習
16
まとめ
音声認識システムにおけるニューラルネットワーク化
– フロントエンド処理
– 音響モデル
– 言語モデル
音声認識用音響モデルの推定
– 学習データ量と音声認識性能の関係
– 学習時間の比較
Theanoを用いた研究開発
17