Closed seopbo closed 4 years ago
[질문]
우선 제가 이해한 내용에 대해서 설명을 하고 질문을 하겠습니다.
논문에서 설명하는 바에 따르면 기존 transformer 방식에서 학습 하는 것과 같이 source와 target 데이터를 가지고 학습을 하는 방법입니다. 여기서 다른줌은 decoder 학습 방식을 기존의 autoregressive 방식이 아닌 mlm 방식으로 하는데 여기에 encoder 정보가 들어오니 conditional mlm (c-mlm)을 한다고 이해를 했습니다. 그리고 예측 시에는 decoder에 입력할 정보가 없으니 임의의 시퀀스 길이 N을 정의하고 mask 값을 100% => 90% => 80% 이렇게 줄여가면서 시퀀스 토큰들을 예측하여 non-autoregressive 모델 방식으로 예측한다(?) 라고 이해를 했습니다. (우선 시퀀스에 대한 batch inference를 하지 않는 방식이어서 parallel이라는 의미는 잘 모르겠습니다. 단, mlm형태로 inference를 하다보니 independent assumption에 따른 generation방식을 parallel이라 이야기 한다 정도로 이해하고 있습니다.)
이해한 내용을 토대로만 봤을 때 제가 궁금한 부분은 학습 상황에서 alignment map(어텐션 맵) 형성을 어떻게 검증했을 지 궁금합니다. (seq2seq 계열 모델 학습 시에는 training loss와 별개로 alignment map 형성이 어떻게 되었는지 보는게 중요하다고 볼 수 있다고 알고 있습니다.). 왜 이런 궁금점이 생겼나면 decoder 학습 시에 mask 정보가 input으로 들어오면서 alignment 정보를 어떻게 학습할 수 있는지 예상이 되질 않는다고 봤었기 때문입니다. 물론 GLEU 스코어를 통해서 output에 대한 성능은 문제가 없습니다만, 모델 학습이나 예측 도중에 디버깅을 하는 입장에서는 저 alignment map 정보 형성이 중요할 수 있다고 보고 있거든요.
alignment에 관한 또 다른 질문은 예측 상황에서 보이는 alignment map이 있을 텐데 이 정보에 대해서는 어떻게 해석을 해야할까요? 보통 encoder에 입력 토큰 정보와 decoder의 순차적인 입력 토큰 정보를 토대로 alignment map을 해석할 수 있는데 cmlm 방식으로 시퀀스를 생성하고 mask 정보가 개입이 되면서 기존의 alignment map 정보의 의미와는 다를 것 같습니다. 이 경우에는 어떻게 보고 해석할 수 있어야 할지 궁금합니다.
C-MLM 방식의 모델에서는 alignment map에 대한 고려를 하지 않는게 맞을까요?
모델이 autoregressive에서 벗어난 모델이 되면서 source와 target간의 정보 연결이 어떻게 되어있는지 설명이 논문에 보이지 않았습니다. 이 부분에 대해서 공감하시면 이야기를 나눠봤으면 좋겠습니다! ^^
[질문]
Length를 정확히 예측하는 것도 sequence 생성에 중요한 역할을 하는 것 같습니다.
@Huffon comment => pos encoding과도 관련!!
[질문]
Length에 대한 prediction이 예측의 정확도에 영향을 미치는 것은 패러프레이징 계열 (번역, 스타일 변환, 음성인식 등) 에서는 효과가 있을 수 있지만, 요약이나 대화 생성 등의 태스크에서는 어떤 일관된 경향성을 배우기 어려울 수도 있을 것 같습니다. 그러한 경우, utterance 단위의 입력 뿐 아닌, context에 관한 정보가 조금 더 많이 들어간다면, 여전히 length에 관한 부분이 효과적으로 작용할 수 있을까요?
(스터디 참석을 하지 못하여 죄송합니다 ( ))
[질문]
이해한 내용: 기존의 auto regressive (AR) 방식은 left to right이므로, 이전 time step의 예측 품질과 상관없이 다음 time step을 이에 기반해서 해야한다는 점이 있었는데, 이 방법은 잘 예측한 단어들을 기반으로 다음 예측 iteration을 수행하기 때문에 손실을 최소화할 수 있는 것 같습니다.
질문1: 어쨌든 다음 예측 interation은 입력과 이전까지 잘 예측된 단어들을 기반으로 예측이 진행되는데, 단지 방향이 없을 뿐 AR 아닌가요? 즉, 이 논문은 AR로 인한 loss를 최소화 하기보단, 그냥 속도 개선에 중점인 논문인가요?
질문2: MLM 방식을 통해 학습한 decoder가 훨씬 expressive할 것 같은데요.. 이로 인한 posterior collapse 경향을 addressing하지 않았는지? — 즉, encoder로부터의 정보를 잘 활용하도록 학습되지 않는지? 이를 방지하기 위한 constraint나 후속 연구는 없었는지?
질문3: Masking을 기계적으로 하지 않고, 네트워크를 통해 mask token을 선정하는 방법?
예전에 본 비슷한 논문: [Xia et al., 2017]
[질문]
약간 alignment와 연관된 질문일 수도 있는데, 논문의 가정중에 하나가 마스크된 토큰들(Y_mask)이 입력(src)과 마스크가 안된 토큰들(Y_obs)에 대해서 조건부 독립이라고 했는데요, 이걸 어떻게 확인 할 수 있을지 궁금합니다. 각 마스크된 토큰끼리는 연관이 없는 것일지..?
pre-trained language mode이 붙었다고 했을 때, 1같은 경우 엄청 잘되지 않을까요?
pre-trained language mode이 붙었다고 했을 때, 1같은 경우 엄청 잘되지 않을까요?
- mass + mask-predict
- bart + mask-predict
- mass + vanilla transformer
- bart + vanilla transformer
Enc/dec 둘 다 bert를 쓰면 되는거 아닐까요?
어떤 내용의 논문인가요? 👋
Abstract (요약) 🕵🏻♂️
Most machine translation systems generate text autoregressively from left to right. We, instead, use a masked language modeling objective to train a model to predict any subset of the target words, conditioned on both the input text and a partially masked target translation. This approach allows for efficient iterative decoding, where we first predict all of the target words non-autoregressively, and then repeatedly mask out and regenerate the subset of words that the model is least confident about. By applying this strategy for a constant number of iterations, our model improves state-of-the-art performance levels for nonautoregressive and parallel decoding translation models by over 4 BLEU on average. It is also able to reach within about 1 BLEU point of a typical left-to-right transformer model, while decoding significantly faster.
이 논문을 읽어서 무엇을 배울 수 있는지 알려주세요! 🤔
Arch.
["<mask>" for _ in range(len(predicted_len))]
predicted_len
에 Linear decay 를 적용해 마스킹 할 토큰 개수를 결정Key Points
Multi-modality Problem
t = 0
인 상황을 보면,completed
단어가 중복해서 생성된 것을 볼 수 있음completed_1
과completed_2
는 두 명의 번역가가 각자가 생각하는 Target Sentence 에서는complete
가 여기에 위치하는게 좋을 것 같다며 독립적인 예측을 수행했기 때문에 발생하는 문제Decoding Speed
num_iteration
을 조정해 성능과 속도의 Trade-off 를 기호에 맞게 설정 가능top_k
개의 틀을 만들 수 있음5
개의 Target Sentence 틀을 만들어 [10, 11, 9, 12, 8] 길이의 문장들을 병렬적으로 예측하게 할 수 있음num_iterations(T)
와num_predicted_len(l)
을 Hyper parameter로 설정해 Trade-off 에 활용 가능T=4, l=2
일 때, 성능을 2 포인트 가량 희생하고 3 배의 디코딩 속도를 보장 받을 수 있고,T=10, l=2
일 때는 속도와 성능의 중간 지점을 얻을 수 있음Sentence Length
4~10
사이 값만 활용을 해도 성능이 괜찮게 나옴num_predicted_len(l)
을 왕창 늘려 Target Sentence 후보군을 많이 만들면 성능 향상에 도움이 될까?l
에 따라 작은 길이, 이를 테면4
정도의 Target Sentence 틀도 생길 것인데 4개 토큰의 Log-probabilty는 길이로부터 advantage를 얻어서 높게 측정될 것Distillation
같이 읽어보면 좋을 만한 글이나 이슈가 있을까요?
레퍼런스의 URL을 알려주세요! 🔗