2019년 5월 30일 목요일

Joint endpointing and decoding with end-to-end model

Google에서 EPD에 관한 논문들을 발표하는 것이 종종 보인다.
음성인식 결과의 응답속도를 줄이기 위한 노력의 일환으로 음성인식도 잘되지만
굳히기로 응답속도까지 신경을 쓰고 있는 듯하다.

이 논문 이전에는 아래 그림과 같이 frame 단위로 음성, 최초 silence, 중간 silence, 마지막 silence를 찾도록 하여 마지막 silence가 보이면 마이크 입력을 끝내고 음성인식 절차로 들어가도록 하는 방법을 취하여 EPD에 필요한 latency를 줄일 수 있는 방법을 제안했었다. 이 녀석의 이름을 end-of-query (EOQ) model이라고 불렀다.

Figure 2: CLDNN (left) and GLDNN (right).
<*Figure from "Endpoint detection using grid long short-term memory networks for streaming speech recognition">

본 논문에서는 앞서 언급한 EOQ 모델이 음성입력에만 의존하여 end point를 찾아내는 것을 단점으로 들었다. 또한 이후에 진행되는 음성인식 절차와 분리되어 end point를 찾아내는 것을 두번째 단점으로 들었다. 같은 말이다. 음성에만 의존적이라 음성인식결과를 반영할 수 없는 거니까.

여하튼, 이 논문에서는 이전과 다르게 streaming 입력으로부터 음성인식과 EPD를 동시에 수행할 수 있는 방법을 제안하였다. 준비물은 RNN-T 음향모델과 문장의 끝을 나타내는 special character </s>를 추가하여 훈련을 수행한 것이다. 

여기서 왜 attention 기반의 E2E 모델을 사용하지 않았는지 의문이었는데, 그것에 대한 이유는 논문에 나타나있다. Attention 기반의 E2E 모델에서는 decoding을 끝내기 위한 character <eos>가 이미 있기는 하지만 그것은 encoder와 decoder에서 생성하는 sequence가 다르기 때문에 사용되는 것으로 EPD를 위해 사용하기에는 부적합하다.
또한 Attention 기법 자체가 고정된 전체 입력 sequence를 decoder의 time step마다 가중합하는 방식을 취하기 때문에 모델 자체도 EPD와는 궁합이 좋지가 못하다.

RNN-T의 경우 CTC기반의 E2E 모델로서 frame 단위의 output을 생성하기 때문에 각 frame time step 별로 탐색 beam을 만들어 가면서 적은 latency로 또는 on-the-fly로 end point를 찾을 수 있게 되는 것이다.

다만 주의 할 것은 중간에 </s>가 튀어 나오는 것은 단순히 character 하나가 잘못 decoding 되는 것과는 무게감이 다르다. (문장 뒤쪽이 전부 날아가는 것이다.) 따라서 search beam을 구성하는데 아래와 같은 constraint를 둔다.
$$P(\big \langle /s \big \rangle|\mathbf x_{1...t},y_{0...u(t-1)})^\alpha \geq \beta$$
논문에서는 문장 끝을 나타내는 token </s>에 대한 사후 확률값이 \(\beta\)를 넘을 때에만 search beam에 포함시키는 조건을 두었다. 추가로 \(\alpha\)를 1보다 크게 설정할수 있도록 하여 왠만해서는 </s>가 search beam에 포함될 수 없도록 조치하였다.


결과를 보니 제안하는 방법에서 latency에 따른 오류율이 현전히 줄어듦을 보여주고 있다. 이 논문을 보기 전에 나는 CTC기반의 모델이 단지 attention기반 E2E 모델에 다다르는 징검다리 역할에 불과하다고 생각했는데, 이런 식의 장점이 있는 줄은 몰랐다. 역시 뭐든 끝까지 파는 놈이 뭔가를 건지는가 싶다.

대충 정리하고 싶었는데, 대충 정리가 안된다. 큰일이다. 이렇게 오래 걸리면 안되는데...


댓글 없음:

댓글 쓰기