🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

GPT 시리즈 이해 완벽 가이드 - 슬라이드 1/7
A

AI Generated

2025. 12. 1. · 72 Views

GPT 시리즈 이해 완벽 가이드

GPT-1부터 GPT-4까지의 발전 과정과 핵심 개념을 살펴봅니다. Decoder-only 구조의 원리와 프롬프트 엔지니어링의 기초까지, 초급 개발자도 쉽게 이해할 수 있도록 설명합니다.


목차

  1. GPT-1_단방향_언어_모델
  2. GPT-2_Zero-shot_Learning
  3. GPT-3_Few-shot_Learning
  4. GPT-4_Multimodal
  5. Decoder-only_구조
  6. 프롬프트_엔지니어링_기초

1. GPT-1 단방향 언어 모델

어느 날 김개발 씨가 회사에서 AI 챗봇 프로젝트에 투입되었습니다. 팀장님이 "GPT 기반으로 개발할 거야"라고 했는데, 정작 GPT가 무엇인지 제대로 알지 못했습니다.

모든 것의 시작점인 GPT-1부터 차근차근 알아보기로 했습니다.

GPT-1은 2018년 OpenAI가 발표한 최초의 GPT 모델로, 단방향 언어 모델의 개념을 확립했습니다. 마치 소설을 처음부터 끝까지 순서대로 읽는 것처럼, 왼쪽에서 오른쪽으로 텍스트를 이해합니다.

이 모델은 사전 학습미세 조정이라는 두 단계 학습 방식을 도입하여 자연어 처리의 새로운 지평을 열었습니다.

다음 코드를 살펴봅시다.

# GPT-1의 핵심 개념: 단방향 언어 모델링
# 이전 단어들을 바탕으로 다음 단어를 예측합니다

def predict_next_word(context_words, model):
    # 핵심: 왼쪽에서 오른쪽으로만 문맥을 봅니다
    hidden_state = model.encode(context_words)

    # 다음 단어의 확률 분포를 계산합니다
    next_word_probs = model.predict(hidden_state)

    # 가장 높은 확률의 단어를 선택합니다
    predicted_word = argmax(next_word_probs)

    return predicted_word

# 예시: "오늘 날씨가" 다음에 올 단어 예측
context = ["오늘", "날씨가"]
next_word = predict_next_word(context, gpt1_model)
# 결과: "좋습니다" 또는 "맑습니다" 등

김개발 씨는 입사 6개월 차 주니어 개발자입니다. AI 팀에 배치되어 처음으로 대규모 언어 모델을 다루게 되었는데, 선배인 박시니어 씨가 "GPT의 역사부터 알아야 제대로 활용할 수 있어"라고 조언해 주었습니다.

"GPT-1이 왜 그렇게 혁신적이었는지 아세요?" 박시니어 씨가 화이트보드에 그림을 그리며 설명을 시작했습니다. 그 전까지 자연어 처리는 각 태스크마다 별도의 모델을 처음부터 학습시켜야 했습니다.

감정 분석을 하려면 감정 분석용 모델을, 번역을 하려면 번역용 모델을 따로 만들어야 했던 것입니다. 이 과정은 시간도 오래 걸리고 데이터도 많이 필요했습니다.

GPT-1은 이 문제를 전이 학습이라는 개념으로 해결했습니다. 쉽게 비유하자면, 마치 외국어를 배울 때와 같습니다.

한국어를 완벽히 아는 사람이 일본어를 배우면, 언어의 구조와 문법 개념을 이미 알고 있기 때문에 훨씬 빠르게 배울 수 있습니다. GPT-1도 마찬가지입니다.

먼저 인터넷의 방대한 텍스트로 언어 자체를 이해하는 능력을 학습합니다. 이것이 바로 사전 학습 단계입니다.

그 다음, 특정 태스크에 맞게 조금만 추가 학습하면 됩니다. 이것이 미세 조정 단계입니다.

