귀하는 로그인되어 있지 않습니다. 이대로 편집하면 귀하의 IP 주소가 편집 기록에 남게 됩니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!== BERT의 구조 == === 입력 표현 === BERT는 입력 데이터를 처리하기 위해 세 가지 임베딩 레이어를 사용한다. 각각의 임베딩은 서로 다른 정보를 모델에 제공하며, 이를 결합하여 최종 입력 벡터를 생성한다. * '''토큰 임베딩(Token Embedding)''': ** 입력 문장의 각 단어(또는 서브워드)는 고정된 크기의 임베딩 벡터로 변환된다. ** BERT는 WordPiece라는 서브워드 토크나이저를 사용하여 단어를 분리한다. 이는 희귀 단어나 미등록 단어(out-of-vocabulary, OOV) 문제를 해결하는 데 유용하다. ** 예를 들어, "playing"이라는 단어는 "play"와 "##ing"으로 분리될 수 있다. * '''세그먼트 임베딩(Segment Embedding)''': ** BERT는 두 개의 문장을 입력으로 받을 수 있으며, 이를 구별하기 위해 세그먼트 임베딩을 사용한다. ** 첫 번째 문장은 세그먼트 A로, 두 번째 문장은 세그먼트 B로 태깅된다. ** 예를 들어, 질의 응답 작업에서는 질문이 세그먼트 A, 답변이 포함된 문단이 세그먼트 B로 처리된다. * '''포지션 임베딩(Position Embedding)''': ** 트랜스포머는 순차적 구조가 없기 때문에, 단어의 순서 정보를 제공하기 위해 포지션 임베딩을 사용한다. ** 각 단어의 위치에 해당하는 고정된 벡터가 추가된다. ** 포지션 임베딩은 사전에 학습된 고정 벡터로, 최대 512개의 단어 시퀀스를 처리할 수 있다. 위의 세 가지 임베딩은 합산되어 최종 입력 벡터를 생성하며, 이 벡터가 트랜스포머 블록으로 전달된다. 또한, BERT는 특수 토큰을 추가하여 입력을 처리한다. * '''[CLS]''': 문장의 시작을 나타내며, 문장 수준 작업(예: 문장 분류)의 표현으로 사용된다. * '''[SEP]''': 두 문장을 구분하거나 단일 문장의 끝을 나타낸다. * '''[PAD]''': 입력 길이를 맞추기 위한 패딩 토큰으로, 실제 의미는 없다. === 트랜스포머 블록 === BERT의 핵심 구성 요소는 트랜스포머의 인코더 블록이다. BERT는 여러 개의 트랜스포머 블록을 쌓아 모델을 구성하며, 각 블록은 다음과 같은 레이어를 포함한다. * '''자기 주의(Self-Attention) 레이어''': ** 문장 내 모든 단어 사이의 관계를 학습한다. ** 자기 주의 메커니즘은 입력 벡터를 쿼리(Query), 키(Key), 값(Value)로 변환한 후, 단어 간 유사도를 계산하여 주의를 분배한다. ** 멀티헤드 자기 주의(multi-head self-attention)를 사용하여 다양한 관점에서 단어 간 관계를 학습한다. * '''피드포워드 신경망(Feed-Forward Neural Network, FFNN)''': ** 자기 주의 레이어의 출력을 처리하여 다음 레이어로 전달한다. ** 각 단어에 대해 독립적으로 작동하며, 비선형 활성화 함수(ReLU)를 포함한다. ** FFNN은 다음과 같은 수식으로 정의된다: <math>FFNN(x) = \max(0, xW_1 + b_1)W_2 + b_2</math> * '''정규화 및 잔차 연결(Layer Normalization and Residual Connection)''': ** 각 레이어의 출력은 정규화(Layer Normalization)를 거치며, 잔차 연결(residual connection)을 통해 입력과 출력이 더해진다. ** 이는 학습의 안정성과 성능을 향상시킨다. BERT는 모델 크기에 따라 두 가지 변형을 제공한다. * '''BERT-Base''': 12개의 트랜스포머 블록, 768차원 임베딩, 110M 파라미터. * '''BERT-Large''': 24개의 트랜스포머 블록, 1024차원 임베딩, 340M 파라미터. === 사전 학습 과정 === BERT는 사전 학습을 통해 일반적인 언어 이해 능력을 학습한다. 사전 학습은 두 가지 주요 작업으로 구성된다. * '''마스크된 언어 모델링(Masked Language Modeling, MLM)''': ** 입력 문장의 단어 중 15%를 무작위로 선택하여 마스킹한다. ** 선택된 단어는 다음과 같이 처리된다: *** 80%는 [MASK] 토큰으로 대체. *** 10%는 무작위 단어로 대체. *** 10%는 원래 단어로 유지. ** 모델은 마스킹된 단어를 예측함으로써 문맥을 이해하는 능력을 학습한다. ** 예를 들어, "I love to [MASK] books."라는 입력에서 [MASK]를 "read"로 예측한다. * '''다음 문장 예측(Next Sentence Prediction, NSP)''': ** 두 문장이 주어졌을 때, 두 번째 문장이 첫 번째 문장의 실제 다음 문장인지 예측한다. ** 학습 데이터는 다음과 같이 구성된다: *** 50%는 실제로 연속하는 문장 쌍으로 구성. *** 50%는 무작위로 선택된 문장 쌍으로 구성. ** 모델은 [CLS] 토큰의 출력을 사용하여 이진 분류를 수행한다. ** 예를 들어, "I love reading books. [SEP] Reading helps me relax."는 실제 다음 문장이지만, "I love reading books. [SEP] The sky is blue."는 무작위 문장이다. 사전 학습은 대규모 데이터셋(예: BooksCorpus, 영어 위키피디아)에서 수행되며, 모델은 손실 함수를 최소화하도록 학습된다. === 추가 학습(Fine-tuning) === 사전 학습된 BERT 모델은 특정 NLP 작업에 맞게 추가 학습을 수행한다. 추가 학습은 비교적 간단하며, 다음과 같은 단계를 포함한다. * 작업별 입력 데이터를 준비한다. ** 예: 질의 응답 작업에서는 질문과 문단을 준비하고, 답변의 시작과 끝 위치를 레이블로 지정한다. * 모델의 출력 레이어를 작업에 맞게 수정한다. ** 예: 문장 분류 작업에서는 [CLS] 토큰의 출력을 이진 분류 레이어로 전달한다. * 작업별 데이터와 레이블을 사용하여 모델을 최적화한다. ** 최적화는 경사 하강법(gradient descent)을 통해 수행되며, 학습률은 일반적으로 작게 설정된다(예: 2e-5). 추가 학습은 다양한 NLP 작업에서 뛰어난 성능을 발휘한다. 예를 들어: * '''문장 분류''': GLUE 벤치마크(예: SST-2, CoLA)에서 사용. * '''질의 응답''': SQuAD 데이터셋에서 질문에 대한 답변을 예측. * '''개체명 인식(NER)''': CoNLL-2003 데이터셋에서 명사(예: 사람, 장소, 조직)를 식별. * '''문장 유사도''': STS-B 데이터셋에서 두 문장의 의미적 유사도를 평가. 편집 요약 가온 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 가온 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요! 취소 편집 도움말 (새 창에서 열림)