LM만 Transfer Learning 하는 방법

166 views
Skip to first unread message

goorme

unread,
Apr 15, 2022, 12:29:12 AM4/15/22
to zeroth-help
안녕하세요 Zeroth를 이용하여 모델을 만드는 작업까지 완료하였고 Zeroth help를 통해서 많이 참고하여 익히고 있습니다.

제가 이번에 하려고 하는 것은 3000시간 모델 생성까지는 완료 하였고
LM 만 추가하여 Transfer Learning을 하려고 합니다.

models/3000> ll
합계 5386544
-rw-r--r--. 1 root root 4634716808  2월 25 02:31 G.carpa
-rw-r--r--. 1 root root   54006802  2월 25 01:50 G.fst
-rw-r--r--. 1 root root  742873057  3월 14 09:10 HCLG.fst
drwxr-xr-x. 2 root root        139  4월  6 13:21 conf
-rw-r--r--. 1 root root      11536  3월  2 01:04 final.config
-rw-r--r--. 1 root root   74887819  3월 14 09:10 final.mdl
-rw-r--r--. 1 root root          1  3월 14 09:10 frame_subsampling_factor
drwxr-xr-x. 2 root root        153  4월  6 15:41 ivector_extractor
-rw-r--r--. 1 root root       1766  3월 14 09:10 phones.txt
drwxr-xr-x. 3 root root       4096  3월 15 12:26 testwav
-rw-r--r--. 1 root root       2076  3월 14 09:10 word_boundary.int
-rw-r--r--. 1 root root    9295121  3월 14 09:10 words.txt


lm 추가는 run_task.sh와 run_merge.sh를 이용하여 Zeroth lm에 추가하는 방식으로 lm 모델
mixed_~~~.lm.(tg, fg, tgsmall, tgmed).arpa.gz 까지 생성해놓은 상태입니다.

AM+LM Transfer Learning은 local/chain/multi_condition/run_tdnn_1n.sh 을 변경하고 kaldi의 run_tdnn_wsj_rm_1a.sh을 참조하여 수정하였습니다.

local/chain/multi_condition/run_tdnn_1n.sh 에서

primary_lr_factor=0.25
src_mdl=models/3000/final.mdl

stage 12에다가

$train_cmd $dir/log/generate_input_mdl.log \
    nnet3-am-copy --raw=true --edits="set-learning-rate-factor name=* learning-rate-factor=$primary_lr
      $src_mdl $dir/input.raw || exit 1;

steps/nnet3/chain/train.py 아래 파라미터 추가하여 Transfer Learning 진행
--trainer.input-model $dir/input.raw

위의 3000시간 모델 파일과 생성된 mixed_~~~.lm.(tg, fg, tgsmall, tgmed).arpa.gz 을 이용하여 LM만 Transfer Learning 하는 방법에 대해 문의드립니다.

제가 이해를 잘 못한 부분이나 부족한 부분,
위에서 LM+AM Transfer Learning 에서 수정해야할 부분이있다면 그 부분도 조언 부탁드립니다.

goorme

unread,
Apr 15, 2022, 3:52:02 AM4/15/22
to zeroth-help
제가 위에서 잘못 이해 한 부분인 것 같아서 추가적으로 작성해봅니다.

1. LM+AM Transfer Learning 이라고 작성한 부분은 DNN  AM만 Transfer Learning 한 것 인 것 ?

2. LM 을 Transfer Learning 하는 것은 online chain training 하는 것이 아니고 이전의 GMM AM 학습 및 학습데이터 alignment 하는 부분에서 생성된 LM  mixed_~~~.lm.(tg, fg, tgsmall, tgmed).arpa.gz 을 적용시킨후 재학습 하는 것?


3. run.sh 에서 기존 모델 생성 시 AM 관련은 그대로 일 것이므로 파악한 LM 관련 아래 단계만 실행 후 online chain training (local/chain/multi_condition/run_tdnn_1n.sh) 을 해주면 적용 되는 것일 지?


local/format_lms.sh --src-dir data/lang data/local/lm

utils/build_const_arpa_lm.sh \
      data/local/lm/zeroth.lm.tg.arpa.gz data/lang data/lang_test_tglarge

utils/build_const_arpa_lm.sh \
      data/local/lm/zeroth.lm.fg.arpa.gz data/lang data/lang_test_fglarge

utils/mkgraph.sh \
  data/lang_test_tgsmall exp/tri4b exp/tri4b/graph_tgsmall





2022년 4월 15일 금요일 오후 1시 29분 12초 UTC+9에 goorme님이 작성:
Reply all
Reply to author
Forward
0 new messages