在序列数据处理中,我们常遇到数据的局部对齐问题。具体而言,这指的是数据可以在分块层面进行对齐,但由于各分块内部数据长度的不一致,导致分块内部存在对齐不准确的情况。

以简单的语音转换为例,假设我们有两个不同人说出同一句话的录音,例如“你好”。尽管这两个录音在内容上是一致的,但由于说话速度、语调等因素的不同,它们在时间序列上可能并不完全对齐。

embed (34).svg

这种情况下,我们的目标是通过某种方式将一个人的语音特征转换为另一个人的,同时保持原有的语义和语调信息。这正是序列数据处理中典型的局部对齐问题的体现,其中数据的整体结构是相似的,但在细节上存在差异。

在处理这类不完全对齐的序列问题时,损失函数的设计成为一大挑战。不能简单使用严格的一对一损失函数,而是需要一种可以考虑到对齐知识的方法。一般情况下,我们采用路径搜索方法来计算损失。

考虑一个简化的最优滤波系统示例。这样的系统的核心目标是使输出信号或序列尽可能满足特定标准,例如最小化与目标信号之间的误差。在语音转换的应用中,这可能涉及到识别和调整语音的特定频率成分,以便更接近目标发音。最优滤波理论可以用以下公式来简化描述:

$$ \arg\max_w \quad \text{MSE}(x*w-y) $$

这里,$x$表示输入信号(例如原始发音者的语音信号),$w$表示滤波器参数,$x*w$表示卷积操作(相关于语音信号的处理),$y$则是目标信号(即目标发音者的语音信号)。因此,公式的目标是通过滤波使$x$的滤波输出与$y$之间的误差最小化,以达到语音转换的目的。最优滤波设计的核心在于通过数据学习滤波器的参数,可以被视为一维线性卷积神经网络的应用。

Dynamic Time Warping

在传统的序列处理中,一个用于对齐的算法是动态时间规整(DTW)。它的直观感受如下图右侧所示,对比于左侧的本身已经数据对齐的可以一对一的Loss计算。

Euclidean_vs_DTW.png

Dynamic Time Warping的本质就是通过动态规划的算法不断比对两个序列的不同位置的值,从而求解两个序列的最小误差,和对齐路径。

为了解决上面的最优滤波问题,我们可以引入DTW来辅助最优滤波的结果的比对。具体而言,我们考虑以下两种优化形式: 将滤波后的信号 $x \ast w$ 通过 DTW 对齐到目标信号 $y$,优化问题表述为:

$$ \arg\max_w \quad \text{MSE}(DTW(x \ast w, y) - y) $$

将目标信号 $y$ 通过 DTW 对齐到滤波后的信号 $x \ast w$,优化问题表述为:

$$ \arg\max_w \quad \text{MSE}(DTW(y, x \ast w) - x \ast w) $$

这两个优化问题在本质上是不同的。第一个问题关注于如何调整滤波后的信号 $x∗w$ 以更好地匹配目标 $y$,而第二个问题则关注于如何调整目标信号 $y$ 以适应滤波后的状态。从优化和反向传播的角度来看,第二种形式相对简单,因为它避免了在 DTW 过程中处理复杂的梯度路由问题。

Dynamic Time Warping Algorithm

为了对齐长度为$N$的序列$A$和长度为$M$的序列$B$,我们需要构建一个$N \times M$的矩阵。在此矩阵中,每个元素$(i, j)$代表序列$A$中的第$i$个元素$A_i$与序列$B$中的第$j$个元素$B_j$之间的距离$d(A_i, B_j)$。这里的距离反映了两个元素之间的相似度:距离越小,相似度越高。通常情况下,我们采用欧式距离(即平方误差)来衡量这一距离,计算公式为$d(A_i,B_j)= (A_i-B_j)^2$。

在解决此对齐问题时,关键是在矩阵中寻找一条从左下角到右上角(或反之)的最短路径。此路径必须是单调递增的,意味着路径上的节点只能向下、向左或向左下移动。任何其他方向的移动都将违反序列的有序对齐。