그렇다면 단방향이란 무엇일까요? 박시니어 씨가 예를 들어 설명했습니다.

"김개발 씨가 소설을 읽을 때 어떻게 읽어요?" "당연히 처음부터 끝까지 순서대로 읽죠." 김개발 씨가 대답했습니다. "맞아요.

GPT-1도 똑같아요. 문장을 왼쪽에서 오른쪽으로 순서대로 읽으면서 다음에 올 단어를 예측합니다.

이미 읽은 부분만 참고할 수 있고, 아직 안 읽은 뒷부분은 볼 수 없어요." 이것이 바로 Autoregressive 방식입니다. 자기가 예측한 단어를 다시 입력으로 사용해서 그 다음 단어를 예측하는 것을 반복합니다.

마치 릴레이 소설을 쓰는 것처럼, 앞 문장을 보고 다음 문장을 이어 쓰는 방식입니다. GPT-1은 약 1억 1천7백만 개의 파라미터를 가진 모델이었습니다.

지금 기준으로 보면 작은 규모지만, 당시에는 꽤 큰 모델이었습니다. 이 모델은 BookCorpus라는 7,000권의 책 데이터로 학습되었습니다.

실제 현업에서는 GPT-1 자체를 직접 사용하는 경우는 드뭅니다. 하지만 GPT-1이 확립한 사전 학습 후 미세 조정 패러다임은 현재까지도 대부분의 언어 모델이 따르는 표준이 되었습니다.

"그래서 GPT-1을 알아야 하는 거군요. 모든 현대 언어 모델의 기초가 되는 개념이니까요." 김개발 씨가 고개를 끄덕였습니다.

실전 팁

💡 - GPT의 G는 Generative, P는 Pre-trained, T는 Transformer의 약자입니다

  • 단방향 모델은 텍스트 생성에 적합하고, 양방향 모델(BERT)은 텍스트 이해에 적합합니다

2. GPT-2 Zero-shot Learning

김개발 씨가 GPT-1을 이해하고 나니, 박시니어 씨가 다음 질문을 던졌습니다. "그런데 매번 미세 조정을 해야 한다면 번거롭지 않을까요?" 이 질문의 답이 바로 GPT-2가 보여준 놀라운 능력, Zero-shot Learning입니다.

GPT-2는 2019년에 발표되었으며, 별도의 미세 조정 없이도 다양한 태스크를 수행할 수 있는 Zero-shot Learning 능력을 보여주었습니다. 마치 다재다능한 만능 재주꾼처럼, 번역, 요약, 질의응답 등을 추가 학습 없이 해낼 수 있었습니다.

모델 크기를 15억 파라미터로 키우면서 이런 창발적 능력이 나타났습니다.

다음 코드를 살펴봅시다.

# GPT-2 Zero-shot Learning 예시
# 별도의 학습 없이 태스크를 수행합니다

def zero_shot_translate(text, source_lang, target_lang, model):
    # 핵심: 프롬프트만으로 번역 태스크를 지시합니다
    prompt = f"Translate {source_lang} to {target_lang}: {text}"

    # 모델이 자연스럽게 번역을 수행합니다
    translation = model.generate(prompt)
    return translation

def zero_shot_summarize(article, model):
    # 요약도 프롬프트만으로 가능합니다
    prompt = f"{article}\n\nTL;DR:"

    summary = model.generate(prompt)
    return summary

# 사용 예시
text = "오늘 서울에서 중요한 회의가 있었습니다."
result = zero_shot_translate(text, "Korean", "English", gpt2)
# 결과: "There was an important meeting in Seoul today."

박시니어 씨가 커피를 한 모금 마시며 이야기를 이어갔습니다. "GPT-1의 한계가 뭐였는지 알아요?" 김개발 씨가 잠시 생각했습니다.

"음... 매번 새로운 태스크마다 미세 조정을 해야 한다는 점요?" "정확해요.

