변환기를 기반으로 텍스트 생성 결과를 개선하는 방법은 무엇입니까?

Aug 19 2020

BART와 같은 텍스트 생성 모델을 사전 훈련하지 않으면 tensor2tensor와 같은 변환기를 기반으로 결과를 개선하는 방법은 무엇입니까?

텍스트 생성 작업에서 변환기에 대한 개선 아이디어는 무엇입니까?

답변

1 noe Aug 19 2020 at 14:41

당신이 기차에 사용할 수 많은 데이터가있는 경우, 당신은 같은 대형 변압기 모델에 사용 된 기술을 적용해야 GPT-이 매우 깊은 모델합니다 (1.5B 매개 변수에 대한 48 층), 수정 초기화, 사전 정상화 및 가역 토큰을 : . GPT-3 의 로컬 밴딩 희소주의 패턴을 적용 할 수도 있습니다 .

매우 작은 훈련 데이터가있는 경우이 트윗에 설명 된 "기록되지 않은"공격적인 기술 , 즉 데이터 증가, 개별 임베딩 드롭 아웃, 정상적인 드롭 아웃 및 체중 감퇴, 많은 환자 훈련 시간을 적용 할 수 있습니다.

업데이트 : 내가 언급 한 트윗 스레드가 중요하다고 생각하므로 다음은 가장 관련성이 높은 트윗입니다.

  • PTB 및 WikiText-2와 같은 작은 데이터 세트에서 트랜스포머를 어떻게 성공적으로 훈련시킬 수 있습니까? LSTM이 작은 데이터 세트에서 더 나은가요? 568 GPU 시간에 해당하는 339 개의 실험을 실행하고 몇 가지 답을 찾았습니다. 블로그 게시물을 작성할 시간이 없으므로 대신 여기에 트위터 스레드가 있습니다.

  • 약간의 배경 지식을 제공하기 위해 :이 모든 것은 PTB에서 Transformer-XL 결과를 복제하고 WikiText-2 (WT2)에서 매우 열악한 결과를 갖는 것에 대한 과거의 좌절감으로 인해 발생했습니다. WT2에서 200 회 이상의 실험 후 가장 좋은 모델은 표준 LSTM 기준 (65.8 ppl)과는 거리가 먼 90ish ppl이었습니다.

  • ...

  • 주요 통찰은 다음과 같습니다. 소규모 데이터 세트 영역에서는 데이터 세트 확대에 관한 것입니다. 컴퓨터 비전의 유사점은 특정 데이터 세트 확대를 수행하면 특히 작은 데이터 세트에서 훨씬 더 나은 결과를 얻을 수 있다는 것입니다. 이것은 또한 모델을 정규화합니다.

  • 가장 극적인 성능 향상은 이산 임베딩 드롭 아웃에서 비롯됩니다. 평소와 같이 임베드하지만 이제 p는 전체 단어 벡터를 0으로 만들 수 있습니다. 이것은 마스킹 된 언어 모델링과 유사하지만 목표는 마스크를 예측하는 것이 아니라 불확실한 컨텍스트를 가진 일반 LM입니다.

  • 두 번째로 중요한 요소는 일반적인 입력 드롭 아웃입니다. 확률 p로 임베딩 및 드롭 아웃 요소를 가져옵니다. 이것은 또한 이미지에 대한 임의의 픽셀을 삭제하는 것과 매우 유사한 데이터 증가 효과를 가지고 있습니다. 이것에 대해 생각하는 좋은 방법은 무엇입니까? 1/2

  • King-man + woman = Queen을 할 수 있다는 것을 기억하십니까? 이제 입력 드롭 아웃이 "King"의 "man"구성 요소를 제거한다고 상상해보십시오. 이렇게하면 모델이 특정 정보 (이 경우 성별)를 여러 차원으로 배포하여 일반화를 개선하여 더 강력하게 만듭니다. 2/2

  • 그렇지 않으면 더 많은 정규화 (더 많은 탈락 + 체중 감소)와 인내심의 게임입니다. 이 트릭 없이도 좋은 모델을 15 분만에 훈련시키고 97 명을 얻을 수 있습니다. 이 모든 드롭 아웃을 적용하면 7 시간의 훈련 후 모델이 63.4 ppl (LSTM보다 낫음)으로 부족합니다.

  • 이러한 데이터 증가 레시피를 대규모 데이터 세트에 적용 할 수도 있지만, 아무도 WT-103에서 몇 달 동안 몇 ppl 포인트를 훈련하고 싶지 않습니다. 제 생각에는 너무 많은 추가 컴퓨팅이 필요한 기술은 유용하기보다는 커뮤니티에 더 해 롭습니다. 1/2

  • 내 결과의 기반이되는 공용 Transformer-XL 리포지토리의 코드는 다음과 같습니다. https://github.com/TimDettmers/transformer-xl/tree/wikitext2

  • 공개 Transformer-XL 리포지토리를 변경하면이 스크립트를 실행하여 WT2에서 63.4 ppl로 낮출 수 있습니다. https://github.com/TimDettmers/transformer-xl/blob/wikitext2/pytorch/replicate_wt2.sh