Priceless

[RL] Do it 강화 학습 입문 5장 - 영화 <아이언맨>의 자비스 만들기 본문

AI/RL

[RL] Do it 강화 학습 입문 5장 - 영화 <아이언맨>의 자비스 만들기

Hyun__ 2024. 7. 30. 17:43

5-1. 자연어 처리가 뭐죠?

컴퓨터는 사람의 언어를 어떻게 표현할까?

자연어: 사람이 사용하는 언어

기계어: 컴퓨터가 사용하는 언어

 

비트로 표현하는 자연어

컴퓨터가 표현하는 2진수를 비트(bit)라 한다

영어는 알파벳 하나씩 나열하므로 비트로 나타내기 편하다

한글은 2진수로 나타내기에는 경우의 수가 매우 많아 담기 어렵다

예) a: 10000001, 삵: ...?

 

그래서 우선 영어 기준으로 설명한다

 

'A'를 10000001, 'B'를 10000010과 같이

자연어를 기계어로 변환하는 과정을 문자 인코딩이라 한다

기계어를 자연어로 바꾸는 과정을 문자 디코딩이라 한다

 

문자 인코딩 방식

아스키 코드가 대표적

유니코드 2.0은 한글도 표현할 수 있다

 

5-2. 자연어 처리 기법

정형 데이터

컴퓨터가 이해하기 위한 정형 데이터

비정형 데이터인 사람 손글씨를 컴퓨터가 이해하기 위해 이미지를 픽셀 단위로 쪼개서 정형 데이터로 만들듯이

자연어 또한 컴퓨터가 이해하기 위한 의미를 부여해야 한다

 

단어 주머니 모델로 시작하는 의미 부여

핵심 요지는 '어떻게 하면 이 데이터를 컴퓨터에 입력시킬 수 있는가'이다

 

단어 전처리

- 코퍼스: 자연어 처리를 위한 텍스트 데이터

- 토큰화: 코퍼스를 일정 분석 단위로 나눈다.

영어는 띄어쓰기 기준으로 나누고 한글은 명사 등과 같이 복잡하게 구분한다

- 불용어: 'the', 'a(n)', 'about'과 같이 조사와 같은 단어를 제거하기도 한다

- 표제어 추출: '공부하다'라는 표제어를 통해 '공부했다', '공부하는 중이다', '공부했었다'와 같이 나타낼 수 있으므로

표현의 원형이 무엇인지 알아야 한다

- 어간 추출: 단어의 원형이 아닌 단어의 어간을 찾는다

'공부'를 찾는 것과 같이 'stud'를 찾아 'study', 'studing', 'studied'를 찾기 수월하게 한다

 

단어 세기 전략

단어를 우선 세고 해석은 사람이 하는 아이디어로 단어 주머니 모델이라 한다

단어 주머니 모델은 텍스트를 단어 단위로 쪼갠 후 각각 몇 번 나왔는지 센다

자주 사용하는 단어만 파악해도 텍스트의 의미를 해석할 수 있다

단어 빈도 분석과 관계성 기반으로 접근하는 두 가지 방법이 있다

 

빈도 분석 접근: TF-IDF

글에서 빈도가 가장 높은 단어를 파악하면 글을 다 읽지 않아도 어떤 주제를 다루는지 추측할 수 있다

 

특정 단어가 한 글에서만 빈도가 높다고 해서 항상 그 단어가 핵심 내용을 의미하지 않는다

이 점을 고려하여 이 단어를 제외하고 글을 분석한다면 주제를 더욱 쉽게 찾을 수 있다

이러한 기법을 TF-IDF(term frequency- inverse document frequency)라 한다

 

과정

1. 고빈도 단어 추출: 기자, 오늘, 현장, 사과, 풍년, 인터뷰, 농민, 수확...

2. 다른 문서에도 등장하는 단어 삭제: 기자, 오늘, 현장, 인터뷰...

3. 다시 추출한 고유한 고빈도 단어: 사과, 풍년, 농민, 수확

4. 문제 풀이: 사과가 풍년

 

빈도 분석 접근: 감성 분석

화자의 심정을 맞추는 문제이다

긍정 정도와 부정 정도를 정수로 나타낼 수 있다

 

과정

1. 미리 정의한 긍정어 사전에서 긍정어 추출: 적당한(+1), 풍년(+4), 반가운(+1), 좋아서(+1)...

2. 미리 정의한 부정어 사전에서 부정어 추출: 피해(-1), 다치다(-1)...

3. 종합 감정 점수 도출: 1+4+1+1-1-1=5

