일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- git
- @Autowired
- @Component
- spring boot
- Nodejs
- 가상면접사례로배우는대규모시스템설계기초
- 코딩테스트
- 파이썬
- 카카오
- 해시
- 코테
- nestjs typeorm
- Spring
- nestJS
- 카카오 알고리즘
- python
- nestjs auth
- OpenCV
- thymeleaf
- 알고리즘
- 프로그래머스
- C++
- TypeORM
- AWS
- C언어
- 카카오 코테
- 구조체배열
- 컴포넌트스캔
- 스프링
- 시스템호출
- Today
- Total
공부 기록장 💻
[NLP기초] 트랜스퍼 러닝이란? Transfer Learning 본문
"Do It! BERT와 GPT로 배우는 자연어처리" 1장 정리
학습 목표
해당 책에서 소개하는 자연어 처리 모델의 학습 방법은 전이 학습(Transfer Learning)이다. Pre-train, Fine Tuning 등 트랜스퍼 러닝과 관련된 개념을 이해해보도록 하자.
Transfer Learning
트랜스퍼 러닝(Transfer Learning) 이란, 특정 태스크를 학습한 모델을 다른 태스크 수행에 재사용하는 기법을 가리킨다. 사람이 새로운 지식을 배울 때, 그간 평생 쌓아왔던 지식을 요긴하게 다시 써먹는 것과 같다.
아래와 같이 태스크 2를 수행하는 모델을 만든다고 가정해볼 때 트랜스퍼 러닝이 도움이 될 수 있다. 모델이 태스크 2를 배울 때 태스크 1을 수행했던 경험을 재활용하기 때문이다.
Transfer Learning의 이점은?
Transfer Learning을 적용하면 기존보다 모델의 학습 속도가 빨라지고 새로운 태스크를 더 잘 수행하는 경향이 있다. 이 때문에 트랜스퍼 러닝은 최근 널리 쓰이고 있는데, BERT와 GPT 등도 트랜스퍼 러닝이 적용된 모델이다.
위의 그림에서 태스크 1은 upstream task(업스트림 태스크)라고 부르고, 태스크 2는 downstream task(다운스트림 태스크)라고 부른다. upstream task는 다음 단어 맞히기, 빈칸 채우기 등 대규모 말뭉치의 문맥을 이해하는 과제가 있을 수 있고, downstream task는 문서 분류, 개체명 인식 등 우리가 풀고자 하는 자연어 처리의 구체적인 문제들이다.
upsteam task를 학습하는 과정을 pre-train(프리트레인) 이라 부르며, 이는 downstream task를 본격적으로 수행하기에 앞서 학습한다는 의미이다.
Upstream Task
Trasnfer Learning이 주목받게 된 것은 upstream task와 pretrain 덕분이다. 자연어의 풍부한 문맥(context)를 모델에 내재화하고 이 모델을 다양한 downstream task에 적용해 성능을 대폭 끌어올리게 된 것이다.
업스트림 태스크의 대표 과제로는 1. 다음 단어 맞히기와 2. 빈칸 단어 채우기가 있다.
1. 다음 단어 맞히기
대표적인 upstream task 가운데 하나가 다음 단어 맞히기이다. GPT 계열 모델이 바로 이 태스크로 pre-train을 수행한다. 아래와 같이 티끌 모아 문맥이 주어졌고 학습 데이터 말뭉치에 티끌 모아 태산 이라는 구(phrase)가 많다고 하면, 모델은 이를 바탕으로 다음에 올 단어를 태산 으로 분류하도록 학습된다.
모델이 대규모 말뭉치를 바탕으로 학습을 반복 수행하게 되면, 이전 문맥을 고려했을 때 어떤 단어가 그 다음에 오는 것이 자연스러운지 알 수 있게 된다. 다시 말해 해당 언어의 풍부한 문맥을 이해할 수 있게 되는데, 이처럼 다음 단어 맞히기로 upstream task를 수행한 모델을 언어 모델(language model)이라 한다.
감성 분석의 경우 분류해야 할 범주의 수가 긍정, 중립, 부정으로 3개 뿐이지만,
언어 모델에서는 학습 대상 언어의 어휘 수(보통 수만 개 이상)만큼 늘어난다. 예를 들어 티끌 모아 다음 단어의 정답이 태산 이라면, 태산 이라는 단어에 해당하는 확률을 높이고, 나머지 단어들의 확률은 낮추는 방향으로 모델 전체를 업데이트 하게 된다.
2. 빈칸 채우기
또 다른 upstream task로 빈칸 채우기가 있으며, BERT 계열 모델이 바로 이 태스크로 pre-train을 수행한다. 아래와 같이 빈칸을 만들고 해당 위치에 들어갈 단어가 무엇인지 맞히는 과정에서 학습이 된다.
모델이 많은 양의 데이터를 가지고 빈칸 채우기를 반복 학습하면 앞뒤 문맥을 보고 빈칸에 적합한 단어를 알 수 있다. 이처럼 빈칸 채우기로 업스트림 태스크를 수행한 언어 모델을 마스크 언어 모델(masked language model) 이라 한다.
마스크 언어 모델의 학습 역시 언어 모델과 비슷한다. 위 문제의 빈칸 정답이 모아 라면 모아 라는 단어에 해당하는 확률을 높이고 나머지 단어와 관계된 확률을 낮추는 방향으로 모델 전체를 업데이트 하게 된다.
감성 분석 모델 학습의 경우 사람이 일일히 정답(레이블)을 단 학습 데이터를 훈련 시키는 학습 방법을 지도 학습(supervised learning) 라고 한다. 이는 데이터를 만드는 데 많은 비용이 들며, 실수로 잘못된 레이블을 달게 될 수도 있다.
이에 반해 다음 단어 맞히기, 빈칸 채우기와 같은 업스트림 태스크는 뉴스, 웹 문서, 백과사전 등 글만 있으면 수작업 없이도 다량의 학습 데이터를 적은 비용으로 만들어 낼 수 있다. 덕분에 upstream task를 수행한 모델은 성능이 기존보다 월등이 좋아졌다. 이처럼 데이터 내에서 정답을 만들고 이를 바탕으로 모델을 학습하는 방법을 자기지도 학습(self-supervised learning) 이라고 한다.
Downstream Task
위에서 살펴본 upstream task로 pre-train 한 근본적인 이유는 dwonstream task를 잘하기 위해서이다.
downstream task는 우리가 풀어야 할 자연어 처리의 구체적인 과제들이다. 보통 dwonstream task는 pre-train을 마친 모델을 구조 변경 없이 그대로 사용하거나, 여기에 태스크 모듈을 덧붙인 형태로 수행한다.
이 책에서 소개하는 downstream task의 본질은 분류(classification) 이다. 다시 말해 자연어를 입력 받아 해당 입력이 어떤 범주에 해당하는지 확률 형태로 반환하는 것이다. 문장 생성을 제외한 대부분의 과제에서는 pre-train을 마친 마스크 언어 모델 중 하나인 BERT 계열을 사용하게 된다.
이 책에서 설명하는 downstream task의 학습 방식은 모듀 파인튜닝(Fine Tuning) 이다. 이는 pre-train을 마친 모델을 downstream task에 맞게 업데이트하는 기법이다. 예를 들어 문서 분류를 수행할 경우 pre-train을 마친 BERT 모델 전체를 문서 분류 데이터로 업데이트를 한다. 마찬가지로 개체명 인식을 수행한다면 BERT 모델 전체를 해당 데이터로 업데이트하게 된다.
1. 문서 분류
문서 분류 모델은 자연어(문서나 문장)를 입력 받아 해당 입력이 어떤 범주(긍정, 중립, 부정 등)에 속하는지 그 확률값을 반환한다.
위의 그림에서 pre-train을 마친 마스크 언어 모델(노란색 실선 박스) 위에 작은 모듈(초록색 실선 박스)을 하나 더 쌓아 문서 전체의 범주를 분류한다. CLS, SEP는 각각 문장의 시작과 끝에 붙이는 특수한 토큰이다.
2. 자연어 추론
자연어 추론 모델은 문장 2개를 입력 받아 두 문장 사이의 관계가 참(entrailment), 거짓(contradiction), 중립(neutral) 등 어떤 범주인지 그 확률 값을 반환한다.
마찬가지로 pre-train을 마친 마스크 언어 모델에 작은 모듈을 하나 더 쌓아 두 문장의 관계 범주를 분류한다.
3. 개체명 인식
개체명 인식 모델은 자연어를 입력 받아 단어별로 기관명, 인명, 지명 등 어떤 개체명 범주에 속하는지 그 확률 값을 반환한다.
4. 질의응답
질의응답 모델은 자연어(질문+지문)을 입력 받아 각 단어가 정답의 시작일 확률값과 끝일 확률 값을 반환한다.
마스크 언어 모델 위에 단어별로 작은 모듈을 쌓아 전체 단어 가운데 어떤 단어가 시작(초록색 실선 박스)인지 끝(붉은색 실선 박스)인지 분류한다.
5. 문장 생성
문장 생성 모델은 GPT 계열 언어 모델이 널리 쓰인다. 자연어를 입력 받아 어휘 전체에 대한 확률값을 반환한다. 이 확률 값은 입력된 문장 다음에 올 단어로 얼마나 적절한지를 나타내는 점수이다.
pre-train을 마친 언어 모델을 구조 변경 없이 그대로 사용하여, 문맥에 이어지는 적절한 다음 단어를 분류하는 방식이다.
위에서 언급된 문서 분류, 자연어 추론, 질의응답, 문장 생성 모델은 모두 파인 튜닝 방식으로 학습한다. 다운 스트림 태스크를 학습하는 방식은 파인튜닝 외에도 다양한데, 크게 prompt tuning, in-context learning 방식도 있다.
학습 방식의 종류
Fine Tuning
downstream task 데이터 전체를 사용하여, 다운스트림 데이터에 맞게 모델 전체를 업데이트
Prompt Tuning
downstream task 데이터 전체를 사용하여, 다운스트림 데이터에 맞게 모델 일부만 업데이트
In-Context Learning
downstream task 데이터 일부만 사용하고, 모델을 업데이트 하지 않음
최근 언어 모델의 크기가 기하급수적으로 커지고 있으며, Fine tuning 방식으로 모델 전체를 업데이트 하는데 많은 비용이 든다. 따라서 Prompt tuning, In-context Learning 으로 학습한 모델이 경쟁력 있는 태스크 수행 성능을 보일 때가 많다.
In-context Learning의 방식
Zero-shot Learning
downstream task 데이터를 전혀 사용하지 않음. 모델이 바로 dwonstream task를 수행
One-shot Learning
downstream task 데이터를 1건만 사용. 모델이 1건의 데이터가 어떻게 수행되는지 참고한 뒤 downstream task를 수행
Few-shot Learning
downstream task 데이터를 몇 건만 사용. 몇 건의 데이터가 어떻게 수행되는지 참고한 뒤 downstream task를 수행
'# Tech Studies > NLP' 카테고리의 다른 글
[NLP기초] 모델 학습의 파이프라인 (0) | 2022.12.28 |
---|---|
[NLP기초] 딥러닝 기반 자연어 처리 모델이란? (0) | 2022.12.28 |