Day06 - 端到端(end-to-end)语音辨识-CTC part 2

前一天提到说 CTC 提出了一个新的概念: 空白(blank),但在最开始的 CTC 设计中是没有使用空白的,只有移除连续的相同字母,但是这样会产生两个问题:

  1. 无法预测出连续两个相同字母的单字,例如:hello,在CTC中会删除连续相同
    的字母,因此最後预测的结果会是 helo
  2. 无法预测出一句完整的话,只能预测出一个单字。因为缺乏空白,CTC 无法表
    示出单字与单字之间停顿的部分,因此只能预测出一个单字,或者将一句话中
    的单字全部连接起来

在解码部份,理想上是以最大机率的序列 https://chart.googleapis.com/chart?cht=tx&chl=l 作为输入资料 x 的预测结果
https://chart.googleapis.com/chart?cht=tx&chl=l%5E%7B*%7D%3D%5Cargmax_%7Bl%7Dp(l%7Cx)

CTC 在实作上有两个解码方法:最佳路径解码(Best path decoding)前缀搜寻解
码(Prefix path decoding)
。最佳路径解码的作法是选取机率最大的路径所对应到的序列
作为预测结果,如下:
https://chart.googleapis.com/chart?cht=tx&chl=l%5E%7B*%7D%5Capprox%20F(%5Cpi%5E%7B*%7D)%2C%20where%5C%20%5Cpi%5E%7B*%7D%3D%5Cargmax_%7B%5Cpi%7Dp(%5Cpi%7Cx)

而机率最大的路径可以透过串联每一个时间点最大机率的输出标注来得到,但是在
某些情况下这样的作法不一定会得到最佳解,如下图 1,若是选择机率最大的路径
会得到空白,但是输出是 'A' 的所有可能路径的总和却比'空白'的机率来的高。
缀搜寻解码
是透过沿着有效路径计算累积机率最大的作为预测结果,如下图 2,图
中的 X 和 Y 表示扩展节点,e 表示停止在其父节点。扩展节点上方的数字表示路径从
头到这点的机率。e 结点上方的数字表示停在其父节点的机率。我们将根(Root)视为
第0层,第一层的 Y 不往下扩展是因为同层的 X 和 X 下层的 Y 的机率都比他高。从Alex
Graves 的实验得知,前缀搜寻解码在预测上会比使用最佳路径解码还准确,但是所花费的时间以及计算量也比最佳路径解码还多。

https://ithelp.ithome.com.tw/upload/images/20210918/20140944we5O9OZRkn.png
图1: 使用最佳路径解码的问题。若是选择机率最大的路径会得到'空白' (图的右上算
式),但是输出是'A'的所有可能路径的机率总和却比输出'空白'的机率高(图的右下算
式)

https://ithelp.ithome.com.tw/upload/images/20210918/20140944rkHgdnZVMF.png
图2: 前缀搜寻解码。X和Y表示扩展节点,e表示停止在其父节点。扩展节点上方的数字表示路径从头到这点的机率。e结点上方的数字表示停在其父节点的机率

在花了几天的时间说明介绍 end-to-end 相关的模型架构方法之後我们即将要进入实作的部分 ! 首先登场的会是语音特徵撷取与正规化的部分,那我们明天见 !


<<:  h1~h6标题基础用法

>>:  [DAY3] MVC与散落各处的逻辑

Day 14 实作 database migration

前言 昨天讲完了 manage.py 跟我们新加入的几个自订指令,今天我们还是离不开 manage....

Day 24 | Service

Service是应用程序元件之一,它用於背景处理与使用者介面无关的长时间任务,即便切换到其他应用程序...

Kotlin Android 第28天,从 0 到 ML - TensorFlow Lite -姿态估计 (Pose estimation)

前言: 常常看到特效电影幕後花絮,都有请演员在绿幕前在录动作身上都有点点,在萤幕上变成火材人,姿态估...

Vuex 的使用偏好

这是我个人的使用偏好,而且是以抽象资料型别的使用方式来理解 vuex 的使用方式。也许,我是说也许...

Day 3 - Playing with CSS

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...