<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
      此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
      人工智能開發(fā)者 正文
      發(fā)私信給AI研習(xí)社
      發(fā)送

      0

      詳解 DNN 在聲學(xué)應(yīng)用中的模型訓(xùn)練

      本文作者: AI研習(xí)社 2017-07-01 15:58
      導(dǎo)語(yǔ):分析 DNN 訓(xùn)練聲學(xué)模型時(shí)神經(jīng)網(wǎng)絡(luò)的輸入與輸出。

      雷鋒網(wǎng)按:本文作者張慶恒,原載于作者個(gè)人博客,雷鋒網(wǎng)經(jīng)授權(quán)發(fā)布。

      本文通過(guò)簡(jiǎn)單kaldi源碼,分析DNN訓(xùn)練聲學(xué)模型時(shí)神經(jīng)網(wǎng)絡(luò)的輸入與輸出。在進(jìn)行DNN訓(xùn)練之前需要用到之前GMM-HMM訓(xùn)練的模型,以訓(xùn)練好的mono模型為例,對(duì)模型進(jìn)行維特比alignement(對(duì)齊),該部分主要完成了每個(gè)語(yǔ)音文件的幀到 transition-id 的映射

      不妨查看對(duì)齊后的結(jié)果:

      $ copy-int-vector "ark:gunzip -c ali.1.gz|" ark,t:- | head -n 1

      speaker001_00003 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 15 15 15 18 890 889 889 889 889 889 889 892 894 893 893 893 86 88 87 90 89 89 89 89 89 89 89 89 89 89 89 89 89 89 194 193 196 195 195 198 197 386 385 385 385 385 385 385 385 385 388 387 387 390 902 901 901 904 903 906 905 905 905 905 905 905 905 905 905 905 905 914 913 913 916 918 917 917 917 917 917 917 752 751 751 751 751 751 754 753 753 753 753 753 753 753 753 756 755 755 926 925 928 927 927 927 927 927 927 927 930 929 929 929 929 929 929 929 929 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 18

      對(duì)于一個(gè)訓(xùn)練語(yǔ)音文件speaker001_00003,后面的每一個(gè)數(shù)字標(biāo)示一個(gè)transition-id,同時(shí)每個(gè)數(shù)字對(duì)應(yīng)一個(gè)特征向量,對(duì)應(yīng)的向量可以 copy-matrix 查看,可參考特征提取相關(guān)內(nèi)容,鏈接如下:

      http://t.cn/RX2n4Dx

      同樣查看 transition-id:

      $ show-transitions phones.txt final.mdl


      Transition-state 1: phone = sil hmm-state = 0 pdf = 0

       Transition-id = 1 p = 0.966816 [self-loop]

       Transition-id = 2 p = 0.01 [0 -> 1]

       Transition-id = 3 p = 0.01 [0 -> 2]

       Transition-id = 4 p = 0.013189 [0 -> 3]

      Transition-state 2: phone = sil hmm-state = 1 pdf = 1

       Transition-id = 5 p = 0.970016 [self-loop]

       Transition-id = 6 p = 0.01 [1 -> 2]

       Transition-id = 7 p = 0.01 [1 -> 3]

       Transition-id = 8 p = 0.01 [1 -> 4]

      Transition-state 3: phone = sil hmm-state = 2 pdf = 2

       Transition-id = 9 p = 0.01 [2 -> 1]

       Transition-id = 10 p = 0.968144 [self-loop]

       Transition-id = 11 p = 0.01 [2 -> 3]

       Transition-id = 12 p = 0.0118632 [2 -> 4]

      Transition-state 4: phone = sil hmm-state = 3 pdf = 3

       Transition-id = 13 p = 0.01 [3 -> 1]

       Transition-id = 14 p = 0.01 [3 -> 2]

       Transition-id = 15 p = 0.932347 [self-loop]

       Transition-id = 16 p = 0.0476583 [3 -> 4]

      Transition-state 5: phone = sil hmm-state = 4 pdf = 4

       Transition-id = 17 p = 0.923332 [self-loop]

       Transition-id = 18 p = 0.0766682 [4 -> 5]

      Transition-state 6: phone = a1 hmm-state = 0 pdf = 5

       Transition-id = 19 p = 0.889764 [self-loop]

       Transition-id = 20 p = 0.110236 [0 -> 1]

      ...

      唯一的Transition-state對(duì)應(yīng)唯一的pdf,其下又包括多個(gè) Transition-id,

      接下來(lái)看神經(jīng)網(wǎng)絡(luò)的輸入與輸出到底是什么。這里以steps/nnet為例。追溯腳本到steps/nnet/train.sh,找到相關(guān)的命令:

      ...

       labels_tr="ark:ali-to-pdf $alidir/final.mdl \"ark:gunzip -c $alidir/ali.*.gz |\" ark:- | ali-to-post ark:- ark:- |"


      ...

      feats_tr="ark:copy-feats scp:$dir/train.scp ark:- |"

      ...

      # input-dim,

        get_dim_from=$feature_transform

        num_fea=$(feat-to-dim "$feats_tr nnet-forward \"$get_dim_from\" ark:- ark:- |" -)

      # output-dim,

        num_tgt=$(hmm-info --print-args=false $alidir/final.mdl | grep pdfs | awk '{ print $NF }')

      ...


      dnn)

       utils/nnet/make_nnet_proto.py $proto_opts \

         ${bn_dim:+ --bottleneck-dim=$bn_dim} \

         $num_fea $num_tgt $hid_layers $hid_dim >$nnet_proto

        ;;

      從上面關(guān)鍵的幾個(gè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練的準(zhǔn)備階段可以看出,神經(jīng)網(wǎng)絡(luò)的輸入很清楚是變換后的特征向量(feats_tr),輸出是labels_tr,下面單獨(dú)運(yùn)行上面的命令,來(lái)查看神經(jīng)網(wǎng)絡(luò)的輸出(target)是什么。labels_tr的生成分兩步:

      • ali-to-pdf: 將上面對(duì)齊文件中的transition-id轉(zhuǎn)化為對(duì)應(yīng)的pdf-id;

      • ali-to-post: 根據(jù)得到的pdf-id,生成[pdf, post]對(duì),即pdf與其對(duì)應(yīng)的后驗(yàn)概率。

      $ ali-to-pdf final.mdl "ark:gunzip -c ali.1.gz|" ark,t:- | head -n 1

       speaker001_00003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 4 440 440 440 440 440 440 440 441 442 442 442 442 38 39 39 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 92 92 93 93 93 94 94 188 188 188 188 188 188 188 188 188 189 189 189 190 446 446 446 447 447 448 448 448 448 448 448 448 448 448 448 448 448 452 452 452 453 454 454 454 454 454 454 454 371 371 371 371 371 371 372 372 372 372 372 372 372 372 372 373 373 373 458 458 459 459 459 459 459 459 459 459 460 460 460 460 460 460 460 460 460 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4

      觀察前兩幀,結(jié)合文章一開始,transition-id 分別為4和1,而對(duì)應(yīng)的pdf均為0。對(duì)該結(jié)果再進(jìn)行ali-to-post:

      $ ali-to-pdf final.mdl "ark:gunzip -c ali.1.gz|" ark,t:- | head -n 1 | ali-to-post ark,t:- ark,t:-

       speaker001_00003 [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] ...... [ 3 1 ] [ 3 1 ] [ 3 1 ] [ 3 1 ] [ 4 1 ] [ 440 1 ] [ 440 1 ] [ 440 1 ] [ 440 1 ] [ 440 1 ] [ 440 1 ] [ 440 1 ] [ 441 1 ] [ 442 1 ] [ 442 1 ] [ 442 1 ] [ 442 1 ] [ 38 1 ] [ 39 1 ] [ 39 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 40 1 ] [ 92 1 ] [ 92 1 ]...... [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 0 1 ] [ 3 1 ] [ 4 1 ]

      得到pdf-id以及相應(yīng)的后驗(yàn)概率,這里均為1。

      由此得到了訓(xùn)練數(shù)據(jù)以及對(duì)應(yīng)的target label。進(jìn)一步來(lái)看神經(jīng)網(wǎng)絡(luò)的輸入與輸出的維度,網(wǎng)絡(luò)結(jié)構(gòu)被utils/nnet/make_nnet_proto.py寫到nnet_proto文件中,該P(yáng)ython腳本的兩個(gè)重要參數(shù) num_fea和num_tgt分別為神經(jīng)網(wǎng)絡(luò)的輸入與輸出的維度。其中num_fea是由feat-to-dim獲得:

      $ feat-to-dim scp:../tri4b_dnn/train.scp ark,t:- | grep speaker001_00003 

      speaker001_00003 40

      這里為fbank特征,維度為40,而在真正作為神經(jīng)網(wǎng)絡(luò)輸入時(shí),進(jìn)一步對(duì)特征向量進(jìn)行的變換,從源碼steps/nnet/train.sh也可以看到splice參數(shù)(默認(rèn)值為5),指定了對(duì)特征向量的變換:取對(duì)應(yīng)幀前后5幀,拼成一個(gè)11幀組成的大向量(維度為440)。該部分特征變換的拓?fù)湟脖槐4娴絝inal.feature_transform:

      $ more final.feature_transform 

      <Nnet> 

      <Splice> 440 40 

      [ -5 -4 -3 -2 -1 0 1 2 3 4 5 ]

      <!EndOfComponent> 

      ...

      后面在進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)會(huì)使用該拓?fù)鋵?duì)特征向量進(jìn)行變換,最終的神經(jīng)網(wǎng)絡(luò)輸入維度為440。

      而num_tgt的維度則是通過(guò)hmm-info獲得:

      $ hmm-info final.mdl

      number of phones 218

      number of pdfs 1026

      number of transition-ids 2834

      number of transition-states 1413


      $ hmm-info final.mdl |  grep pdfs | awk '{ print $NF }'

      1026

      因此,看到神經(jīng)網(wǎng)絡(luò)的輸出維度為1026,這時(shí)查看nnet_proto:

      <AffineTransform> <InputDim> 440 <OutputDim> 1024 <BiasMean> -2.000000 <BiasRange> 4.000000 <ParamStddev> 0.037344 <MaxNorm> 0.000000

      <Sigmoid> <InputDim> 1024 <OutputDim> 1024

      <AffineTransform> <InputDim> 1024 <OutputDim> 1024 <BiasMean> -2.000000 <BiasRange> 4.000000 <ParamStddev> 0.109375 <MaxNorm> 0.000000

      <Sigmoid> <InputDim> 1024 <OutputDim> 1024

      <AffineTransform> <InputDim> 1024 <OutputDim> 1024 <BiasMean> -2.000000 <BiasRange> 4.000000 <ParamStddev> 0.109375 <MaxNorm> 0.000000

      <Sigmoid> <InputDim> 1024 <OutputDim> 1024

      <AffineTransform> <InputDim> 1024 <OutputDim> 1024 <BiasMean> -2.000000 <BiasRange> 4.000000 <ParamStddev> 0.109375 <MaxNorm> 0.000000

      <Sigmoid> <InputDim> 1024 <OutputDim> 1024

      <AffineTransform> <InputDim> 1024 <OutputDim> 1026 <BiasMean> 0.000000 <BiasRange> 0.000000 <ParamStddev> 0.109322 <LearnRateCoef> 1.000000 <BiasLearnRateCoef> 0.100000

      <Softmax> <InputDim> 1026 <OutputDim> 1026

      這里可以看到神經(jīng)網(wǎng)絡(luò)的輸入維度有40變?yōu)?40,輸出為pdf的個(gè)數(shù)(對(duì)應(yīng)HMM狀態(tài)的個(gè)數(shù))。

      如果繼續(xù)追查代碼,最后可以找到單次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練實(shí)現(xiàn),kaldi/src/nnetbin/nnet-train-frmshuff.cc:

      Perform one iteration (epoch) of Neural Network training with mini-batch Stochastic Gradient Descent. The training targets are usually pdf-posteriors, prepared by ali-to-post.

      繼續(xù)分析代碼,可以看到幾個(gè)關(guān)鍵步驟:

      • 解析訓(xùn)練參數(shù),配置網(wǎng)絡(luò)

      • 讀取特征向量和target label,輸入為Matrix< BaseFloat >類型,輸出為Posterior類型,即<pdf-id, posterior>對(duì)。

      // get feature / target pair,

      Matrix<BaseFloat> mat = feature_reader.Value();

      Posterior targets = targets_reader.Value(utt);

      • 隨機(jī)打亂訓(xùn)練數(shù)據(jù),作為神經(jīng)網(wǎng)絡(luò)輸入與期望輸出:

      const CuMatrixBase<BaseFloat>& nnet_in = feature_randomizer.Value();

      const Posterior& nnet_tgt = targets_randomizer.Value();

      const Vector<BaseFloat>& frm_weights = weights_randomizer.Value();

      • 前向傳播,計(jì)算估計(jì)值nnet_out

      // forward pass,

      nnet.Propagate(nnet_in, &nnet_out);

      • 計(jì)算cost,這里支持交叉熵和平方差和multitask。結(jié)果為obj_diff

      // evaluate objective function we've chosen,

      if (objective_function == "xent") {

       // gradients re-scaled by weights in Eval,

       xent.Eval(frm_weights, nnet_out, nnet_tgt, &obj_diff);

      } else if (objective_function == "mse") {

       // gradients re-scaled by weights in Eval,

       mse.Eval(frm_weights, nnet_out, nnet_tgt, &obj_diff);

      }

      ...

      • 根據(jù)誤差反向傳播,更新參數(shù)

      if (!crossvalidate) {

       // back-propagate, and do the update,

       nnet.Backpropagate(obj_diff, NULL);

      }

      • 完成一次參數(shù)更新,繼續(xù)迭代。

      total_frames += nnet_in.NumRows(),

      最終由調(diào)用該部分代碼的/steps/nnet/train_scheduler.sh指定最大迭代次數(shù)max_iters或accept訓(xùn)練的模型,

       accepting: the loss was better, or we had fixed learn-rate, or we had fixed epoch-number

      小結(jié)

      在進(jìn)行DNN訓(xùn)練前:

      • 訓(xùn)練GMM-HMM模型,聚類,并得到音素(或狀態(tài))的后驗(yàn)。

      • 對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行對(duì)齊,這里得到語(yǔ)音文件按時(shí)間順序transition-id到幀特征向量的對(duì)應(yīng)。

      • 生成< pdf-id, posterior > 對(duì)作為訓(xùn)練目標(biāo)target

      • 語(yǔ)音文件特征向量進(jìn)行變換,這里取前后5幀,拼成一個(gè)11幀維度更高的特征向量,作為神經(jīng)網(wǎng)絡(luò)輸入。

      • 神經(jīng)網(wǎng)絡(luò)輸入變換后的特征向量,通過(guò)前向傳播,經(jīng)Softmax層,得到該幀特征對(duì)應(yīng)每個(gè)pdf的概率預(yù)測(cè)值。

      • 對(duì)每個(gè)pdf根據(jù)< pdf-id, posterior >查到目標(biāo)后驗(yàn)概率,與預(yù)測(cè)值求誤差

      • 反向傳播更新參數(shù)。

      • 不斷迭代,直到達(dá)到最大訓(xùn)練次數(shù),或模型經(jīng)過(guò)cross validation得到較低的誤差(loss)停止訓(xùn)練。

      解碼時(shí),用訓(xùn)練好的DNN-HMM模型,輸入幀的特征向量,得到該幀為每個(gè)狀態(tài)(對(duì)應(yīng)pdf)的概率。

      詳解 DNN 在聲學(xué)應(yīng)用中的模型訓(xùn)練

      其中 x_t 對(duì)應(yīng)t時(shí)刻的觀測(cè)值(輸入),q_t=s_i 即表示t時(shí)刻的狀態(tài)為 s_i。p(x_t) 為該觀測(cè)值出現(xiàn)概率,對(duì)結(jié)果影響不大。p(s_i) 為 s_i 出現(xiàn)的先驗(yàn)概率,可以從語(yǔ)料庫(kù)中統(tǒng)計(jì)得到。最終得到了與GMM相同的目的:HMM狀態(tài)到觀測(cè)幀特征向量的輸出概率。就有了下面的示意圖:

      詳解 DNN 在聲學(xué)應(yīng)用中的模型訓(xùn)練

      雷鋒網(wǎng)相關(guān)閱讀:

      手把手教你如何用 TensorFlow 實(shí)現(xiàn)基于 DNN 的文本分類

      深度神經(jīng)網(wǎng)絡(luò)發(fā)展歷程全回顧:如何加速DNN運(yùn)算?

      雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

      詳解 DNN 在聲學(xué)應(yīng)用中的模型訓(xùn)練

      分享:
      相關(guān)文章

      編輯

      聚焦數(shù)據(jù)科學(xué),連接 AI 開發(fā)者。更多精彩內(nèi)容,請(qǐng)?jiān)L問(wèn):yanxishe.com
      當(dāng)月熱門文章
      最新文章
      請(qǐng)?zhí)顚懮暾?qǐng)人資料
      姓名
      電話
      郵箱
      微信號(hào)
      作品鏈接
      個(gè)人簡(jiǎn)介
      為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
      您的郵箱還未驗(yàn)證,完成可獲20積分喲!
      請(qǐng)驗(yàn)證您的郵箱
      立即驗(yàn)證
      完善賬號(hào)信息
      您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
      立即設(shè)置 以后再說(shuō)
      主站蜘蛛池模板: 精品久久国产| 久久狠狠高潮亚洲精品暴力打| 亚洲精品一区二区三区大桥未久| 石嘴山市| 国产毛片A啊久久久久| 一本本月无码-| 亚洲日韩第三页| 免费无码又爽又刺激动态图| 国产成人AV久久久| 国产精品丝袜一区二区三区| 亚洲一区二区三区av天堂| 国模少妇无码一区二区三区| 国产精品视频一区二区猎奇| 免费区欧美一级猛片| 国产精品第12页| 揉着我的奶从后面进去视频| 怡红院一区二区三区在线| 久久人妻精品白浆国产| 午夜男女爽爽影院免费视频下载| 日韩在线视频线观看一区| 无码福利一区二区三区| A片丝袜| 2022色婷婷综合久久久| 香蕉人妻av久久久久天天| 成人福利免费在线观看| 亚洲第一综合天堂另类专| 日本一卡2卡3卡四卡精品网站 | 午夜无码区在线观看| 国内少妇人妻偷人精品视频| 精品国产中文字幕在线| 日本免费视频| 成人国产精品中文字幕| 国产精品天堂蜜av在线播放| 国精产品一区一区三区有限在线| 美女视频黄频大全免费| 91在线视频福利| 99久久久无码国产精品免费 | 久久精品国产一区二区三| 又黄又硬又湿又刺激视频免费| 国产高清在线精品一区| 一区二区三区精品偷拍|