본문 바로가기

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

Questions

질문

1. 문장 생성시 다양성은 어떻게 해결하나요?

 자 질문이 이런거죠. 사람은 개개인마다 다른 문장을 구사하는데, 문장의 스코어링을 통해서 가장 높은 점수의 문장만 내뱉게되면, 기계는 결국 똑같은 문장만 반복할 것이다. 그렇죠. 그런데 그건 제가 Deteministic한 Generation을 보여줘서 그런거구요. 가장 높은 점수의 문장만 뱉어서 문제가 된다면, 가장 높지 않아도 적당히 높은 것들을 모아 문장을 샘플링하면 되겠죠. Stochastic한 방법이죠. 우린 이미 스코어를 다 알고있으니까, 이런 행위가 충분히 가능하죠.

2. 문장 생성 모델 훈련시, 토픽을 감안한 효율적인 훈련 방법은 있나요? 역으로 문장이 주어졌을 때, 해당 문장을 어떤 토픽으로 분류할 수 있나요?

 토픽, 이라는 건 결국 문장 전체를 보면 해결할 수 있는 문제겠죠. 정상 뒤에 올 단어가 회담일지 등반일지, 는 문장의 전체적 맥락을 보면 파악할 수 있다는 말이고, 이건 결국 장기의존성문제랑 동일하겠죠. 우린 이미 이걸 해결했어요. 그래서 따로 토픽을 분류해서 학습에 넣고, 이런 과정은 굳이? 라는 생각이 드네요. 그리고 우리가 문장에 대해 스코어링을 이미 진행했기 때문에, 당연히 Text classification도 가능합니다. 

3. 문장 길이가 길어질수록 점수가 낮아질 것 같은데 어떻게 해결하나요? 일반적인 문장표현은 어떻게 찾을 수 있나요?

 네, 일단 첫번째는 원칙적으로 Autoregressive model의 수식을 보면 모두가 그럴거같다고 생각을 할거에요. 확률값이 0과 1사이니까 당연히 문장이 길수록, 많이 곱하게 되고, 그러면 당연히 점수가 낮아지겠죠. 그럼 이걸 어떻게 해결하냐. 웨이트를 주는 거죠. 실제 좋은 Language Model들은 이런 웨이트와 머징방식을 상황에 맞게 선택합니다. 두번째로 일반적인 문장표현은, 이게 가장 이상적인 목표죠. 그러나 과거 실험의 결과는 최적의 문장표현은 Task에 따라 달라집니다. 그러니까 아직 최고의 일반적 문장 표현이 존재하는지 안하는지 자체가 밝혀지지가 않았습니다. 제 생각에는 없을 것 같습니다.

4. 문장에 점수를 매긴다(Scoring)는 무엇을 뜻하나요?

 스코어링한다는게, p(X)죠. X는 문장이구요. 문장이 주어졌을때, 이 문장이 태어날 확률이 얼마인가. 이런거죠. 표현할 때 스코어링과 확률을 옮겨가며 쓸건데, 결국 스코어링과 확률은 어떤 매칭함수가 있을 뿐 같은 역활을 수행할 수 있기 때문이죠.

5. Tagging 문제에서 Self Attention을 활용하면 어떤가요?

 질문하신게, 문장이 주어졌을 때, 각 토큰에 대해 어떤 Pos tagging등의 행위를 하고싶은거죠. 그런데 Tagging을 할 때, 한 토큰만보고 그걸 판단하기는 힘들겠죠. 그럴바에야 그냥 사전에서 검색해서 Tag를 주고 말겠죠. 결국 우린 컨텍스트를 봐야하는겁니다. 문장에서 이 단어가 어떻게 쓰이고 있는가. 문장이 주어져있고 그 문장을 함축시키고, 어떤 토큰과 비교를 했을 때, 어떤 클래스에 속하는가. 의 문제니까 Self Attention을 활용하는게 좋은 아이디어겠죠.

6. Self Attention은 얼마만큼 길이의 컨텍스트 길이를 볼 수 있나요? 그렇다면 계산량 이슈는 어떻게 해결하나요?

 그렇죠. Self Attention과 RNN 모두, 컨텍스트 길이에는 문제가 없지만, 길어질수록 시간이 오래걸리겠죠. 그런데 실제로 너무 길어져버리면, RNN이 Self Attention보다 계산은 조금 더 빠릅니다. 다만 더 잘되느냐? 그건 다른 문제입니다.

'머신러닝 > [딥러닝을 이용한 자연어 처리]' 카테고리의 다른 글

Overview: a bit of history remark  (0) 2020.04.19
Summary  (0) 2020.04.18
Long Term Dependency  (0) 2020.04.15
Neural N-Gram Language Model  (0) 2020.04.14
N-Gram Language Models  (0) 2020.04.13