BERT, 약어 변환기의 양방향 인코더 표현용 , 오픈 소스로 서 머신러닝 프레임워크 영역을 위해 설계되었습니다. 자연어 처리(NLP) . 2018년에 시작된 이 프레임워크는 Google AI Language 연구원이 제작했습니다. 이 기사는 다음을 탐구하는 것을 목표로합니다. BERT의 아키텍처, 작업 및 응용 .
BERT 란 무엇입니까?
BERT(변압기의 양방향 인코더 표현) 인간과 유사한 언어를 이해하고 생성하기 위해 변환기 기반 신경망을 활용합니다. BERT는 인코더 전용 아키텍처를 사용합니다. 원본에서는 트랜스포머 아키텍처 , 인코더와 디코더 모듈이 모두 있습니다. BERT에서 인코더 전용 아키텍처를 사용하기로 한 결정은 출력 시퀀스를 생성하기보다는 입력 시퀀스를 이해하는 데 중점을 두고 있음을 시사합니다.
BERT의 양방향 접근 방식
전통적인 언어 모델은 텍스트를 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 순차적으로 처리합니다. 이 방법은 모델의 인식을 대상 단어 바로 앞의 문맥으로 제한합니다. BERT는 문장 내 단어의 왼쪽과 오른쪽 문맥을 모두 고려하는 양방향 접근 방식을 사용합니다. BERT는 텍스트를 순차적으로 분석하는 대신 문장 내 모든 단어를 동시에 살펴봅니다.
예: 은행은 강의 _______에 위치해 있습니다.
단방향 모델에서 공백에 대한 이해는 앞의 단어에 크게 의존하며 모델은 은행이 금융 기관을 가리키는지 아니면 강변을 가리키는지 식별하는 데 어려움을 겪을 수 있습니다.
BERT는 양방향이므로 왼쪽(둑이 강에 있음)과 오른쪽 컨텍스트(강)를 동시에 고려하여 보다 미묘한 이해를 가능하게 합니다. 누락된 단어가 은행의 지리적 위치와 관련이 있을 가능성이 높다는 점을 이해하여 양방향 접근 방식이 제공하는 맥락적 풍부함을 보여줍니다.
사전 훈련 및 미세 조정
BERT 모델은 두 단계 프로세스를 거칩니다.
- 상황별 임베딩을 학습하기 위해 라벨이 지정되지 않은 대량의 텍스트에 대한 사전 학습입니다.
- 특정 항목에 대해 레이블이 지정된 데이터를 미세 조정합니다. NLP 작업.
대용량 데이터 사전 훈련
- BERT는 레이블이 지정되지 않은 대량의 텍스트 데이터에 대해 사전 학습되었습니다. 이 모델은 문장에서 주변 컨텍스트를 고려한 단어 표현인 컨텍스트 임베딩을 학습합니다.
- BERT는 감독되지 않은 다양한 사전 훈련 작업에 참여합니다. 예를 들어 문장에서 누락된 단어를 예측하거나(Masked Language Model 또는 MLM 작업) 두 문장 간의 관계를 이해하거나 쌍의 다음 문장을 예측하는 방법을 학습할 수 있습니다.
레이블이 지정된 데이터의 미세 조정
- 사전 훈련 단계가 끝나면 상황별 임베딩으로 무장한 BERT 모델이 특정 자연어 처리(NLP) 작업에 맞게 미세 조정됩니다. 이 단계에서는 특정 작업의 뉘앙스에 대한 일반적인 언어 이해를 조정하여 모델을 보다 대상화된 애플리케이션에 맞게 조정합니다.
- BERT는 관심 있는 다운스트림 작업과 관련된 레이블이 지정된 데이터를 사용하여 미세 조정됩니다. 이러한 작업에는 감정 분석, 질문 답변, 명명된 개체 인식 , 또는 기타 NLP 애플리케이션. 모델의 매개변수는 현재 작업의 특정 요구 사항에 맞게 성능을 최적화하도록 조정됩니다.
BERT의 통합 아키텍처를 통해 최소한의 수정으로 다양한 다운스트림 작업에 적응할 수 있으므로 다용도의 매우 효과적인 도구가 됩니다. 자연어 이해 그리고 처리.
BERT는 어떻게 작동하나요?
BERT는 언어 모델을 생성하도록 설계되었으므로 인코더 메커니즘만 사용됩니다. 일련의 토큰이 Transformer 인코더에 공급됩니다. 이러한 토큰은 먼저 벡터에 내장된 다음 신경망에서 처리됩니다. 출력은 각각 입력 토큰에 해당하는 일련의 벡터로, 상황별 표현을 제공합니다.
언어 모델을 훈련할 때 예측 목표를 정의하는 것은 어려운 일입니다. 많은 모델이 순서대로 다음 단어를 예측하는데, 이는 방향성 접근 방식이며 상황 학습을 제한할 수 있습니다. BERT는 두 가지 혁신적인 교육 전략을 통해 이러한 문제를 해결합니다.
- 마스크된 언어 모델(MLM)
- 다음 문장 예측(NSP)
1. 마스크된 언어 모델(MLM)
BERT의 사전 학습 프로세스에서는 각 입력 시퀀스의 단어 일부가 마스킹되고 모델은 주변 단어가 제공하는 컨텍스트를 기반으로 이러한 마스킹된 단어의 원래 값을 예측하도록 학습됩니다.
간단히 말해서,
- 마스킹 단어: BERT는 문장에서 학습하기 전에 일부 단어(약 15%)를 숨기고 [MASK]와 같은 특수 기호로 바꿉니다.
- 숨겨진 단어 추측하기: BERT의 임무는 주변의 단어를 보고 숨겨진 단어가 무엇인지 알아내는 것입니다. 이는 어떤 단어가 누락된 곳을 추측하는 게임과 같으며, BERT는 빈칸을 채우려고 합니다.
- BERT가 학습하는 방법:
- BERT는 학습 시스템 위에 특수 레이어를 추가하여 이러한 추측을 합니다. 그런 다음 추측한 내용이 실제 숨겨진 단어와 얼마나 가까운지 확인합니다.
- 추측을 확률로 변환하여 '나는 이 단어가 X인 것 같아, 나는 그것에 대해 이만큼 확신한다'고 말함으로써 이를 수행합니다.
- 숨겨진 단어에 특별한 주의
- 훈련 중 BERT의 주요 초점은 이러한 숨겨진 단어를 올바르게 얻는 것입니다. 숨겨져 있지 않은 단어를 예측하는 데는 덜 신경을 씁니다.
- 진짜 도전은 누락된 부분을 찾아내는 것이고, 이 전략은 BERT가 단어의 의미와 맥락을 정말 잘 이해하는 데 도움이 되기 때문입니다.
기술적인 측면에서,
- BERT는 인코더의 출력 위에 분류 레이어를 추가합니다. 이 레이어는 마스킹된 단어를 예측하는 데 중요합니다.
- 분류 레이어의 출력 벡터는 임베딩 행렬과 곱해져 어휘 차원으로 변환됩니다. 이 단계는 예측된 표현을 어휘 공간과 정렬하는 데 도움이 됩니다.
- 어휘의 각 단어가 나올 확률은 다음을 사용하여 계산됩니다. SoftMax 활성화 기능 . 이 단계에서는 마스크된 각 위치에 대한 전체 어휘에 대한 확률 분포를 생성합니다.
- 훈련 중에 사용되는 손실 함수는 마스킹된 값의 예측만 고려합니다. 모델은 예측과 마스킹된 단어의 실제 값 사이의 편차에 대해 불이익을 받습니다.
- 모델은 방향성 모델보다 느리게 수렴됩니다. 이는 훈련 중에 BERT가 마스크되지 않은 단어의 예측을 무시하고 마스크된 값 예측에만 관심이 있기 때문입니다. 이 전략을 통해 달성된 향상된 상황 인식은 느린 수렴을 보완합니다.
2. 다음 문장 예측(NSP)
BERT는 두 번째 문장이 첫 번째 문장과 연결되어 있는지 예측합니다. 이는 분류 레이어를 사용하여 [CLS] 토큰의 출력을 2×1 모양의 벡터로 변환한 다음 SoftMax를 사용하여 두 번째 문장이 첫 번째 문장을 따를 확률을 계산함으로써 수행됩니다.
- 훈련 과정에서 BERT는 두 번째 문장이 원본 문서의 첫 번째 문장 뒤에 오는지 예측하여 문장 쌍 간의 관계를 이해하는 방법을 학습합니다.
- 입력 쌍의 50%는 원본 문서의 후속 문장으로 두 번째 문장을 갖고, 나머지 50%는 무작위로 선택된 문장을 갖습니다.
- 모델이 연결된 문장 쌍과 연결되지 않은 문장 쌍을 구별하는 데 도움이 됩니다. 모델에 들어가기 전에 입력이 처리됩니다.
- 첫 번째 문장의 시작 부분에는 [CLS] 토큰이 삽입되고, 각 문장의 끝 부분에는 [SEP] 토큰이 추가됩니다.
- 각 토큰에는 문장 A 또는 문장 B를 나타내는 문장 임베딩이 추가됩니다.
- 위치 임베딩은 시퀀스에서 각 토큰의 위치를 나타냅니다.
- BERT는 두 번째 문장이 첫 번째 문장과 연결되어 있는지 예측합니다. 이는 분류 레이어를 사용하여 [CLS] 토큰의 출력을 2×1 모양의 벡터로 변환한 다음 SoftMax를 사용하여 두 번째 문장이 첫 번째 문장을 따를 확률을 계산함으로써 수행됩니다.
BERT 모델 학습 중에는 Masked LM과 Next Sentence Prediction이 함께 학습됩니다. 이 모델은 Masked LM과 Next Sentence Prediction의 결합된 손실 기능을 최소화하는 것을 목표로 하며, 문장 내의 맥락과 문장 간의 관계를 이해하는 향상된 기능을 갖춘 강력한 언어 모델로 이어집니다.
Masked LM과 다음 문장 예측을 함께 훈련해야 하는 이유는 무엇입니까?
Masked LM은 BERT가 문장 내의 맥락을 이해하고 다음 문장 예측 BERT가 문장 쌍 사이의 연결이나 관계를 파악하는 데 도움이 됩니다. 따라서 두 가지 전략을 함께 훈련하면 BERT가 문장 내의 세부 사항과 문장 사이의 흐름을 모두 캡처하여 언어에 대한 광범위하고 포괄적인 이해를 배울 수 있습니다.
BERT 아키텍처
BERT의 아키텍처는 변압기 모델과 매우 유사한 다층 양방향 변압기 인코더입니다. 변환기 아키텍처는 다음을 사용하는 인코더-디코더 네트워크입니다. 자기 관심 인코더 측에 주의를 기울이고 디코더 측에 주의를 기울이십시오.
- 버트베이스1개 있다 인코더 스택의 2개 레이어 BERT하는 동안크기가 큰가지다 인코더 스택의 24개 레이어 . 이는 원본 논문( 6개의 인코더 레이어 ).
- BERT 아키텍처(BASE 및 LARGE)에는 더 큰 피드포워드 네트워크(각각 768 및 1024 숨겨진 유닛)가 있습니다. 더 많은 관심 헤드(각각 12개 및 16개) 원본 논문에서 제안된 Transformer 아키텍처보다 그것은 포함 512개의 히든 유닛과 8개의 어텐션 헤드 .
- 버트베이스BERT는 1억 1천만 개의 매개변수를 포함합니다.크기가 큰340M 매개변수가 있습니다.

