ichou1のブログ

主に音声認識、時々、データ分析のことを書く

2018-01-01から1年間の記事一覧

(論文読解) Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation

Googleが出した論文 [1804.03619] Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation顔画像をもとにノイズマスキングを生成し、傾聴したい音声だけを抽出する。 ブログ記事 ai.googleblog.com解説…

TensorFlowメモ(RNNその1)

RNN(Recurrent Neural Network)を試してみる。以下のサイトを参考にさせていただいた。 第6回 リカレントニューラルネットワークの実装(2)|Tech Book Zone Manatee正弦波の時系列データ5つ(tからt+4)の値をもとに、t+5の値を予測する。 インプットデ…

tensorflowメモ(手書き文字認識その4)

前回の続き。精度を上げることを試みる。tensorflowサンプル(「examples/tutorials/mnist/mnist_deep.py」)を参考にレイヤーを構成。"Fully connected layer 1"(上表のfc1)のdownsamplingはMNISTサンプルをもとに適当に設定。 「256」(=2 * 2 * 64)featu…

tensorflowメモ(手書き文字認識その3)

前回の続き。 モデルを畳み込みニューラルネットワーク (Convolutional Neural Network)に変更してみる。チュートリアルなどを見ると、畳み込み層を2回通しているケースが多いが、まずは1層のモデルで試してみる。パラメータは以下のとおりとした。 (参…

tensorflowメモ(手書き文字認識その2)

前回生成したモデルを掘り下げてみる。 重み付けを行うパラメータが「final_w」に入っているとする。 final_w.shape (64, 10) # 最小値 numpy.min(final_w) -1.68 # 最大値 numpy.max(final_w) 1.55「final_w」をグレースケール変換して視覚化してみる。 変…

tensorflowメモ(手書き文字認識その1)

ライブラリ「scikit-learn」の手書き文字データセット「digits」を使って、手書き文字認識を試してみる。 入力データ データセットの構成は以下のとおり。 8 x 8ピクセルの画像 「0」から「9」までの手書き文字 明暗を0から16までの値で表現 画像数は1797 1…

確率分布の推定

これまで、モデルを表現するための要素である「確率分布の形」(確率密度関数)が分かっているものとして考えてきた。確率分布の形が分からないケースを考えてみる。 (現実世界で推定しようとする対象は、こっちの方が多いと思われる)以前、多変量混合正規…

パラメータ推定(多変量正規分布)

前回、多変量混合正規分布のパラメータ推定について書いたが、(混合分布ではない)多変量正規分布のパラメータ推定についても書いておく。変量の数は「2」、「変量x」と「変量y」で表されるとすると、2変量正規分布の確率密度関数は 2変量正規分布の確率密…

統計学における変量と変数の違い

R

「RとS-PLUSによる多変量解析」という本を読んだ時のメモ。以下、重回帰分析に関するくだりを引用。 書籍では、二行目は「この手法は、従属変数と複数の説明変数の間の関係を探るために使われる」という記載であるが、「従属変数」を「目的変数」に書き換え…

パラメータ推定(多変量混合正規分布)

前回の多変量混合正規分布の続き。 パラメータ推定に関するメモ。変量の数は「2」、「変量x」と「変量y」で表されるとし、混合数をKとおくと、2変量混合正規分布の確率密度関数は 2変量混合正規分布の確率密度関数 ここで、 観測データがN個であるとき、対数…

多変量混合正規分布

前回の多変量正規分布の続き。 「多変量混合正規分布」について見てみる。変量の数は「2」、「変量x」と「変量y」で表されるとし、混合数をKとおくと、2変量混合正規分布の確率密度関数は 混合パラメータ 2変量混合正規分布の確率密度関数 ここで、∑は「変量…

多変量正規分布(その2)

前回は2変量に相関がないケースを見たが、今回は相関があるケースを見てみる。各変量の平均と分散は前回と同じ。相関係数だけ変えてみる。 変量x : 平均「1」、分散「2」の正規分布に従う 変量y : 平均「3」、分散「4」の正規分布に従う 変量x と 変量y には…

多変量正規分布

多変量混合正規分布のパラメータ推定に入る前に、どのようなモデルを扱おうとしているのか整理しておく。以下の視点で考えた時、 変量が「1」or「多」 「混合分布である」or「混合分布ではない」 以下の4パターンに分類される。 (1変量)正規分布 (1変量)混…

パラメータ推定(混合正規分布)

混合分布を使うことで、より柔軟に分布をモデル化できる。例えば、ピークが2つあるような分布。 これは以下2つの分布を混合したもの。 分布1 : 正規分布N(2, 5)、混合比「0.6」 分布2 : 正規分布N(10, 5)、混合比「0.4」この混合分布は音声認識において使わ…

パラメータ推定(ニュートン・ラフソン法)

前回の続き。「ニュートン・ラフソン法」を使って、2変数パラメータの最尤推定値を求めてみる。 以下のサイトを参考にさせていただいた。 http://www012.upp.so-net.ne.jp/doi/sas/numerical/Newton_Raphson/Newton_Raphson.pdf正規分布の対数尤度関数を再掲…

パラメータ推定(最尤推定法)

MathJax.Hub.Config({ displayAlign: "left", displayIndent: "2em" }); 今、手元にn個の観測値(標本)が得られているとする。統計モデルとして表現するには、 観測値が従うであろう確率分布(確率密度関数)の形 確率密度関数のパラメータ が必要となる。1…

ヘッセ行列の固有値による凸性の判定

最適化を考える時、どの方向に向かって修正していくかを決める必要がある。扱う対象が関数化できるなら、その最大値(あるいは最小値)を求める問題に帰着するので、関数の凸性が大事な概念になってくる。今回は2変数関数を対象に、2階偏微分であるヘッセ…

行列の低ランク近似と近似度

特異値分解を使った「行列の低ランク近似」に関するメモ。まずは、視覚的に確認しやすい画像データで試してみる。高さ200px、幅320px、インデックスカラーのRAWデータを用意する。 1pxを1バイトで表現、0〜255の範囲の値をとる200行 x 320列の行列ができる。…

音声認識メモ(Kaldi)その26(パラメータ更新、NG-SGD Dan's DNN(nnet2))

前回の続き。論文とセットで見ていく。パラメータ更新の過程でやっていることは「Natural Gradient for Stochastic Gradient Descent (NG-SGD)」と名前が付いている。用語のおさらい。 「Stochastic Gradient Descent」(確率的勾配降下法)は、シャッフルし…

固有値分解と座標変換

DNN(Deep Neural Network)を学んでいると、擬似逆行列の算出や低ランク近似などで固有値の概念に出くわす。 固有値分解に関するメモ。以下のサイトを参考にさせていただいた。 http://eman-physics.net/math/linear09.html変換に使う行列Aは参考サイトと同…

R 計算メモ(行列を使った分散、共分散の計算)

R

行列計算で分散、共分散を求める方法のメモ。前回使った2変数データ(xとy、サンプル数5)を以下のとおり行列で表現する。 (各変数は、列ベクトルでなく、行ベクトルで表現していることに注意) 元データ # 変数x xvar [1] 50 60 70 80 90 # 変数y yvar [1]…

R 計算メモ(分散、共分散)

R

分散と共分散を計算をしたいとき用のメモ。Rでは、標本分散、標本共分散を求める関数はないので、自分で定義する。 以下のサイトを参考にさせていただいた。 http://cse.naro.affrc.go.jp/takezawa/r-tips/r/59.html関数定義ここから。 標本分散 # 関数を定…

音声認識メモ(Kaldi)その25(内部で扱うデータの型)

プログラム内で扱うデータの桁数に関するメモ。デフォルトでコンパイルすると「float」型になる。 kaldi/configure at master · kaldi-asr/kaldi · GitHub configure抜粋 # Default configuration double_precision=false (snip) if $double_precision; then…

音声認識メモ(Kaldi)その24( パラメータ更新 Dan's DNN(nnet2))

「AffineComponentPreconditionedOnline」コンポーネントのパラメータ更新過程を追ってみる。モデルは「nnet4c」ベース、mixupを行う前の状態。 今回、確認するのは下図の破線部分のパラメータ。 BackPropagationにおいて、以下2つの値を使って更新する。 尚…

OpenSSL APIメモ(HTTP/2対応その1)

OpenSSL APIを使うクライアントプログラムで「SSL_ERROR_SYSCALL」が返ってきた。エラーを返している部分はSSL_connect()通信内容を確認してみると、アクセスしようとしているサイトはHTTP/2対応だった。 (WEBサーバはNginx)段階的に修正してみる。HTTP/2…

音声認識メモ(Kaldi)その23(トレーニング時のモデル更新 Dan's DNN(nnet2))

前回の続き。mixup後に生成した12個のモデル(14.mdl〜25.mdl)から「final.mdl」を生成する過程を追ってみる。 nnet2では、結果が良かったモデルを1つだけ選ぶのではなく、スケールを掛けた上で足し合わせている。生成は、「nnet2bin/nnet-combine-fast」コ…

音声認識メモ(Kaldi)その22(アライメント)

decodeの過程を掘り下げてみる。アライメントで出力される数値(インプットであるMFCC特徴量の各フレームに1対1で紐付けられる)は何を示しているか。今回は、デコードシェル(egs/wsj/s5/steps/decode.sh)の内部でコールしているlattice生成コマンドのアウ…

音声認識メモ(Kaldi)その21(音韻モデル)

認識対象を孤立単語から発展させて、もう少し実用的な使い方を試してみる。まず、トレーニング対象の発話を音素に分解する。 元の文 オススメの料理は何ですか 文を単語へ分解(分かち書き、「MeCab」を使用) オススメ の 料理 は 何 です か 単語を音素列…

音声認識メモ(Kaldi)その20(トレーニング Dan's DNN(nnet2))

nnet2での学習の流れを追ってみる。今回は、活性化関数に「tanh」を使った「nnet4c」を対象とした。 ${KALDI_ROOT}/egs/rm/s5/local/nnet2/run_4c.sh # for CPU only (with --use-gpu false). steps/nnet2/train_tanh_fast.sh \ --stage -10 \ --minibatch-s…

音声認識メモ(Kaldi)その19(Toolkitスクリプト(3))

前回の「Kaldi for Dummies tutorial」では、トライフォンの初期学習までであった。 TRI1 - simple triphone training (first triphone pass). この後の処理を確認してみる。「egs/rm/s5/RESULTS」には各実装(experiments)でのWERが出力されており、いくつ…