[project#2] transformer 구조에서 중요한 정보는 최종 레이어 근처에서 많이 처리된다구?

sujin·2024년 10월 11일
0

nlp_project2

목록 보기
7/8
post-thumbnail

modeling_roberta.py를 수정해보았다.

dropout 적용하기

  1. 최종 출력에 바로 dropout 적용

    동작 설명

    모델의 모든 레이어를 통과한 후 마지막으로 출력된 전체 시퀀스 출력에 dropout을 적용

    학습 과정에서 모델이 과적합되지 않도록 최종 출력을 랜덤하게 일부 뉴런을 비활성화화여 일반화 성능을 높인다.

    sequence_output = outputs[0]
    sequence_output = self.dropout(sequence_output)  # 여기에서 Dropout을 적용

    실험 결과: 성능이 떨어졌다.

    실험 결과의 가설: RoBERTa와 같은 사전 학습된 모델들은 이미 충분히 학습이 된 상태로, 파인튜닝 시에 drop out을 적용하면 미세한 정보까지 학습해야하는 상황에서 성능이 오히려 떨어질 수 있다.

  1. 중간 레이어(hidden_state[6])에 dropout 적용

    실험결과: sota 모델과 성능 차이가 없다.(base modeling_roberta.py)

    실험결과의 가설: dropout을 적용한 중간 레이어가 모델 학습에 크게 영향을 주지 않는 레이어일 수 있다. 트랜스포머 구조에서 상위 레이어에서 더 중요한 특성들이 학습되기 때문에, 중간 레이어에 dropout을 적용했을 때 영향이 적을 수 있다.

  2. 최종레이어에 가까운 hidden_state[10]에 dropout 적용

    train_loss = 1.4043
    train_loss가 너무 커서 실험 중단.

transformer 구조에서 중요한 정보는 최종 레이어 근처에서 많이 처리된다구?

초기 레이어: 주로 입력 문장의 기본적인 문법적 정보와 단어간의 짧은 거리에서의 관계를 학습한다. 예를 들어, 단어의 형태소 분석이나 문장 구조와 같은 저수준 정보들이 이 단계에서 추출된다.

이 단계에서 모델은 질문과 문서의 단어들을 단순히 처리하고, 각 단어의 기초적인 의미를 학습한다.

중간 레이어: 문장 내에서 더 복잡한 관계와 맥락을 학습하기 시작한다. 예를 들어, 문장의 핵심 개념이나 문자 내에서 명사,동사 등 중요한 단어들이 어떻게 연결되는지를 파악하는데 집중한다.

모델은 질문과 문서의 연관성을 파악하며, 답변이 될 수 있는 중요한 단어들을 찾기 시작한다.

최종 레이어 근처: Transformer 구조의 최종 레이어, 특히 마지막 몇 개의 레이어는 모델이 입력 문장의 가장 결정적인 의미를 집중적으로 처리하는 단계이다. 최종 레이어에서는 입력 전체의 문맥을 기반으로 중요한 단어들 간의 관계를 파악하고, 이를 바탕으로 최종적인 예측을 수행한다. 이 단계에서 문장 내에서 가장 중요한 단어와 의미가 강조되며, 모델은 최종 출력을 생성하기 위해 이 정보들을 종합한다.

이전 레이어에서 학습한 정보를 바탕으로, 문서 내에서 답변으로 사용될 수 있는 정확한 단어나 문구를 찾고, 최종적인 예측을 수행한다.

profile
감자 그리고 NLP

0개의 댓글