티스토리 뷰

728x90

[ 밑줄/연결 ]

 

트랜스퍼 러닝(Transfer Learning)이란 특정 태스크를 학습한 모델을 다른 태스크 수행에 재사용하는 기법을 가리킵니다. 비유하자면 사람이 새로운 지식을 배울 때 그가 평생 쌓아왔던 지식을 요긴하게 다시 써먹는 것과 같습니다.

 

(문장 생성)

GPT 계열 언어 모델이 널리 쓰입니다. 자연어(문장)을 입력받아 어휘 전체에 대한 확률값을 반환합니다. 이 확률 값은 입력된 문장 다음에 올 단어로 얼마나 적절한지를 나타내는 점수입니다.

 

(학습 파이프라인)

(1. 각종 설정값 정하기)

어떤 Pre-Train 모델을 사용할지, 학습에 사용할 데이터는 무엇인지, 학습 결과는 어디에 저장할지 등....

하이퍼파라미터(Hyperparameter) 역시 미리 정해둬야 하는 중요한 정보입니다.  하이퍼파라미터란 모델 구조와 학습 등에 직접 관계된 설정값을 가리킵니다. 예를 들어 Learning rate, 배치 크기 등이 있습니다. 

 

(2. 데이터 내려받기)

프리트레인을 마친 모델을 다운스트림 데이터로 파인튜닝하려면 미리 내려 받아 둬야 합니다. 

 

(3. 프리트레인 마친 모델 준비하기)

대규모 말뭉치를 활용한 프리트레인에는 많은 리소스가 필요합니다.

미국 자연어 처리 기업 허깅페이스(huggingface)에서만든 트랜스포머라는 오픈소스 파이썬 패키지에 주목해야 합니다. 

BERT, GPT 같은 트랜스포머 계열 모델로 실습을 진행하는데, 이 패키지를 쓰면 단 몇 줄만으로 모델을 사용할 수 있습니다. 

 

(4. 데이터 로더 준비하기)

파이토치는 딥러닝 모델의 학습을 지원하는 파이썬 라이브러리입니다. 

파이토치로 딥러닝 모델을 만들려면 이 데이터로더를 반드시 정의해야 합니다. 

데이터 로더는 데이터를 배치단위로 모델에 밀어 넣어주는 역할을 합니다. 전체 데이터 가운데 일부 인스턴스를 뽑아 배치를 구성합니다.

 

자연어 처리 모델의 입력은 토큰 시퀀스로 분석된 자연어입니다. 더 정확하게는 각 토큰이 그에 해당하는 정수로 변환된 형태입니다. 자연어 처리 모델은 계산 가능한 형태, 즉 숫자 입력을 받는다는 이야기입니다. 각 토큰을 그에 해당하는 정수로 변화하는 과정을 인덱싱이라고 합니다. 인덱싱은 보통 토크나이저가 토큰화와 함께 수행합니다. 

 

(5. 테스크 정의하기)

모델 학습을 할 때 파이토치 라이트닝이라는 라이브러리를 사용합니다.....딥러닝 모델을 학습할 때 반복적인 내용을 대신 수행해줘 사용자가 모델 구축에만 신경쓸 수 있도록 돕는 라이브러리입니다.

 

task에는 모델과 최적화 방법, 학습 과정 등이 정의돼 있습니다. 최적화란 특정 조건에서 어떤 값이 최대나 최소가 되도록 하는 과정을 가리킵니다. 

 

모델 학습은 배치 단위로 이루어입니다. 배치를 모델에 입력한 뒤 모델 출력을 정답과 비교해 차이를 계산합니다. 이후 그 차이를 최소화하는 방향으로 모델을 업데이트합니다. 이 일련의 순환 과정을 스텝이라고 합니다.

 

(6. 모델 학습하기)

트레이너는 파이토치 라이트닝에서 제공하는 객체로 실제 학습을 수행합니다. 이 트레이너는 GPU 등 하드웨어 설정, 학습 기록 로깅, 체크포인트 저장 등 복잡한 설정들을 알아서 해줍니다. 

 

BERT, GPT 따위의 부류는 프리트레인(미리 학습된) 언어 모델이라는 공통점이 있습니다. 

 

(언어 모델)

단위 시퀀스에 확률을 부여하는 모델입니다. 단어 시퀀스를 입력받아 해당 시퀀스가 얼마나 그럴듯한지 확률을 출력하는 모델입니다. 따라서 한국어 말뭉치로 학습한 언어 모델은 자연스러운 한국어 문장에 높은 확률값을 부여합니다. 어떤 문장이 한국어스러운지 해당 모델이 이해하고 있다는 것이죠.

 

잘 학습된 모델 한국어 모델이 있다면 P(무모, 운전)보다는 P(난폭, 운전)이 큰 확률값을 지닐 겁니다.

(트랜스포머)

2017년 구글이 제안한 시퀀스-투-시퀀스 모델입니다. 

 

(시퀀스-투-시퀀스)

트랜스포머란 기계 번역 등 시퀀스-투-시퀀스 과제를 수행하는 모델입니다.

시퀀스란 단어 같은 무언가의 나열을 의미하는데요. 시퀀스-투-시퀀스는 특정 속성을 지닌 시퀀스를 다른 속성의 시퀀스로 변환하는 작업을 가리킵니다. 

(셀프 에텐션, Self-Attention)

트랜스포머 구조에서 멀티헤드 어텐션은 셀프 에텐션이라고도 불립니다. 트랜스포머 경쟁력의 원천은 셀프 에텐션에 있다고들 하는데요. 

어텐션은 시퀀스 입력에서 수행하는 기계학습 방법의 일종인데요. 에텐션은 시퀀스 요소 가운데 중요한 요소에 집중하고 그렇지 않은 요소는 무시해 태스크 수행 성능을 끌어 올립니다. 

 

셀프 에텐션이란, 말 그대로 자신에게 수행하는 에텐션 기법입니다. 입력 시퀀스 가운데 테스크 수행에 의미 있는 요소들 위주로 정보를 추출한다는 뜻이죠. 

(BERT와 GPT)

GPT는 언어 모델입니다. 이전 단어들이 주어졌을 때 다음 단어가 무엇인지 말하는 과정에서 프리트레인합니다. 문장 왼쪽부터 오른쪽으로 순차적으로 계산한다는 점에서 일방향입니다. 

BERT는 마스크 언어 모델입니다. 문장 중간에 빈칸을 만들과 해당 빈칸에 어떤 단어가 적절할지 맞히는 과정에서 프리트레인합니다. 빈칸 앞뒤 문맥을 모두 살필 수 있다는 점에서 양방향 성격을 가집니다. 

 

이 때문에 GPT는 문장 생성에,  BERT는 문장의 의미를 추출하는 데 장점을 지닌 것으로 알려져 있습니다. 

(문장 생성 모델 훑어 보기)

이전 단어드르 즉 컨텍스트가 주어졌을 때 다음 단어로 어떤 단어가 오는 게 적절한지 분류하는 것입니다.

문장 생성 과정에서 모델의 입력은 컨텍스트, 출력은 컨텍스트 다음 토큰의 등장 확률이 됩니다.

 

[ 자평 ]  잘 썼다. 개발자거나 조금 더 젋다면 코드까지 한 번 쳐서 돌려 볼텐데.... 개념과 흐르만 이해했다. 

 

저자의 전작에 너무 좋은 인상이 있다.

다만 개발자가 아니기 때문에 필요한 부분만 훑어 읽었다.

댓글