김진중(골빈해커)님의 '최고의 프롬프트 엔지니어링 강의'를 읽고 정리한 글입니다.
0. 소프트웨어의 발전
소프트웨어는 데이터와 알고리즘, 두 가지로 구성
소프트웨어 1.0: 데이터를 알고리즘으로 조작해서 결과를 도출하는 방식
소프트웨어 2.0: 데이터를 학습시킨 머신러닝 모델을 만들고, 이 모델을 통해 결과를 도출하는 방식
소프트웨어 3.0: 머신러닝 모델을 프롬프트로 제어하는 것
소프트웨어 1.0은 결정론적인 방법 → 입력값에 대해 항상 동일한 출력값 반환
소프트웨어 2.0은 머신러닝 모델이 상황에 맞게 스스로 논리 구조를 생성하는 비결정론적 방법
프로그래밍 = 컴퓨터와 상호작용하는 방법
프롬프트 엔지니어링 = 자연어로 컴퓨터와 상호작용하는 방법
1. AI의 구분
AI는 규칙 기반 AI와 머신러닝으로 구분
규칙 기반 AI
바나나가 어떤 특징을 가지고 있는지 먼저 알려주는 것
머신 러닝
먼저 바나나 사진을 보여주고 이게 바나나라고 알려주는 것. 그리고 AI는 바나나의 특징을 직접 추출하고 기억
레이블링: 사람이 “이게 바나나야”라고 알려 주는 것
지도 학습(Supervised Learning)
AI가 레이블링한 데이터를 학습하는 것
→ 사람이 AI에게 명확한 지시와 가이드라인을 제공하여 학습시키는 방법
비지도 학습(Unsupervised Learning)
이것이 바나나라고 알려주지 않고, 사진을 먼저 보여주고, AI가 먼저 특징을 파악하는 방식
딥러닝
인공 신경망을 학습시키는 방법으로, 사람의 뇌 작동 방식을 모방해서 만든 기술
입력값(X)을 가져오면 가중치(W)를 곱한 값을 출력(Y)해 다양한 방법으로 계속 연결
‘신선한 바나나’의 척도가 되는 조건에는 높은 가중치, 그렇지 않은 조건에는 낮은 가중치를 적용하는 방식
딥러닝 사람이 먼저 입력할 데이터를 변환하는 추출하는 ‘피처 엔지니어링’ 과정이 전통적인 머신 러닝에 비해 적게 필요하다.
전통적인 머신 러닝과 딥러닝의 차이
전통적인 머신 러닝
원시 데이터 → 피처 엔지니어링 → 피처 → 전통적인 머신 러닝 모델 → 출력
딥러닝
원시 데이터 → 뉴럴넷 기반 학습(딥러닝) → 출력
딥러닝은 극도로 많은 데이터를 기반으로 AI 모델을 만든다.
→ 데이터의 특징을 표현하는 뉴런과 층을 수없이 많이 쌓는다.
대규모 언어 모델(LLM)은 수십억에서 수조 개 이상의 많은 뉴런을 가진 신경망에 방대한 자연어 데이터를 학습시키는 모델
2. LLM(Large Language Model)
대규모 언어 모델
인터넷상에서 축적되어 디지털화된 방대한 양의 텍스트 데이터를 학습하여 인간처럼 텍스트를 생성하고 이해할 수 있는 인공지능(머신 러닝) 프로그램
2018년에 개발된 BERT가 LLM의 시초격인 모델
→ 구글에서 개발한 인공 신경망 구조인 트랜스포머가 BERT와 GPT를 만든 기반 기술
트랜스포머 모델의 셀프 어텐션 메커니즘: 문장 내 단어들 간의 관계를 학습하여 중요한 정보에 더 많은 가중치를 두고 집중하도록 만드는 기술
ex) “This movie was not bad at all”에서 ‘not’과 ‘bad’ 사이의 관계를 이해하여 이 두 단어가 긍정적인 의미임을 파악
ChatGPT의 출시
2022년 초 OpenAI에서 ‘InstructGPT’라는 GPT-3의 개량판 출시
→ Instruct Data와 RLHF(Reinforcement Learning from Human Feedback) 사용
Instruct Data
지시와 결과의 쌍으로 되어 있는 데이터로, 이를 학습시켜 사용자가 제공하는 지시에 더 잘 응답하도록 최적화하는 것
RLHF(Reinforcement Learning from Human Feedback)
GPT-3가 만들어 낸 결과를 사람이 평가하게 한 다음 그 평가 점수와 수정된 내용을 기반으로 스스로가 다시 학습하도록 한 방식
그리고 이 기술들을 활용한 ChatGPT가 출시되자, 세상이 바뀌기 시작했다.
자기회귀 모델(Autoregressive model)
이전 결과를 바탕으로 다음 단어 예측을 반복하는 것
트랜스포머의 원리는 순서대로 나열된 여러 텍스트에서 각 단어가 텍스트 내의 어떤 단어에 집중하는지 분석하고 이해한 뒤, 앞선 텍스트의 맥락에 맞춰서 다음 단어를 생성하는 방식
→ Attention Mechanism(어텐션 메커니즘)
모델의 크기를 키울수록, 새로운 기능이 추가되었다.
(최근에는 모델의 크기를 키우는 것보다 양질의 데이터를 최대한 더 많이 넣는 것이 추세)
3. LLM 성능을 향상시킨 주요 기술
코드 데이터 학습
정형 데이터: 주소록이나 회원 정보와 같이 특정 형식이나 구조를 가진 데이터
비정형 데이터: 소셜 미디어 게시글이나 프로그램 코드 등 정해진 형식이나 구조가 없는 데이터
LLM은 비정형 데이터를 정형 데이터로, 정형 데이터를 비정형 데이터로 변환할 수 있는 능력이 중요
프로그래밍 언어로 된 코드 데이터를 학습시켰더니 코드 생성 능력은 물론 추론 능력 또한 상승
인스트럭션 튜닝(Instruction Tuning)
명령이나 지시 형태로 표현된 텍스트를 이해한 뒤 해당 작업을 수행하는 것
→ 대량의 텍스트를 학습한 기본 모델을 만든 후 지시와 결과물의 쌍으로 된 인스트럭트 데이터를 학습시켜서 튜닝
인스트럭션 튜닝을 통해 모델이 사람의 명령을 이해하고 그에 맞는 텍스트를 생성하는 방식이 가능해짐
RLHF
위에 언급되었다시피, GPT가 생성한 결과를 사람이 평가해서 점수를 주거나 결과를 수정하고, 이후사람이 평가한 내용을 바탕으로 스스로 다시 학습하도록 만드는 기술
→ 모델 자가 학습의 기반
→ 윤리적 가이드라인을 더 잘 준수: 얼라인먼트(alignment)
RLHF의 과정
- 프롬프트 데이터셋에서 여러 프롬프트 샘플을 추출
- 이 샘플은 초기 언어 모델에 입력되어 프롬프트와 관련된 텍스트를 생성
- 생성된 텍스트는 사람에 의해 평가되며, 각각의 텍스트는 품질에 따라 점수를 받음
- 이 점수를 통해 보상(선호도) 모델을 훈련
- 보상 모델을 사용하여 언어 모델을 계속 훈련시켜 사람들이 높은 점수를 준 텍스트와 유사한 품질의 답변을 더 잘 생성하도록 함
멀티모달
이미지와 소리, 텍스트 등과 같이 서로 다른 형태의 데이터를 동시에 학습시킴
→ LLM이 더 풍부한 이해 능력을 가지게 됨
NAS(Neural Architecture Search): 인공 신경망 모델을 만드는 AI
→ NAS에도 LLM을 적용 가능
→ 인경 신경망 후보를 제시하고 평가하는 과정을 반복해 인공 신경망 구조를 개선하고 성능 향상 가능
4. LLM, 특이점의 시작
ChatGPT는 사람의 말을 이해한 것을 바탕으로 코드를 생성하는 기능인 ‘코드 인터프리터’라는 도구를 사용
코드 인터프리터는 사람이 명령하는 내용의 앞뒤 맥락을 이해하고 지시를 수행하느 데 필요한 도구까지 직접 만들어서 사용
→ 데이터를 따로 학습시키거나 전처리하는 과정 없이도 기존 데이터를 참고해 요구 사항에 따른 적절한 액션까지 수행하는 것이 가능
머신 러닝 개발 과정의 혁신
머신 러닝 프로그램을 사람들이 실제로 사용하려면 기나긴 연구 개발 과정을 거쳤어야한다.
하지만 지금 LLM을 통해 만드는 프롬프트 기반 모델의 경우 프롬프트를 개발하고 배포하기까지 매우 짧은 시간이 소요
- 레이블링 필요 X
- 데이터를 분석할 필요 X
- 최신 데이터 바로 반영 가능
기존에는 데이터를 대량으로 모으는 것이 중요했지만, 이제는 고품질의 데이터가 더 중요
전통적인 머신러닝 개발
- 데이터를 모아 훈련 데이터와 평가 데이터로 나눔
- 모델링과 훈련 과정을 거침
- 훈련을 다 마치면 평가 진행
- 모델을 배포할 수 있도록 패키징
- 배포 진행
프롬프트 기반 모델 개발
- 평가 데이터 수집
- 프롬프트 제작
- 평가 후 바로 반영
중간에 데이터를 모으고 정제해 훈련시키는 과정이 없음에도 불구하고, 전통적인 머신러닝과 성능 차이가 별로 크지 않음
→ 프롬프트 엔지니어링만으로도 기존의 머신러닝이 하던 영역을 상당 부분 대체 가능
그럼에도 불구하고, 모델링이나 파인튜닝이 필요한 경우
- 숫자를 예측하는 선형 회귀 문제
- 대량의 로그성 데이터의 실시간 처리
- 특수 목적의 매우 높은 정밀도를 요구하는 문제
- 데이터의 최신성이 중요하지 않은 경우
- 데이터 보안이 매우 중요한 경우
생성 AI 모델의 한계
답변이 정밀하지 못하고 올바른지 확인이 어려움
→ 비결정론적인 방법을 사용하기 때문에 발생하는 문제
→ LLM에게 특정 목적에 따른 툴을 제공하거나 최신 정보를 주입하면 어느정도 해결 가능
인터넷이 등장하면서 엄청나게 많은 규모의 산업이 생겼지만, AI로 인해서 그 열 배에 달하는 규모의 산업이 새로 나타날 것이라는 전망
(물론 AI하드웨어나 GPT 등의 고성능의 기본 모델을 만드는 파운데이션 모델 회사가 많이 늘어날 것)
AI is not going to take your job, The person who uses AI will take your job.
→ 사고방식을 완전히 LLM으로 트랜스포메이션해야
'AI' 카테고리의 다른 글
[프롬프트 엔지니어링] 함수 호출, 프롬프트 평가, LLM 보안, Autonomous Agent에 대하여 (1) | 2024.12.29 |
---|---|
[프롬프트 엔지니어링] 프롬프트 작성 도움, 환각 줄이기, 외부 지식 주입에 대하여 (0) | 2024.12.29 |
[프롬프트 엔지니어링] 프롬프트 엔지니어링 기법들에 대하여 (4) | 2024.11.25 |