감정 분석하려면 감정 데이터로 학습하고, 번역하려면 번역 데이터로 학습하고... 이게 꽤 번거로운 작업이에요." GPT-2는 이 문제에 대한 답을 제시했습니다.

OpenAI 연구진은 흥미로운 가설을 세웠습니다. 모델을 충분히 크게 만들고, 충분히 많은 데이터로 학습시키면, 별도의 미세 조정 없이도 다양한 태스크를 수행할 수 있지 않을까? 결과는 놀라웠습니다.

GPT-2는 정말로 번역, 요약, 질의응답 등을 추가 학습 없이 해냈습니다. 물론 전문 모델만큼 완벽하지는 않았지만, 아무런 추가 학습 없이 이런 능력을 보여줬다는 것 자체가 혁명적이었습니다.

이것을 Zero-shot Learning이라고 부릅니다. Zero는 0을 의미하고, Shot은 예시를 의미합니다.

즉, 예시 0개로 학습한다는 뜻입니다. 비유하자면, 요리 레시피를 한 번도 보지 않고도 "파스타 만들어줘"라는 말만 듣고 파스타를 만들어내는 것과 같습니다.

어떻게 이런 일이 가능했을까요? 비밀은 규모에 있었습니다.

GPT-2는 GPT-1보다 10배 이상 큰 15억 개의 파라미터를 가졌습니다. 학습 데이터도 훨씬 다양하고 방대했습니다.

레딧에서 추천을 3개 이상 받은 링크들의 웹페이지를 모은 WebText라는 데이터셋으로 학습했습니다. 박시니어 씨가 중요한 포인트를 짚었습니다.

"여기서 창발적 능력이라는 개념이 등장해요. 모델이 커지면서 명시적으로 가르치지 않은 능력이 갑자기 나타나는 현상이에요." 마치 어린아이가 글을 많이 읽다 보면 문법을 따로 배우지 않아도 자연스럽게 문장을 만들 수 있게 되는 것과 비슷합니다.

GPT-2도 엄청난 양의 텍스트를 보면서 언어의 다양한 패턴을 스스로 익힌 것입니다. 흥미로운 에피소드가 있습니다.

OpenAI는 GPT-2가 너무 강력해서 악용될 수 있다며 처음에는 전체 모델을 공개하지 않았습니다. 가짜 뉴스 생성 등의 위험을 우려한 것입니다.

지금 생각하면 과도한 걱정이었지만, 당시에는 AI의 위력에 대한 경각심을 불러일으킨 사건이었습니다. "그럼 Zero-shot이 항상 잘 작동하나요?" 김개발 씨가 물었습니다.

"완벽하진 않아요. 복잡한 태스크에서는 성능이 떨어집니다.

그래서 GPT-3에서는 Few-shot Learning이 등장하게 됩니다."

실전 팁

💡 - Zero-shot은 예시 없이, Few-shot은 몇 개의 예시와 함께 태스크를 수행하는 것입니다

  • 모델 규모가 커질수록 Zero-shot 성능이 향상되는 경향이 있습니다

3. GPT-3 Few-shot Learning

"그런데 Zero-shot만으로는 부족한 경우가 있어요." 박시니어 씨가 새로운 주제를 꺼냈습니다. "복잡한 태스크에서는 몇 가지 예시를 보여주면 성능이 훨씬 좋아지거든요." 이것이 바로 GPT-3가 보여준 Few-shot Learning의 힘입니다.

GPT-3는 2020년에 발표된 1750억 파라미터의 초거대 모델입니다. 이 모델의 핵심 능력은 Few-shot Learning으로, 몇 개의 예시만 프롬프트에 포함시키면 새로운 태스크를 빠르게 학습합니다.

마치 똑똑한 학생이 예제 몇 개만 보고 문제 유형을 파악하는 것처럼, GPT-3는 패턴을 빠르게 인식합니다.

다음 코드를 살펴봅시다.

# GPT-3 Few-shot Learning 예시
# 프롬프트에 예시를 포함시켜 태스크를 수행합니다