4. 판단 기준과 비교: 5점 이상이면 긍정, -5 이하이면 부정, 그 사이면 중립으로 판단

5. 문제 풀이: 5점 이상이므로 긍정적으로 판단

 

관계성 기반 접근: 워드투벡터

빈도 외에 다양한 정보를 수치화하여 분석한다

예를 들어 빈도수가 높은 단어 주변에 있는 단어에 가중치를 주거나

특정 단어 중심으로 최대 몇 단어까지 볼 것인지 정하는 방법 등이 있다

 

워드투벡터는 두가지 방법이 있다

 

CBoW 방식은 주변 단어로 빈칸에 들어갈 단어를 추론하며

특정 단어를 중심으로 의미 거리가 얼마나 떨어져 있는지 알아본다

스킵그램 방식은 주어진 단어를 중심으로 주변 빈칸을 추론한다

 

두 방식 모두 특정 단어의 앞뒤를 살펴보는데,

문장의 빈칸에 넣어도 어색하지 않은 단어는 의미가 가깝다고 설정한다

 

글자 단위로 학습시킬 수 있는 GPT

OpenAI가 발표한 GPT-2는 텍스트에 별다른 전처리 과정을 거치지 않아도 

글자 단위로 학습이 가능하다

사람처럼 언어를 구사하기 위해 사람의 말을 그대로 받아들여 학습한다

 

5-3. GPT로 알아보는 자연어 처리와 강화 학습

GPT-1

GPT-1은 OpenAI가 공개한 논문에서 공개한 모델이다

 

먼저 아주 많은 데이터를 비지도 학습으로 학습시켜 언어 모델을 만든다

이를 다중 레이어 트랜스포머 디코더(이하 트랜스포머)라 한다

 

다음 수행하는 작업에 맞게 라벨링을 한 데이터를 통해 지도 학습으로 추가로 학습한다

이를 파인 튜닝이라 한다

 

GPT-2

GPT-1의 트랜스포머 쪽 사전 학습 모델의 크기를 100배 이상 크게 하여

어지간한 작업은 파인 튜닝을 하지 않아도 다른 모델보다 뛰어났다

GPT-1의 트랜스포머는 약 1억 2천만 개의 파라미터, GPT-2는 150억 개의 파라미터이다

 

특징은 제로샷 러닝으로 입력값으로 주어진 예시가 없으며,

해야 하는 작업의 명세만으로 다른 작업에 기존 모델을 그대로 사용한다

 

크라우드 소싱으로 GPT-2에 구현한 강화 학습

사람의 수동 분류를 통해 분류 결과를 제공하고

보상 모델을 훈련한다

 

5-4. GPT로 자비스 만들기

추후 진행

 

5-5. GPT-3와 강화 학습의 미래

GPT-3는 GPT-2에서 트랜스포머 레이어의 어텐션 패턴을 다르게 한 것을 빼고 같은 구조이다

모델 규모는 2,600억 개의 토큰을 학습하면서

1,750억 개의 파라미터와 96개의 레이어로 구성된 매우 큰 모델이다

 

GPT-3는 과적합 문제를 어떻게 해결했을까

샘플의 수가 일정 크기 이상으로 커지면서 과적합 문제가 자연스럽게 해결되었다

트랜스포머 임베딩 차원에 따른 손실값 그래프에서 일정 이상부터는 과적합 문제가 나타나지 않았다

"완벽한 암기는 이해와 구분할 수 없다"

 

GPT-3의 특징은 퓨샷 러닝과 원샷 러닝이다

퓨샷 러닝은 기존 모델에 입력값 몇 개를 예시로 해서 다른 작업을 수행하도록 학습시키는 방법이고

원샷 러닝은 기존 모델에 하나의 입력값을 예시로 해서 다른 작업을 수행하도록 학습시키는 방법이다

 

퓨샷 러닝과 범용 인공지능

퓨샷 러닝, 제로샷 러닝, 원샷 러닝을 비교했을 때

GPT-3의 퓨샷 러닝이 가장 뛰어난 정확도를 보였다

 

퓨샷 러닝은 입력으로 주어진 몇 가지 예시와 태스크 정보르 수행해야 할 작업을 파악한다

이 과정을 언어 모델의 메타 러닝(language model meta learning)이라 한다

각 태스크마다 어떤 응답을 주어야 할지 파악하는 과정을 맥락 정보 학습(in-context learning)이라 한다

맥락 정보 학습을 통해 주어진 질문과 약간의 정보만으로 해야 할 일을 스스로 판단하기 시작했다

 

GPT-3 API 사용하기

추후 진행