zoukankan      html  css  js  c++  java
  • 语音算法阅读之SpecAugment

    论文:
      SpecAugment: A Simple Data Augmentation Methodfor Automatic Speech Recognition
    思想:
      SpecAugment是一种log梅尔声谱层面上的数据增强方法,可以将模型训练的过拟合问题转化为欠拟合问题,以便通过大网络和长时训练策略来缓解欠拟合问题,提升语音识别效果
    模型:
    • 输入特征:log梅尔声谱
    • 声谱增强:将log梅尔声谱的时域和频域看作二维图像,时间片长度为τ,频域长度ν
    1. 时间扭曲,穿过图像中心的水平直线上,(W,τ-W)范围内的随机点,向左或向右平移w距离,0=<w<=W
    2. 时间掩蔽,沿时间轴方向的[t0,t0+t)范围内的连续时间步进行掩蔽,其中0=<t0<τ,t服从[0,T]均匀分布
    3. 频率掩蔽,沿频域轴方向的[f0,f0+f)范围内的连续频率通道进行掩蔽,其中0=<f0<ν,f服从[0,F]均匀分布
    • 网络框架采用LAS结构[1],encoder部分采用2conv+max_pooling(stride=2)+d层的Bi-LSTM(cell=w)+attention结构;decoder部分采用2LSTM(cell=w)
    • 语言模型融合[2]:embeddng (1024 for LibriSpeech/256 for Switchboard)+2LSTM(cell=300)
    • 解码:beam search,beam width=8
    训练策略:
    • 数据集:LibriSpeech 960h/Switchboard 300h
    • 输入特征:80维fbanks,batch size=512
    • 学习率策略:学习率策略是一种能够提升识别效果的重要因子,分为快速启动-稳定-指数衰减(Sr,Si,Sf)
    1. 快速启动阶段(0~r),学习率lr从零开始增长到0.001
    2. 稳定阶段(Sr~Si)学习率保持稳定
    3. 指数衰减阶段(St~Sf): 学习率指数衰减到学习率最大值的1/100=0.00001
    • 权重噪声策略:标准差为0.075的高斯噪声,权重噪声有助于提升模型鲁棒性,开始时间Snoise

       其中1、2、3分别为模型训练的迭代次数三只模式,由短到长,Sr为学习率快速上升阶段的step,Snoise为应用权重噪声的开始的step,Si为学习率指数衰减开始的step,Sf为指数衰减终止的step

    • 均匀标签平滑:不确定度为0.1,即正确的类别标签置信度降低0.9,其他类别标签置信度相应提升0.1,但是当学习率较小时,标签平滑容易导致模型训练不稳定,所以最好在学习率衰减之前应用权重噪声较好
    实验效果:
      实验中的增强参数如下
    • log梅尔声谱增强、学习率/权重噪声策略、增加LSTM深度和结点数均有助于提升识别效果;其中LAS-d-w,d为LSTM层数,w为结点数
    • 不采用LM情况下,LAS-specaugment即可得到state-of-the-art效果,采用LM时进一步提升了state-of-the-art效果
    • 声谱增强的三种策略中,时间扭曲策略相比时间和频率掩蔽策略对结果的提升最小,并且计算代价最大
    结论:
    • 时间扭曲有助于提升识别效果,但是相对时间和频率掩蔽策略重要性最低,且计算代价最高
    • log梅尔声谱增强能够将模型训练的过拟合问题转化为欠拟合问题,从而可以通过大模型和长时训练予以缓解
    • 标签平滑策略容易使模型训练不稳定,尤其当学习率较小时更为严重,所以标签平滑策略最好应用在学习率快速上升和hold阶段
      env:
    • tensorflow/pytorch
    • python3
    • numpy
    • librosa
    • matplotlib
      安装:pip3 install SpecAugment
      增强效果:
    原始声谱
    时域和频域掩蔽
    Reference:
  • 相关阅读:
    STL vector的介绍(1)
    linux入门基础——linux软件管理RPM
    Use Local Or Global Index?
    AIX下RAC搭建 Oracle10G(五)安装oracle、建立监听
    HLJU 1220: AC100天 (枚举)
    【JAVA】java中Future、FutureTask的使用
    多线程之线程初始
    微信公众平台开发(85) 获取用户地理位置
    微信公众平台开发(86) 获取用户基本信息
    微信公众平台开发(87) 获取关注者列表
  • 原文地址:https://www.cnblogs.com/zy230530/p/13682080.html
Copyright © 2011-2022 走看看