BERT BASE 및 BERT LARGE 아키텍처.
이 모델은 CLS 토큰을 먼저 입력으로 사용한 다음 일련의 단어를 입력으로 사용합니다. 여기서 CLS는 분류 토큰입니다. 그런 다음 입력을 위 레이어에 전달합니다. 각 레이어가 적용됩니다. 자기 관심 결과를 피드포워드 네트워크를 통해 전달한 후 다음 인코더로 전달합니다. 모델은 숨겨진 크기의 벡터를 출력합니다( 768 BERT BASE의 경우). 이 모델에서 분류자를 출력하려면 CLS 토큰에 해당하는 출력을 사용할 수 있습니다.

임베딩으로 BERT 출력
이제 이 훈련된 벡터를 사용하여 분류, 번역 등과 같은 여러 작업을 수행할 수 있습니다. 예를 들어 논문은 단일 레이어를 사용하여 훌륭한 결과를 얻습니다. 신경망 분류 작업의 BERT 모델에 대해
NLP에서 BERT 모델을 사용하는 방법은 무엇입니까?
BERT는 다음과 같은 다양한 자연어 처리(NLP) 작업에 사용될 수 있습니다.
1. 분류과제
- BERT는 다음과 같은 분류 작업에 사용될 수 있습니다. 감정 분석 , 목표는 텍스트를 다양한 범주(긍정적/부정적/중립)로 분류하는 것입니다. BERT는 [CLS] 토큰에 대한 Transformer 출력 상단에 분류 레이어를 추가하여 사용할 수 있습니다.
- [CLS] 토큰은 전체 입력 시퀀스에서 집계된 정보를 나타냅니다. 그런 다음 이 풀링된 표현을 분류 계층의 입력으로 사용하여 특정 작업에 대한 예측을 수행할 수 있습니다.
2. 질의 응답
- 모델이 주어진 텍스트 시퀀스 내에서 답을 찾고 표시해야 하는 질문 답변 작업에서 BERT는 이러한 목적으로 훈련될 수 있습니다.
- BERT는 답변의 시작과 끝을 표시하는 두 개의 추가 벡터를 학습하여 질문 답변을 위해 훈련되었습니다. 훈련 과정에서 모델은 질문과 그에 상응하는 지문을 제공받고, 지문 내 답변의 시작과 끝 위치를 예측하는 방법을 학습합니다.
3. 명명된 개체 인식(NER)
- BERT는 텍스트 시퀀스에서 엔터티(예: 사람, 조직, 날짜)를 식별하고 분류하는 것이 목표인 NER에 활용될 수 있습니다.
- BERT 기반 NER 모델은 Transformer에서 각 토큰의 출력 벡터를 가져와 분류 계층에 공급하여 학습됩니다. 레이어는 각 토큰에 대해 명명된 엔터티 레이블을 예측하여 해당 토큰이 나타내는 엔터티 유형을 나타냅니다.
BERT를 사용하여 텍스트를 토큰화하고 인코딩하는 방법은 무엇입니까?
BERT를 사용하여 텍스트를 토큰화하고 인코딩하기 위해 Python의 'transformer' 라이브러리를 사용합니다.
변압기 설치 명령:
!pip install transformers>
- 다음을 사용하여 사전 훈련된 BERT 토큰화를 케이스 어휘로 로드합니다. BertTokenizer.from_pretrained(bert-base-cased) .
- tokenizer.encode(텍스트) 입력 텍스트를 토큰화하고 이를 일련의 토큰 ID로 변환합니다.
- print(토큰 ID:, 인코딩) 인코딩 후 얻은 토큰 ID를 인쇄합니다.
- tokenizer.convert_ids_to_tokens(인코딩) 토큰 ID를 해당 토큰으로 다시 변환합니다.
- print(토큰:, 토큰) 토큰 ID를 변환한 후 얻은 토큰을 인쇄합니다.
파이썬3
from> transformers>import> BertTokenizer> # Load pre-trained BERT tokenizer> tokenizer>=> BertTokenizer.from_pretrained(>'bert-base-cased'>)> # Input text> text>=> 'ChatGPT is a language model developed by OpenAI, based on the GPT (Generative Pre-trained Transformer) architecture. '> # Tokenize and encode the text> encoding>=> tokenizer.encode(text)> # Print the token IDs> print>(>'Token IDs:'>, encoding)> # Convert token IDs back to tokens> tokens>=> tokenizer.convert_ids_to_tokens(encoding)> # Print the corresponding tokens> print>(>'Tokens:'>, tokens)> |
>
>
산출:
Token IDs: [101, 24705, 1204, 17095, 1942, 1110, 170, 1846, 2235, 1872, 1118, 3353, 1592, 2240, 117, 1359, 1113, 1103, 15175, 1942, 113, 9066, 15306, 11689, 118, 3972, 13809, 23763, 114, 4220, 119, 102] Tokens: ['[CLS]', 'Cha', '##t', '##GP', '##T', 'is', 'a', 'language', 'model', 'developed', 'by', 'Open', '##A', '##I', ',', 'based', 'on', 'the', 'GP', '##T', '(', 'Gene', '##rative', 'Pre', '-', 'trained', 'Trans', '##former', ')', 'architecture', '.', '[SEP]']> 그만큼 토크나이저.인코드 메소드에 특별함을 더하다 [CLS] - 분류 그리고 [SEP] – 구분 기호 인코딩된 시퀀스의 시작과 끝 부분에 있는 토큰입니다.
BERT의 적용
BERT는 다음 용도로 사용됩니다.
- 텍스트 표현: BERT는 문장의 단어에 대한 단어 임베딩 또는 표현을 생성하는 데 사용됩니다.
- 명명된 엔터티 인식(NER) : BERT는 지정된 텍스트에서 사람 이름, 조직, 위치 등과 같은 엔터티를 식별하는 것이 목표인 명명된 엔터티 인식 작업에 대해 미세 조정할 수 있습니다.
- 텍스트 분류: BERT는 감정 분석, 스팸 탐지, 주제 분류 등 텍스트 분류 작업에 널리 사용됩니다. 텍스트 데이터의 맥락을 이해하고 분류하는 데 탁월한 성능을 보여주었습니다.
- 질의 응답 시스템: BERT는 질문의 맥락을 이해하고 관련 답변을 제공하도록 모델을 훈련하는 질문 답변 시스템에 적용되었습니다. 이는 독해와 같은 작업에 특히 유용합니다.
- 기계 번역: BERT의 상황별 임베딩은 기계 번역 시스템을 개선하는 데 활용될 수 있습니다. 이 모델은 정확한 번역에 중요한 언어의 뉘앙스를 포착합니다.
- 텍스트 요약: BERT는 추상적인 텍스트 요약에 사용될 수 있습니다. 여기서 모델은 컨텍스트와 의미를 이해하여 긴 텍스트의 간결하고 의미 있는 요약을 생성합니다.
- 대화형 AI: BERT는 챗봇, 가상 비서, 대화 시스템과 같은 대화형 AI 시스템을 구축하는 데 사용됩니다. 맥락을 파악하는 능력은 자연어 응답을 이해하고 생성하는 데 효과적입니다.
- 의미적 유사성: BERT 임베딩은 문장이나 문서 간의 의미적 유사성을 측정하는 데 사용할 수 있습니다. 이는 중복 감지, 패러프레이징 식별, 정보 검색과 같은 작업에 유용합니다.
BERT 대 GPT
BERT와 GPT의 차이점은 다음과 같습니다.
| 버트 | GPT | |
|---|---|---|
| 건축학 | BERT는 양방향 표현 학습을 위해 설계되었습니다. 왼쪽 및 오른쪽 컨텍스트를 모두 기반으로 문장에서 누락된 단어를 예측하는 마스크된 언어 모델 목표를 사용합니다. | 반면 GPT는 생성적 언어 모델링을 위해 설계되었습니다. 단방향 자기회귀 접근법을 활용하여 이전 컨텍스트가 주어지면 문장의 다음 단어를 예측합니다. |
| 사전 훈련 목표 | BERT는 마스크된 언어 모델 목표와 다음 문장 예측을 사용하여 사전 학습되었습니다. 양방향 맥락을 포착하고 문장 내 단어 간의 관계를 이해하는 데 중점을 둡니다. | GPT는 문장의 다음 단어를 예측하도록 사전 학습되어 모델이 일관된 언어 표현을 학습하고 상황에 맞게 관련 시퀀스를 생성하도록 장려합니다. |
| 맥락 이해 | BERT는 텍스트 분류, 명명된 엔터티 인식, 질문 답변 등 문장 내 컨텍스트와 관계에 대한 깊은 이해가 필요한 작업에 효과적입니다. | GPT는 일관되고 상황에 맞는 텍스트를 생성하는 데 강력합니다. 창의적인 작업, 대화 시스템, 자연어 시퀀스 생성이 필요한 작업에 자주 사용됩니다. |
| 작업 유형 및 사용 사례
| 텍스트 분류, 명명된 엔터티 인식, 감정 분석, 질문 답변과 같은 작업에 일반적으로 사용됩니다. | 텍스트 생성, 대화 시스템, 요약, 창의적 글쓰기 등의 작업에 적용됩니다. |
| 미세 조정과 Few-Shot 학습 | BERT는 사전 훈련된 표현을 현재 작업에 맞게 조정하기 위해 레이블이 지정된 데이터를 사용하여 특정 다운스트림 작업에 대해 미세 조정되는 경우가 많습니다. | GPT는 최소한의 작업별 훈련 데이터를 사용하여 새로운 작업으로 일반화할 수 있는 소수 학습을 수행하도록 설계되었습니다. |
또한 확인하십시오:
- BERT를 사용한 감정 분류
- BERT를 사용하여 단어 임베딩을 생성하는 방법은 무엇입니까?
- NLP의 텍스트 자동 완성을 위한 BART 모델
- BERT를 이용한 악성댓글 분류
- BERT를 이용한 다음 문장 예측
자주 묻는 질문(FAQ)
Q. BERT는 어떤 용도로 사용되나요?
BERT는 텍스트 표현, 명명된 엔터티 인식, 텍스트 분류, Q&A 시스템, 기계 번역, 텍스트 요약 등과 같은 NLP 작업을 수행하는 데 사용됩니다.
Q. BERT 모델의 장점은 무엇인가요?
BERT 언어 모델은 여러 언어에 대한 광범위한 사전 학습으로 인해 눈에 띄며 다른 모델에 비해 광범위한 언어 적용 범위를 제공합니다. 이는 BERT가 다양한 언어에 걸쳐 강력한 문맥 표현과 의미론적 이해를 제공하여 다국어 애플리케이션의 다양성을 향상시키기 때문에 영어가 아닌 기반 프로젝트에 특히 유리합니다.
Q. BERT는 감정 분석에 어떻게 작동하나요?
BERT는 양방향 표현 학습을 활용하여 주어진 텍스트 내의 문맥적 뉘앙스, 의미론적 의미 및 구문 구조를 포착함으로써 감정 분석에 탁월합니다. 이를 통해 BERT는 단어 간의 관계를 고려하여 문장에 표현된 감정을 이해할 수 있어 매우 효과적인 감정 분석 결과를 얻을 수 있습니다.
자바스크립트 수면
Q. Google은 BERT를 기반으로 하나요?
버트 그리고 순위뇌 검색 결과를 개선하기 위해 더 나은 이해를 얻기 위해 쿼리 및 웹 페이지 콘텐츠를 처리하는 Google 검색 알고리즘의 구성 요소입니다.