def few_shot_sentiment(text, model):
    # 핵심: 몇 가지 예시로 패턴을 알려줍니다
    prompt = """
    텍스트: 이 영화 정말 재미있었어요!
    감정: 긍정

    텍스트: 서비스가 너무 별로였습니다.
    감정: 부정

    텍스트: 그냥 그랬어요.
    감정: 중립

    텍스트: {text}
    감정:"""

    response = model.generate(prompt.format(text=text))
    return response

# 사용 예시
result = few_shot_sentiment("오늘 점심 맛있게 먹었어요!", gpt3)
# 결과: "긍정"

# One-shot: 예시 1개
# Few-shot: 예시 2~10개 정도

김개발 씨가 실제로 GPT-3 API를 사용해보기로 했습니다. 회사에서 고객 리뷰를 자동으로 분류하는 기능이 필요했기 때문입니다.

처음에는 Zero-shot으로 시도해봤습니다. "다음 리뷰의 감정을 분류해주세요: 배송은 빨랐는데 포장이 좀 아쉬웠어요." 결과는 들쭉날쭉했습니다.

어떤 때는 긍정, 어떤 때는 부정으로 분류했습니다. 박시니어 씨가 제안했습니다.

"Few-shot을 써보세요. 우리 회사 기준에 맞는 예시를 몇 개 넣어주면 돼요." Few-shot Learning은 말 그대로 적은 수의 예시로 학습하는 것입니다.

Zero-shot이 예시 없이 태스크를 수행하는 것이라면, Few-shot은 2~10개 정도의 예시를 프롬프트에 포함시킵니다. 비유하자면, 새로운 회사에 입사했을 때를 생각해보세요.

업무 매뉴얼만 주면서 "알아서 해"라고 하면 막막합니다. 하지만 "이런 경우에는 이렇게 처리하고, 저런 경우에는 저렇게 해요"라고 몇 가지 사례를 보여주면 금방 감을 잡을 수 있습니다.

GPT-3도 마찬가지입니다. 예시를 통해 원하는 출력 형식판단 기준을 학습합니다.

놀라운 점은 이 학습이 모델의 가중치를 변경하지 않는다는 것입니다. 오직 프롬프트만으로 이루어지는 In-context Learning입니다.

김개발 씨가 Few-shot 프롬프트를 작성했습니다. 긍정 예시 2개, 부정 예시 2개, 중립 예시 1개를 넣었습니다.

결과는 놀라웠습니다. 분류 정확도가 크게 향상되었습니다.

"그런데 왜 예시가 많으면 더 좋은 거예요?" 김개발 씨가 물었습니다. "항상 그런 건 아니에요.

보통 2~5개 정도가 적당해요. 너무 많으면 프롬프트가 길어져서 비용도 늘고, 오히려 혼란을 줄 수도 있거든요." GPT-3의 규모는 정말 거대했습니다.

1750억 개의 파라미터는 GPT-2의 100배가 넘는 수치입니다. 이 규모 덕분에 Few-shot Learning 능력이 비약적으로 향상되었습니다.

OpenAI 논문에 따르면, 모델이 커질수록 Few-shot 성능이 가파르게 상승하는 그래프를 볼 수 있습니다. 실무에서 Few-shot을 잘 활용하는 팁이 있습니다.

첫째, 예시는 다양하게 선택해야 합니다. 비슷한 예시만 넣으면 편향이 생길 수 있습니다.

둘째, 예시의 순서도 중요합니다. 연구에 따르면 예시 순서에 따라 성능이 달라질 수 있습니다.

"이제 ChatGPT가 왜 그렇게 똑똑한지 알겠어요." 김개발 씨가 말했습니다. "GPT-3의 Few-shot Learning이 기반이 된 거군요." "맞아요.

그리고 ChatGPT는 여기에 RLHF라는 기술을 더해서 더 자연스러운 대화가 가능해진 거예요."

실전 팁

