ACL 2022 용지의 소스 코드 "일관성 향상 : 사전에 사전에있는 언어 모델이 충분히주의를 기울이지 않을 때"(Arxiv, ACL Anthology)
장거리 의미 론적 일관성은 자동 언어 생성 및 이해에서 여전히 어려운 과제입니다. 우리는 큰 언어 모델이 다음 단어의 다음 단어의 영향을 불충분하게 배웠음을 보여줍니다. 우리는 일관성 부스팅을 제시합니다. 생성 된 일반 텍스트 및 대화 상자 응답에 대한 분포 분석을 통해 사전 각인 모델로 일관성 향상의 이점을 보여줍니다. 또한 다양한 제로 샷 NLP 작업에 대한 최첨단 모델로 일관성이 높아지는 것은 추가 교육없이 성능 향상을 산출하는 것으로 나타났습니다.
종이와 코드가 유용하다고 생각되면이 repo를 친절하게 별표로 표시하고 종이를 인용하십시오. 정말 감사합니다!
@inproceedings { malkin-etal-2022-coherence , title = " Coherence boosting: When your pretrained language model is not paying enough attention " , author = " Malkin, Nikolay and Wang, Zhen and Jojic, Nebojsa " , booktitle = " Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) " , month = may, year = " 2022 " , address = " Dublin, Ireland " , publisher = " Association for Computational Linguistics " , url = " https://aclanthology.org/2022.acl-long.565 " , doi = " 10.18653/v1/2022.acl-long.565 " , pages = " 8214--8236 " }우리는 기존 미리 훈련 된 LMS에 대한 일관성의 부족을 보여주는 데모 프로그램을 제시하며, 즉, 컨텍스트가 주어진 다음 토큰을 끊임없이 예측하지 못하면 먼 단어를 분명히 이해해야합니다. 이러한 오류는 제안 된 일관성 향상 에 의해 해결 될 수 있으며, 이는 전체 컨텍스트와 부분적 맥락에서 두 가지 분포를 혼합하여 다음 토큰을 대조적으로 예측합니다.
> >> from cb_demo import contrasting > >> contrasting ( model_name = 'gpt2' , context = ' Ballad metre is "less regular and more conversational" than common metre' , - - partial_length = 8 , - - alpha = 0.5 ) [ out ] Top tokens based on full context : Ballad metre is "less regular and more conversational" than common Rank Tokens Logprobs Probs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Ġsense - 2.405 9.03 % 2 Ġin - 3.900 2.02 % 3 . - 3.978 1.87 % 4 , - 4.097 1.66 % 5 Ġpractice - 4.287 1.37 % ... ... ... ... 13 Ġmetre ** - 5.098 0.610609 % * * Target Token Top tokens based on partial context : regular and more conversational " than common Rank Tokens Logprobs Probs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Ġsense - 2.547 7.83 % 2 ĠEnglish - 3.352 3.50 % 3 . - 3.427 3.25 % 4 Ġconversation - 3.445 3.19 % 5 , - 3.634 2.64 % ... ... ... ... 14103 Ġmetre ** - 13.450 0.000144 % * * Target Token Contrastive next token prediction : Rank Tokens Logprobs Probs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Ġmetre ** - 0.923 39.74 % 2 Ġsense - 2.334 9.69 % 3 Ġmeter - 2.785 6.17 % 4 Ġin - 3.210 4.03 % 5 Ġfoot - 3.220 3.99 % * * Target Token다음 코드로 논문의 그림 1의 일부 예제에 대한 결과를 복제 할 수 있습니다 :
python cb_demo . py - - context = ' Ballad metre is "less regular and more conversational" than common metre' - - model_name = 'gpt2' - - partial_length = 8 - - alpha = 0.5 python cb_demo . py - - context = ' Isley Brewing Company: Going Mintal — a minty milk chocolate stout' - - model_name = 'gpt2' - - partial_length = 8 - - alpha = 0.5 python cb_demo . py - - context = ' Other times anxiety is not as easy to see, but can still be just as debilitating' - - model_name = 'gpt2' - - partial_length = 8 - - alpha = 0.5Lambada 과제는 모델이 여러 문장의 구절에서 최종 단어를 예측할 것으로 예상되는 위에 표시된 예와 유사합니다. 이 데이터 세트는 최신 Langauge 모델을 평가하기위한 표준 벤치 마크입니다 (예).
더 중요한 것은,이 과제는 광범위한 맥락에 대한 추론을 명시 적으로 요구한다. 인간은 전체 구절을 주었을 때 마지막 단어를 안정적으로 추측 할 수 있지만, 마지막 문장 만 주어질 때는 안된다. 이러한 속성은이 벤치 마크가 제안 된 일관성 향상 의 효과를 평가하기위한 완벽한 테스트 베드로 만듭니다.
Lambada 실험을 실행하려면 다음 명령을 실행하십시오.
python main . py - - tasks = 'lambada' - - models = 'gpt2-small' - - use_val = False - - alpha_start = 1 - - alpha_end = 1 - - alpha_step = 0.1 - - slen_start = 10 - - slen_end = 10python main.py --help 같이 나열되어 있습니다.
--models : 여러 모델을 동시에 실행하려면 세미콜론에 의해 분리 된 미리 훈련 된 언어 모델의 이름 (예 : 'gpt2-small;gpt2-medium' ; GPT-3 모델을 사용하려면 GPT-3에 대한 메모를 참조하십시오.--use_val : 부분적인 컨텍스트에 대한 부스팅 계수 및 길이를 나타내는 두 개의 하이퍼 파라미터, alpha 및 slen 선택하기 위해 검증 세트를 사용하는지 여부--alpha_start , --alpha_end , --alpha_step : alpha hyperparameter--slen_start slen 에 대한 그리드 검색 매개 변수, --slen_end , --slen_step . 초 파라미터; 두 하이퍼 파라미터 설정은 Lambada 작업의 추론 속도에 영향을 미칩니다.우리는 다음 NLU 작업에 대한 제안 된 일관성 향상을 평가합니다.
| 작업 | 클로즈 | 텍스트 분류 | 답변 | NLI | 사실 지식 검색 |
|---|---|---|---|---|---|
| 데이터 세트 | 스토리 클로즈 Hellaswag Copa | Commonsenseqa OpenBookqa 아크 쉬운/도전 PIQA | SST-2/5 트렉 agnews | rte CB 부울 | 라마 |
대부분의 데이터 세트는 Hugginface의 데이터 세트에서로드 할 수 있습니다. 코드를 실행할 때 지시 사항을 포함하여 수동으로 다운로드해야합니다.
NLU 실험을 실행하려면 다음 명령을 실행하십시오.
python main . py - - tasks = 'storycloze;csqa;openbookqa' - - models = 'gpt2-small;gpt2-medium;gpt2-large' - - alpha_start = 2 - - alpha_end = - 3 - - alpha_step = 0.01몇 가지 중요한 인수는 다음에 나열되어 있습니다. python main.py --help
--models : 미리 훈련 된 언어 모델의 이름, 세미콜론에 의해 여러 모델을 동시에 실행하려면 'gpt2-small;gpt2-medium'--use_val : 두 개의 하이퍼 파라미터, alpha 및 slen 을 선택하여 파 부분적으로 계수 및 길이를 선택하기 위해 유효성 검사 세트를 사용해야하는지--alpha_start , -alpha_, --alpha_end . --alpha_step : alpha 하이퍼 파라미터의 그리드 검색 매개 변수; 코드는 중간 결과를 캐시하며api_key.txtCodebase는 이전 작업 외에도
대략 세 단계가 있습니다.
tasks 폴더에 __init__.py 에 새 데이터 세트를 등록하십시오.load_data , standardize )로 MultipleChoiceTask 클래스를 상속하는 새로운 클래스 생성get_contrast_ctx 입니다. 이곳에서 일관성을 높이기위한 전제 프리프트 프롬프트를 정의하고다른 작업 클래스를 예제로보고 코드를 채택 할 때 무료로 알려주십시오.
우리는 generation/generation.py 의 Huggingface transformers 라이브러리와 호환되는 세대 모델 래퍼를 제공합니다. 예제 스크립트의 클래스를 사용하여자가 회귀 LM의 일관성 부양 변형을 만들 수 있습니다.
> >> boosted_model = generation . BoostedModel ( base_model , k = 8 , alpha_long = 1.5 , alpha_short = - 0.5 )boosted_model 은 generate 함수와 함께 유연하게 사용할 수 있습니다.
> >> ins = T . LongTensor ([ tokenizer . encode ( 'Once upon a midnight dreary,' )]) > >> outputs = boosted_model . generate ( input_ids = ins , do_sample = True , max_length = 100 , top_p = 0.95 ) > >> tokenizer . decode ( outputs [ 0 ]) "Once upon a midnight dreary, while I pondered over these things, I suddenly became aware of a strange and terrible noise. I turned round, and saw that the old man was standing near me. He was wearing a black suit, with a black tie, and a black hat. He had a long, thin, black beard, and his eyes were black. His hair was of a dark brown colour, and was very long. His face was rather large, and his lips were somewhat". 짧은 컨텍스트가 현재 생성 된 텍스트에서 boosted_model.k 음성 접두사 길이로 동적으로 설정하여 특정 길이 ( 예 : 대화의 이전 회전)를 뺀 시나리오에 적합합니다.
우리는 조건부 생산 출력을 제시합니다. 표 1에 나와있는 평가 지표는 처음 네 개의 열에 대한이 저장소의 코드를 사용하여 평가하거나 여기에서 소개 한 새로운 장거리 일관성 메트릭에 대한 코드를 사용하여 평가할 수 있습니다.
궁금한 점이 있으시면 문의하십시오. Kolya (Nikolay.malkin at Mila.quebec) 및 Zhen (wang.9215 at osu.edu)에게 문의하십시오.