内容简介:在语音转文字中输入是连续的语音信号输出是不等的文字序列。通常的解决方案是 seq2seq ,训练样本是语音序列和对应的文本序列,但是哪一段语音对应哪一段文字仍然是不知道的,如果需要训练数据把每个字对应到每段语音将要付出很高的代价。在翻译和 OCR 等场景也存在这样的问题。CTC(Connectionist Temporal Classificatio) 就是用来解决这个问题的。$$ S $$ : 训练样本集合$$ X $$ : 输入序列集合,假设其维度为 m
CTC
在语音转文字中输入是连续的语音信号输出是不等的文字序列。通常的解决方案是 seq2seq ,训练样本是语音序列和对应的文本序列,但是哪一段语音对应哪一段文字仍然是不知道的,如果需要训练数据把每个字对应到每段语音将要付出很高的代价。在翻译和 OCR 等场景也存在这样的问题。CTC(Connectionist Temporal Classificatio) 就是用来解决这个问题的。
问题描述
$$ S $$ : 训练样本集合
$$ X $$ : 输入序列集合,假设其维度为 m
$$ Z $$ : 输出序列集合,
$$ L $$: 输出序列的所有元素的集合,在语音识别中就是词汇表,在翻译中就是目标语言的词汇表
$$ \acute{L}$$: 在集合 $$ L $$ 中添加了空格之后的集合
$$ED(p,q)$$: 序列 $$p$$ 和 $$ q $$ 的编辑距离
有了上面符号,我们可以形式化的描述序列到序列的问题。
有输入序列$$\bold x=(x_1, x_2, …x_T)$$ 我们需要构建模型 $$h$$ 把输入序列映射到输出序列 $$\bold z =(z_1,z_2,…, z_U)$$ 这里 $$U\leq T$$ 这里模型 $$h$$ 被叫做 temporal classifier 。
模型评价指标
模型有很多个如何选择呢,需要定义一个模型的评价标准,在给定测试集 $$ \acute{S} $$的条件下标准化的编辑距离就是我们的评价指标,这个指标叫做 label error rate 简称 LER 公式如下:
LER(h, \acute{S}) = \frac{1}{Z}\sum_{(x,z)\in \acute{S}}(ED(h(x),z))
就是比较模型预测结果和真实结果之间的编辑距离的平均值
构造模型
上面的描述还没有解决输入序列和输出序列不对应的问题,如果我们使用 HMM 这样的模型需要把输入序列进行切分然后和输出序列做映射。CTC 主要的是得到一个端到端的方式,巧妙之处就是在训练的输出序列中加入空格或者把输出序列中的元素进行重复得到和输入序列登长的输出,这个输出我们叫做 $$ \pi $$ 它的每个时刻的元素都是从 $$ \acute{L} $$ 中获得的。
这样我们就可以利用 RNN 的输出来计算 概率 $$P (\pi | x)$$ 如果我们假设每个时刻的输出是独立的则有:
p(\pi|x) = \prod_{t}^{T} (y^t_{\pi_{t}})
其中
\pi=\{ k_{1}, k_{2},...,k_{T}\}
这里的 $$ y^t_{\pi_t} $$ 表示的是在 t 时刻的输出是 $$ k_t $$ 的概率,如果是用 RNN 作为 decoder 的部分,那么这个概率就可以通过 对 RNN 在 t 时刻的输出做 Softmax 得到。
在引入 $$ \pi $$ 的时候也带来了另外一个问题,因为这个和输入一一对应的输出并不是我们真的想要的,但是这个输出和真实的输出是有关系的,CTC 的做法是删除 $$ \pi $$ 中的空格和对连续重复的元素做去重,然后得到最终我们希望的序列 $$l $$ 不难看出 $$\pi$$ 和 $$l $$ 是多对一的关系,比如 $$ l $$ 是 ABC 输出的长度是 5 对应的 $$\pi$$ 可以是 _A_BC 或者A_B_C ,还有很多其他组合这里下划线表示空格。我们定义一个映射
\mathcal{B} = L^{'T} \longmapsto T^{\leq T}
所以我们真正想要计算的序列 $$ l $$ 的概率是 :
P(l|x) = \sum_{\pi \in \mathcal{B}^-1(l)} p(\pi|x)
用中文描述这个公式就是对所有的处理(去掉空格和对连续且重复的元素去重)之后的结果是 $$l$$ 的 $$ \pi $$ 的概率求和
这个概率就是单个样本在已知 输入 $$x $$ 条件下输出序列的概率 , 对训练样本中的所有样本的这个条件概率求和技术训练数据上的极大似然函数。我们通常极小负对数的极小来实现极大似然的学习策略。
那么模型 $$ h $$ 可以描述如下,当然这是对单个样本的,
$$ h = arg\ max \ p(l|x)$$
如何计算这个似然函数,以及对似然函数求导成了现在的主要问题。
简单的策略是选择概率最大的 $$ \pi $$ 对应的$$ l $$ 作为最终的结果,但是这明显不太合理。他们是多对一的关系。
CTC 的做法是对 $$ l $$ 做预处理,序列的前后添加空格,在所有字符之间添加一个空格得到 $$ \acute{l} $$ 然后把所有的 $$ \pi $$ 映射到 $$ \acute{l}$$ 。但是这个计算量是很大的,计算的过程也很类似 HMM 中已知模型参数求给定观测序列的概率一样。
解决计算量大的方法是动态规划,和 HMM 的前向或者后向计算的方法类似,我们需要引入一个和前向概率类似的中间变量。
公式里的符号和我使用的一致。有点儿复杂就直接截图了。
我们知道动态规划的实现是有一个递推公式,有了这个中间变量我们就可以递推的计算 $$ \alpha_t(s)$$ ,然后利用这个中间变量计算我们最后需要的概率。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
企业IT架构转型之道:阿里巴巴中台战略思想与架构实战
钟华 / 机械工业出版社 / 2017-4-1 / 79
在当今整个中国社会都处于互联网转型的浪潮中,不管是政府职能单位、业务规模庞大的央企,还是面临最激烈竞争的零售行业都处于一个重要的转折点,这个转折对企业业务模式带来了冲击,当然也给企业的信息中心部门带来了挑战:如何构建IT系统架构更好地满足互联网时代下企业业务发展的需要。阿里巴巴的共享服务理念以及企业级互联网架构建设的思路,给这些企业带来了不少新的思路,这也是我最终决定写这本书的最主要原因。本书从阿......一起来看看 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》 这本书的介绍吧!