💡 - Few-shot 예시는 실제 사용 사례와 유사한 것으로 선택하세요

  • 예시에 다양한 케이스(엣지 케이스 포함)를 포함시키면 더 견고한 결과를 얻을 수 있습니다

4. GPT-4 Multimodal

"그런데 GPT-3까지는 텍스트만 다룰 수 있었어요." 박시니어 씨가 노트북을 열며 말했습니다. "GPT-4부터는 이미지도 이해할 수 있게 됐죠." 김개발 씨의 눈이 반짝였습니다.

드디어 진정한 의미의 멀티모달 AI가 등장한 것입니다.

GPT-4는 2023년에 발표된 멀티모달 모델로, 텍스트뿐만 아니라 이미지도 입력으로 받아 이해할 수 있습니다. 마치 눈과 귀를 모두 가진 것처럼, 시각 정보와 언어 정보를 함께 처리합니다.

이를 통해 이미지 설명, 차트 분석, 문서 이해 등 훨씬 다양한 태스크가 가능해졌습니다.

다음 코드를 살펴봅시다.

# GPT-4 Multimodal 사용 예시
# 이미지와 텍스트를 함께 입력으로 사용합니다

from openai import OpenAI

client = OpenAI()

def analyze_image(image_path, question):
    # 핵심: 이미지와 질문을 함께 전달합니다
    response = client.chat.completions.create(
        model="gpt-4-vision-preview",
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": question},
                    {
                        "type": "image_url",
                        "image_url": {"url": f"data:image/jpeg;base64,{encode_image(image_path)}"}
                    }
                ]
            }
        ]
    )
    return response.choices[0].message.content

# 사용 예시: 차트 이미지 분석
result = analyze_image("sales_chart.png", "이 차트에서 가장 높은 매출을 기록한 월은 언제인가요?")

김개발 씨의 팀에 새로운 요구사항이 들어왔습니다. 고객이 제품 사진을 보내면 자동으로 제품을 인식하고 관련 정보를 안내해주는 챗봇을 만들어 달라는 것이었습니다.

"GPT-3로는 이건 불가능한데..." 김개발 씨가 고민하자, 박시니어 씨가 웃으며 말했습니다. "GPT-4를 쓰면 돼요." 멀티모달이란 무엇일까요?

Multi는 여러 개를, Modal은 양식이나 형태를 의미합니다. 즉, 여러 가지 형태의 데이터를 함께 처리할 수 있다는 뜻입니다.

GPT-4의 경우 텍스트와 이미지를 함께 이해할 수 있습니다. 비유하자면, 이전까지의 GPT는 라디오 DJ와 같았습니다.

오직 목소리, 즉 텍스트로만 소통할 수 있었죠. 하지만 GPT-4는 TV 진행자와 같습니다.

화면에 보이는 것도 보면서 이야기할 수 있습니다. 이것이 가능해지면서 활용 범위가 크게 넓어졌습니다.

예를 들어 손으로 그린 와이어프레임 스케치를 사진으로 찍어서 GPT-4에게 보여주면, 실제 HTML/CSS 코드로 변환해줍니다. 의료 분야에서는 엑스레이나 CT 영상을 분석하는 보조 도구로 활용될 수 있습니다.

김개발 씨가 직접 테스트해봤습니다. 회사 제품 카탈로그 이미지를 업로드하고 "이 제품들의 특징을 설명해줘"라고 요청했습니다.

GPT-4는 이미지 속 각 제품을 정확히 인식하고 특징을 설명해주었습니다. "와, 진짜 사진을 보고 이해하는 거네요!" 김개발 씨가 감탄했습니다.

하지만 주의할 점도 있습니다. GPT-4의 이미지 이해 능력이 완벽한 것은 아닙니다.

특히 작은 텍스트를 읽거나, 복잡한 다이어그램을 정확히 해석하는 데는 한계가 있습니다. 또한 이미지 생성은 할 수 없습니다.

