Branch Log · Open in interactive viewer →

Section 6: Early Speaker Recognition Approaches

6.9 Factor Analysis

소수의 factor(요인)을 추출하여 변수들 사이의 공통점을 찾아내는 Factor Analysis(요인 분석) 방법을 알아보자.

예: 10개의 시험에서 받은 점수는 observed variable이다.

예: 지능이나 노력과 같은 부분은 unobserved variable(factor)이다.

더 나아가 factor는 common factor(공통요인) $f$ 와 unique factor(고유요인) $\epsilon$ 으로 나뉜다.

Factor Analysis


6.9.1 Common factor

Factor analysis에서 deviation(편차)은 다음과 같이 표현한다.

$$ x_i - {\mu}i = l_i $$}f_1 + \cdots + l_{ik}f_k + {\epsilon

평균값으로 ${\mu}_i$ 를 갖는다.

이때 $k < p$ 를 만족한다.(factors의 개수 < 변수의 개수)

평균은 0이며 유한한 분산값을 갖는다.


6.9.2 Loading matrix

$p$ 개 임의의 변수를 합쳐서 vector $x$ 로 두면, 식은 다음과 같이 표현할 수 있다. 이때 아래의 $L$ 행렬을 loading matrix라고 지칭한다.

$$ x - \mu = Lf + \epsilon $$

따라서 $N$ observations $x_i$ 가 있다고 하면, loading matrix를 이용해 다음과 같이 나타낼 수 있다.

$$ x_i - \mu = Lf_i + {\epsilon}_i $$

위 Factor analysis에서 사용하는 가정은 총 세 가지다.

  1. $f_i$ , ${\epsilon}_i$ 는 서로 independent하다.

  2. $f_i$ 는 zero expectation을 갖는다.

    확률 변수의 expectation: 확률 사건의 평균값, 사건이 일어나서 얻는 값과 사건이 일어날 확률을 곱한 값을 모든 사건에 대해 합한 값

$$ \mathbb{E}(f_i) = 0 $$

  1. $f_i$ 의 covariance는 identity matrix이다.

$$ \mathrm{cov}(f_i) = I $$


6.10 Joint Factor Analysis

Joint Factor Analysis(JFA) 는 Factor Analysis를 GMM-UBM에 적용한 방법이다. 다음과 같은 GMM-UBM 모델이 있다고 하자.

speakers와 channels의 factors를 동시에 분석하기 때문에 joint라는 단어가 붙었다.

이때 JFA는 다음과 같은 식으로 나타낸다.

$$ s = m + Vy + Ux + Dz $$

UBM의 supervector를 바로 대입할 수 있다.

위 loading matrix $V, U, D$ 를 추정하기 위해서는 수많은 방정식을 풀어야 한다는 단점이 있다.


6.10.1 JFA for speaker recognition

일단 speaker factors $y$ 를 구하면, $y$ 를 kernel function에 대입하여 사용할 수 있다. 이러한 방법을 JFA-SVM이라고 한다. 그런데 JFA를 통해 얻어낸 channel factor $x$ 가 speaker information을 포함하지 않는다고 가정했지만, 실제로는 그렇지 않다.

$y$ 만 쓸 경우 $x$ 에 포함된 유용한 정보를 모두 잃어버리게 된다. 이러한 배경에서 speaker, channel factor를 구분하지 않는 i-vector가 등장하게 된다.


6.11 i-vector

i-vector는 마찬가지로 Factor Analysis를 기반으로 하는 방법으로, JFA의 단점을 고려하여 단순화시킨 버전이다. 배경이 된 아이디어는 다음과 같다.

channel space $U$ , speaker space $V$ 를 합친다.

i-vector의 factor analysis equation을 살펴보자.

$$ s = m + Tw $$

UBM의 supervector를 바로 대입하여 사용할 수 있다.

이를 i-vector 혹은 identity vector로 지칭하기도 한다. 보통 400~600 차원을 갖는다.

또한 위 방정식을 다음과 같은 성질을 갖는 것으로 해석할 수 있다.

이때 평균은 $m$ , 분산은 $TT^{T}$ 이다.

참고로 total variability space $T$ 는 JFA에서 speaker factor $V$ 를 구하는 방법과 유사하다.


6.11.1 Channel compensation

speaker, channel information을 모두 가진 total factors $w$ 를 speaker recognition에서 바로 사용할 수 없다. 따라서 추가로 channel compensation 과정을 거쳐야 한다.

결과는 channel information을 포함하지 않는다. 이렇게 구한 $w'$ 를 speaker recognition에 사용한다.

아래는 channel compensation으로 쓰이는 대표적인 네 가지 방법이다.


6.11.2 Speaker recognition with i-vector

i-vector를 이용한 cosine similarity는 다음과 같이 계산할 수 있다.

$$ \cos (w_1, w_2) = {{w_1^T w_2} \over {||w_1|| \cdot ||w_2||}} $$

이렇게 구한 cosine similarity는 speaker recognition을 수행하기 위한 threshold로 사용하거나, SVM의 cosine kernel function $K(w_1 , w_2) = \cos (w_1, w_2)$ 으로 사용할 수 있다.


6.13 JFA vs i-vector

요약하자면 두 방법은 모두 Factor Analysis 기반이지만, channel information을 다루는 방식이 다르다.

대체로 i-vector가 계산이 효율적이며 성능도 더 좋은 방법이다.