sooftware / kospeech

Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition leveraging PyTorch and Hydra.
https://sooftware.github.io/kospeech/
Apache License 2.0
603 stars 191 forks source link

학습결과 성능이 예상보다 잘 안나옵니다 #25

Closed mnbv7581 closed 4 years ago

mnbv7581 commented 4 years ago

설정 옵션은 batch_size, num_epochs 이 두 옵션을 제외하고 세팅 되어있는 값 그대로 사용하였으며 학습한 데이터셋은 aihub에서 제공하는 KsponSpeech 데이터셋을 모두 사용하였습니다. 데이터셋은 link에서의 가이드 대로 전처리 후 학습하였습니다.

여기서 성능을 더 내기위해 제가 할 수있는게 있을까요?

학습결과 loss : 0.14854020402704088 cer : 0.23955241871794233

sooftware commented 4 years ago

혹시 정확한 옵션등을 알 수 있을까요??
현재 저희 모델은 1에폭만 돌려도 80% 정도의 성능이 나오고 있습니다.

sooftware commented 4 years ago

현재 디폴트 세팅이 최고 성능이 나온 세팅은 아니여서 옵션등을 말해주시면 봐보겠습니다.

mnbv7581 commented 4 years ago

설정한 옵션입니다.

python main.py --batch_size 16 --num_workers 4 --num_epochs 30 --use_bidirectional --input_reverse --spec_augment --noise_augment --use_cuda --hidden_dim 256 --dropout 0.3 --num_heads 8 --label_smoothing 0.1 --listener_layer_size 3 --speller_layer_size 2 --rnn_type gru --high_plateau_lr 3e-04 --teacher_forcing_ratio 1.0 --valid_ratio 0.003 --sample_rate 160000 --window_size 20 --stride 10 --n_mels 80 --normalize --del_silence --feature_extract_by librosa --time_mask_para 70 --freq_mask_para 12 --time_mask_num 2 --freq_mask_num 2 --save_result_every 1000 --checkpoint_every 10000 --print_every 10 --init_lr 1e-15 --init_uniform --mode train --dataset_path C:\syim\DB\KsponSpeech/ --data_list_path C:/syim/Work/KoSpeech-master/data/data_list/filter_train_list.csv --max_grad_norm 400 --rampup_period 1000 --max_len 71 --decay_threshold 0.03 --exp_decay_period 160000 --low_plateau_lr 1e-05 --noiseset_size 1000 --noise_level 0.7 --attn_mechanism loc --teacher_forcing_step 0.05 --min_teacher_forcing_ratio 0.7 --extractor vgg --activation hardtanh -use_cuda

triplet02 commented 4 years ago

Team Kai.Lib의 배세영입니다. 저희도 옵션 값을 바꿔가며 실험 중이기 때문에, 코드 상의 Default 값이 정답이 아닐 수도 있습니다! 향후 실험하실 때 참고해 주세요. :) 설정하신 옵션 값을 보면 GRU type의 Listener/Speller Layer가 3/2로 되어 있는데 저희가 이 옵션으로 실험하였을 때 결과가 썩 좋지는 않았습니다. 구조를 조금 바꿔 보시는 것도 방법이겠네요. LSTM type으로 실험하였을 때 결과가 대부분 좋았습니다. 또 ramp up period, high/low plateau 등이 설정되어 있는 것으로 봐서 SpecAugment 논문에서 소개된 4단계 학습률 스케줄링을 이용하시는 것 같네요. 저희가 실험할 당시 이렇게 자동화된 방식으로 학습률을 조정하면 결과가 좋지는 않았습니다. 그래서 저희는 매 epoch마다 evaluate한 결과를 보고 그때그때 학습률을 조정해 주었습니다. 소소하게는 batch size만 바꿔 주는 것만으로도 성능에 어느 정도 영향이 있었기 떄문에, 콕 집어서 방법을 말씀드리기가 곤란한 점을 이해해 주셨으면 좋겠습니다. 계속해서 다양한 방식으로 실험 해 보시고, 좋은 결과가 있다면 저희 팀에게도 알려 주세요!

mnbv7581 commented 4 years ago

설명 감사합니다. 옵션 수정 후 학습 진행해 보겠습니다.