CTC (Connectionist Temporal Classification)

 

Speech Recognition에서 데이터셋으로 오디오 클립과 Transcript(Text) pair가 들어온다. 문제는 Audio와 Transcript 사이의 Alignment는 다 맞지 않는다. 문제는 우리가 Alignment를 알아야 Input 오디오와 Output 텍스트 사이의 Mapping을 찾을 수 있다는 것이다. 그렇지만 사람들마다 발화의 의미는 같은데 표현이 다 다르다. 오디오 데이터는 다른데 같은 레이블을 갖게 되는 데이터셋이 존재하고, 해당 레이블셋에 대해 오디오의 distribution을 찍으면 pattern이 나오는데 이를 커버할 수 있는 mapping을 찾는 것이 주된 목표.
CTC는 input과 output 사이 Alignment가 되어 있지 않은 데이터셋에서 alignment를 맞춰보자고 해서 나온 것이고, 이에 대한 근본적인 해결책으로 제시한 것은 둘 사이의 모든 valid한 Alignment의 가능성을 합산해보자는 것이다.

 

input, output 사이의 가능한 Align을 모두 뽑아 Marginalize하자! 그러면 우리가 찾는 Align이 존재할 것이다.

 

utterance같은 경우는 띄어쓰기가 존재할 수 있고, silence가 존재할 수도 있다. 그렇기 때문에 모든 output 사이사이 묵음같은 것이 존재할 수 있다고 가정하고 해야 한다. 토큰 하나를 추가해서 넣는다고 생각하면 된다. 이를 epsilon이라고 할 것이다. CTC같은 경우는 input과 같은 길이의 Alignment를 만들고 y로 mapping하며 epsilon들을 다 제거해버리면 해당 output과 length가 똑같은 결과를 얻을 수 있다고 한다.

+ Recent posts