이미지를 이해하는 것과 생성하는 것은 다른 능력입니다. GPT-4는 단순히 이미지만 추가된 것이 아닙니다.

전반적인 추론 능력도 크게 향상되었습니다. OpenAI에 따르면 GPT-4는 미국 변호사 시험에서 상위 10%의 성적을 거뒀다고 합니다.

GPT-3.5는 하위 10%였던 것과 비교하면 엄청난 발전입니다. "멀티모달이 되면서 어떤 가능성이 열렸다고 생각해요?" 박시니어 씨가 물었습니다.

김개발 씨가 잠시 생각했습니다. "음...

이제 AI가 정말 우리 세상을 '볼' 수 있게 된 것 같아요. 텍스트로 설명하기 어려운 것들도 그냥 사진 찍어서 물어보면 되니까요." "맞아요.

그리고 앞으로는 비디오, 오디오까지 확장될 거예요. 진정한 의미의 범용 AI에 한 걸음 다가간 거죠."

실전 팁

💡 - 이미지 분석 시 질문을 구체적으로 하면 더 정확한 답변을 얻을 수 있습니다

  • GPT-4는 이미지 생성이 아닌 이미지 이해 모델입니다. 생성은 DALL-E를 사용하세요

5. Decoder-only 구조

"그런데 GPT가 왜 Decoder-only라고 불리는지 알아요?" 박시니어 씨의 질문에 김개발 씨는 고개를 갸웃거렸습니다. Transformer 아키텍처에 대해 들어본 적은 있지만, Encoder와 Decoder의 차이는 정확히 모르고 있었습니다.

GPT 시리즈는 Transformer의 Decoder 부분만 사용하는 아키텍처입니다. Encoder는 입력을 이해하고, Decoder는 출력을 생성하는 역할을 하는데, GPT는 텍스트 생성에 특화되어 Decoder만 사용합니다.

마치 작가가 이전 문장을 보며 다음 문장을 써나가는 것처럼, 순차적으로 텍스트를 생성합니다.

다음 코드를 살펴봅시다.

# Decoder-only 구조의 핵심: Masked Self-Attention
# 현재 위치 이전의 토큰만 참조할 수 있습니다

import numpy as np

def masked_self_attention(query, key, value, mask):
    # 핵심: 어텐션 스코어 계산
    scores = np.matmul(query, key.T) / np.sqrt(key.shape[-1])

    # Causal Mask 적용: 미래 토큰을 볼 수 없게 합니다
    # mask는 상삼각 행렬로, 미래 위치에 -inf를 넣습니다
    scores = scores + mask  # mask의 미래 위치는 -inf

    # Softmax를 적용하면 미래 위치는 0이 됩니다
    attention_weights = softmax(scores)

    # 가중 합으로 최종 출력 계산
    output = np.matmul(attention_weights, value)

    return output

# 예: "나는 밥을" 다음 단어 예측 시
# "나는", "밥을"만 참조 가능, 이후 토큰은 마스킹됨

박시니어 씨가 화이트보드에 Transformer 구조를 그리기 시작했습니다. "원래 Transformer는 번역을 위해 만들어졌어요.

영어를 입력하면 한국어로 출력하는 식으로요." 원조 Transformer는 EncoderDecoder 두 부분으로 구성되어 있습니다. Encoder는 입력 문장을 이해하고 압축된 표현으로 만듭니다.

Decoder는 이 표현을 받아서 출력 문장을 생성합니다. 비유하자면, Encoder는 통역사의 듣고 이해하는 능력이고, Decoder는 말하는 능력입니다.

번역에서는 둘 다 필요하지만, 그냥 글을 쓰는 데는 말하는 능력만 있어도 됩니다. GPT는 바로 이 점에 착안했습니다.

텍스트 생성에 집중하기로 하고, Decoder만 사용하기로 한 것입니다. 그래서 GPT를 Decoder-only 아키텍처라고 부릅니다.

