본문 바로가기

머신러닝/[딥러닝을 이용한 자연어 처리]

Questions

질문

1. 기계번역의 평가는 어떻게 하나요? 사람들이 RNN을 안쓰고 어떤 다른 방법으로 가고 있습니까? 훈련데이터를 필터링해서 크기를 줄일 수 있는 방법은 어떤 것이 있나요?

 우선 블루(BLEU) 스코어가 있습니다. 이게 가장 스탠다드하게 쓰이고 있는데, 문장이 하나가 주어져 있고, 이 문장의 Reference translation이 5~10개 정도 주어집니다. 이렇게 사람이 만든 Reference translation의 N-gram들을 다 볼겁니다. 보통 n=4까지 보구요. 그리고 시스템의 Translation이 만든 N-gram의 Precision을 계산합니다. 다만 Precision 특성상, 아무것도 예측안하면 100%가 되니까, 번역 결과의 길이를 통해 페널티를 적용하는거죠. 두번째 저는 RNN을 떠나지 않습니다 다만 많은 분들이 CNN, Attention으로 가고 있죠. 왜냐하면 RNN은 시퀀스를 읽어내리니까, 훈련할 때 너무 오래걸리거든요. 세번째는 그 자체로 큰 토픽이죠. 왜냐하면, 필터링하기위해서는 언어모델을 잘 만들어서 점수가 낮은 친구들을 제외하면 되는데, 언어모델을 잘 만들려면 필터링된 데이터가 필요하니까요. 굉장히 얽혀있는 문제입니다. 때문에 휴리스틱한 방법론으로 필터링을 할 수 밖에 없는데, 이건 우리가 풀 Task에 의존해서 바뀌게 됩니다.

2. Vocabulary 크기는 문제마다 다르게 설정해야하나요?

 네 이거도 중요한 문제죠. 크면 클수록 계산 비용이 늘어나니까 적당한 선을 찾아야하는데, 언어마다 좀 다르긴해요. 영어-불어는 괜찮았어요. 그런데 한국어, 독일어 이런 언어는 굉장히 많은 Vocab이 있어요. 그래서 Subword segmentation이 제안되었고, 허프만 코딩 이런게 나왔는데, 70년 대 나온 Byte-Pair 인코딩이 결국 최고로 자리매김했습니다.