Flow matching을 이용한 speech enhancement의 모델구조는 어떻게 생겨먹었을까? 관찰을 한 결과 enhancement 모듈만 있으면 된다.
Noisy speech y 가 있고 이것의 clean speech s 를 알아맞추는 것이 enhancement의 목적이다. flow matching에서는 y 가 주어졌을 때 x_0 를 noisy speech에 가우시안 노이즈가 낀 분포 \mathcal{N}(0, \sigma \mathbf{I}) 이라 두고 x_1 를 y의 clean speech distribution으로 두어서 이 두 distribution을 잇는 ODE를 만드는 것이 목적이다. 그 ODE는 아래와 같다.
\frac{d\phi_t(x_0|y)}{dt} = v_t(\phi_t(x_0)|y)|y)위의 ode의 ground truth 를 알 수 없어서 conditional ode와 이것을 만족하는 solution들을 구해본다.
\frac{d\phi_t(x_0|x_1,y)}{dt} = v_t(\phi_t(x_0|x_1,y)|x_1,y)여러 계산을 거쳐서 conditional target vector field는 아래와 같은 모습을 갖게된다.
\mu_t(x_1,y) = (1-t)y + tx_1, \sigma_t = \sigma(1-t) \text{ 일 때} v_t(x_t |x_1,y) = -\frac{1}{1-t}x_t + \frac{1}{1-t} x_1여기서 주목할 점은 x_t 야 물론 y 에 의존하지만 x_1이 y에 많이 의존한다는 점이다. 그래서 x_1(y) 이라 두어도 된다.
v_t(x_t |x_1,y) = -\frac{1}{1-t}x_t + \frac{1}{1-t} x_1(y)Flow matching에는 위와 같은 vector field를 regression하기 때문에 아래와 같은 network를 구성하는 것이 알맞은 생각일 테다.
v_\theta (x_t,t,y) = -\frac{1}{1-t}x_t + \frac{1}{1-t} x_1(y ; \theta)여기서 얻을 수 있는것이 결국 vector field를 학습하기 위하여 입력변수가 y 뿐인 network x_1(y ; \theta) 를 학습하는 것이 flow matching의 전부일 수 있다는 생각이다. x_1(y ; \theta) 는 그저 enhancement 모듈이면 될것 같다. x_1 (y; \theta) 의 y 자리에 y+ \sigma \epsilon , \epsilon \sim \mathcal{N}(0,\mathbf{I})을 집어넣든가 augmentation을 통해서 다른것을 집어넣어도 되겠다. 그리고 흔히 하는 방법으로 x_1 (y;\theta) = \alpha y + (1-\alpha) s(y;\theta) 형태로 enhancement 모듈을 학습하고 이 모듈 s 의 결과와 y를 interpolation하는 방법도 있다. 지금 생각나는 것은 이정도이고, LARF논문을 적용해도 될것 같다.
이런식으로 했을때 장점은 모델의 parameter를 줄이고 학습속도도 증가시킬 수 있다.