"그럼 BERT는 뭐예요?" 김개발 씨가 물었습니다. "좋은 질문이에요.

BERT는 반대로 Encoder-only 구조예요. 이해에 특화되어 있죠.

텍스트 분류, 감정 분석 같은 태스크에 강합니다." Decoder-only 구조의 핵심은 Causal Mask입니다. 이 마스크는 모델이 미래의 토큰을 볼 수 없게 만듭니다.

왜 이게 필요할까요? 생각해보세요.

시험 문제를 풀 때 정답을 미리 보면 안 되잖아요? GPT도 마찬가지입니다.

다음 단어를 예측해야 하는데, 다음 단어를 미리 볼 수 있으면 의미가 없습니다. Causal Mask는 이를 방지합니다.

구체적으로, "나는 밥을 먹었다"라는 문장을 학습할 때를 봅시다. "나는"을 볼 때는 "밥을", "먹었다"를 볼 수 없습니다.

"나는 밥을"을 볼 때는 "먹었다"를 볼 수 없습니다. 이렇게 항상 이전 토큰만 참조하면서 다음을 예측합니다.

이 방식의 장점은 자연스러운 텍스트 생성입니다. 한 단어씩 순차적으로 생성하기 때문에, 마치 사람이 글을 쓰는 것처럼 자연스러운 문장이 만들어집니다.

반면 단점도 있습니다. 문장 전체를 한 번에 이해하기 어렵습니다.

예를 들어 "그는 은행에 갔다"라는 문장에서 "은행"이 금융기관인지 강가인지는 뒤의 문맥을 봐야 알 수 있습니다. 하지만 Decoder-only는 뒤를 볼 수 없죠.

"그래서 이해가 중요한 태스크에는 BERT 같은 Encoder 모델을 쓰는 거군요?" 김개발 씨가 정리했습니다. "맞아요.

하지만 최근에는 GPT가 워낙 커져서 이해 능력도 많이 좋아졌어요. 규모의 힘이죠."

실전 팁

💡 - Encoder-only(BERT)는 이해에, Decoder-only(GPT)는 생성에 특화되어 있습니다

  • Causal Mask 덕분에 GPT는 학습과 추론 시 같은 방식으로 동작합니다

6. 프롬프트 엔지니어링 기초

"GPT를 잘 쓰려면 결국 프롬프트를 잘 작성해야 해요." 박시니어 씨가 결론을 내렸습니다. 김개발 씨는 지금까지 GPT의 역사와 구조를 배웠으니, 이제 실제로 어떻게 활용하는지 배울 차례입니다.

바로 프롬프트 엔지니어링의 세계입니다.

프롬프트 엔지니어링은 AI 모델에게 원하는 출력을 얻기 위해 입력(프롬프트)을 설계하는 기술입니다. 마치 좋은 질문이 좋은 답을 이끌어내는 것처럼, 잘 설계된 프롬프트는 AI의 성능을 극대화합니다.

역할 부여, 구체적 지시, 예시 제공 등의 기법을 활용합니다.

다음 코드를 살펴봅시다.

# 프롬프트 엔지니어링 기본 기법들

# 1. 역할 부여 (Role Prompting)
role_prompt = """
당신은 10년 경력의 시니어 파이썬 개발자입니다.
코드 리뷰를 요청받으면 버그, 성능, 가독성 관점에서 분석해주세요.
"""

# 2. 구체적 지시 (Specific Instructions)
specific_prompt = """
다음 코드를 분석해주세요.
- 버그가 있다면 지적해주세요
- 성능 개선점을 3가지 이상 제안해주세요
- 결과는 마크다운 표로 정리해주세요
"""

# 3. 단계별 사고 유도 (Chain of Thought)
cot_prompt = """
문제를 단계별로 분석해주세요:
1단계: 문제 이해
2단계: 가능한 해결책 나열
3단계: 각 해결책의 장단점 분석
4단계: 최적의 해결책 선택
"""

# 4. 출력 형식 지정
format_prompt = """
다음 JSON 형식으로 응답해주세요:
{"summary": "요약", "pros": ["장점1"], "cons": ["단점1"]}
"""

김개발 씨가 실제 업무에 GPT를 적용하기 시작했습니다. 처음에는 "이 코드 리뷰해줘"라고만 입력했는데, 결과가 너무 일반적이고 도움이 되지 않았습니다.

"프롬프트가 너무 막연해요." 박시니어 씨가 지적했습니다. "GPT는 질문한 만큼만 대답해요.

좋은 질문이 좋은 답을 만듭니다." 프롬프트 엔지니어링이란 AI 모델에게 입력하는 텍스트(프롬프트)를 효과적으로 설계하는 기술입니다. 같은 GPT-4라도 프롬프트에 따라 결과물의 품질이 천차만별입니다.

첫 번째 기법은 역할 부여입니다. GPT에게 특정 역할을 맡기면 그 역할에 맞는 전문적인 답변을 얻을 수 있습니다.

"당신은 10년 경력의 시니어 개발자입니다"라고 시작하면, 답변의 깊이와 전문성이 달라집니다. 비유하자면, 친구에게 "이거 어때?"라고 물으면 막연한 대답이 돌아옵니다.

하지만 "네가 UX 디자이너라고 생각하고 이 화면 평가해줘"라고 하면 훨씬 구체적인 피드백을 받을 수 있습니다. 두 번째 기법은 구체적 지시입니다.

원하는 것을 명확하게 요청해야 합니다. "코드 리뷰해줘" 대신 "이 코드의 보안 취약점을 찾고, 수정 방법을 코드와 함께 제시해줘"라고 하면 원하는 답을 얻을 확률이 높아집니다.

세 번째 기법은 Chain of Thought, 즉 단계별 사고 유도입니다. 복잡한 문제를 풀 때 "단계별로 생각해봐"라고 지시하면 GPT가 논리적으로 추론합니다.

이 기법은 수학 문제나 논리 문제에서 특히 효과적입니다. 김개발 씨가 실험해봤습니다.

"123 곱하기 456은?"이라고 물으면 종종 틀린 답이 나왔습니다. 하지만 "단계별로 계산해줘"라고 추가하자 정확도가 크게 올라갔습니다.

네 번째 기법은 출력 형식 지정입니다. JSON, 마크다운 표, 번호 목록 등 원하는 형식을 지정하면 그 형식에 맞춰 답변합니다.

API를 통해 결과를 처리해야 할 때 특히 유용합니다. "프롬프트는 결국 소통이에요." 박시니어 씨가 강조했습니다.

"GPT는 마음을 읽지 못해요. 원하는 것을 명확하게 전달해야 해요." 실무에서 자주 쓰는 팁도 있습니다.

부정문보다 긍정문을 사용하세요. "길게 쓰지 마"보다 "3문장으로 요약해줘"가 더 효과적입니다.

또한 예시를 포함하면 원하는 스타일을 더 정확히 전달할 수 있습니다. 김개발 씨는 이제 프롬프트를 작성할 때마다 신중하게 생각합니다.

역할을 부여하고, 구체적으로 지시하고, 필요하면 단계별로 사고하도록 유도합니다. 그 결과, GPT의 답변 품질이 크게 향상되었습니다.

"프롬프트 엔지니어링은 새로운 형태의 프로그래밍이에요." 박시니어 씨가 마무리했습니다. "코드로 컴퓨터를 제어하듯, 프롬프트로 AI를 제어하는 거죠."

실전 팁

💡 - 모호한 표현보다 구체적인 지시가 좋은 결과를 만듭니다

  • 부정문("~하지 마")보다 긍정문("~해줘")이 더 효과적입니다
  • 복잡한 태스크는 단계별로 나누어 지시하세요

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#GPT#NLP#LLM#Transformer#PromptEngineering#GPT,NLP,LLM

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

함께 보면 좋은 카드 뉴스