남다른 결과를 만드는 프롬프트 엔지니어링 - 인천e배움

인천 평생학습 온라인 플랫폼(인천 e배움 캠퍼스)에서 수강한 무료강좌다. AI 트렌드를 익히기 위해서 수강했다.

1. ChatGPT

a. ChatGPT의 등장 배경과 유사 서비스

Transformer

  • ChatGPT의 조상. 구글이 2017년에 발표한 논문
  • 번역에 초점을 맞춘 프로세스: 영어 -> 벡터  -> 언어
  • Multi-head Self Attention
    • https://www.youtube.com/watch?v=SR4F6WMqZ0s
    • Attention 
      • The animal didn't cross the street because it was too tired
        'it'은 무엇을 가리키는가? 컴퓨터는 animal이라는 것을 어떻게 판단하는가?
        컴퓨터는 글의 문맥을 이해하기 위해 단어(animal)를 모든 단어와 비교한다.
    • Self Attention
      • 자연어(animal)를 Query, key, Value에 동일하게 대입한다. (Input 값이 동일하다)
    • Attention Value Matrix
      • 각 Self Attention의 결과를 (Query와 key와 Value의 결과를) 곱한 결과
      • Attention score(Query랑 key의 곱)와 Value의 곱으로 나오는 결과
    • Multi-head Self Attention
      • 관계형 데이터베이스(Query, Key, Value)값을 한 번에 계산하지 않고 head 수만큼 나눠 계산 후 나중에 Attention Value들을 합치는 메커니즘. 한마디로 분할 계산 후 합산하는 방식. (Attention Value Matrix를 여러개 만들어서 합친다.)
    • Masked Multi-head Attention
      • 모델이 학습할 수 있도록(뒤에 데이터를 예측할 수 있도록) 뒤에 나올 데이터를 가려준다.
  • 파생된 모델  (파라미터)
    • ELMo  (94M)
    • BERT-L  (340M)
    • GPT-2  (1.5B)
    • Megatron-LM  (8.3B)
    • T5  (11B)
    • Turing-NLG  (17.2B)
    • GPT-3  (175B)
  • GPT의 기본 구조
    • 언어 모델 자체를 사전 학습하기 때문에, 번역에 초점을 맞춘 Transformer와 다른 양상을 띈다.

Foundation 모델

  • GPT, PaLM2 등의 초거대 AI 모델을 의미
    • 학습 및 최적화를 위해 수백명의 연구원 및 엔지니어 필요
    • 가용 하드웨어 매우 만힝 요함
    • ChatGPT의 경우, H100 GPU 10,000개 이상으로 학습 수행
  • 대표적인 Foundation 모델
    • GPT-4 (OpenAI)
    • PaLM2 (구글)
    • Hyper CLOVA X (네이버)
  • Foundation 모델을 탑재한 상용모델
    • ChatGPT, BingChat
    • Gemini(Bard)
    • Hyper CLOVA X

2. 자연어 원리

a. AI 연구가 진행되는 과정을 통해 알아보는 데이터 수집의 필요성

서비스 기획의 예

  1. 시장조사, 레퍼런스, 경쟁사분석, 비즈니스 모델 검토
  2. MVP 개발
  3. 유저 테스트
  4. 추가 개발
  5. 유저 오픈

AI 연구 (ex: 이미지에서 고양이를 찾는 AI모델)

  • 1. 데이터셋 획득 (이미지)
    • CIFAR 10
    • IMAGENET
    • 대회에서 데이터셋 오픈
    • 직접수집
    • 기타 ( Papers With Code, kaggle, AI Hub )
    • 데이터증강 ( 이미지 이동/회전/분, 색 변화 )
    • 합성 데이터 ( AI가 만들어낸 데이터 )
  • 2. AI 모델 개발
    • 딥러닝 프레임워크의 예
      • TensorFlow, PyTorch
    • 1. 라이브러리 사용
      • 자연어 처리 라이브러리 패키지: Hugging Face
    • 2. 논문 저자가 공개한 코드 사용
      • GitHub, Papers With Code, Google 학술검색
    • 3. 스크래치부터 구현
      • 직접 코딩
    • 모델 경량화의 이슈
      • AI 사용 환경
        • 클라우드
        • AI의 모델을 고객 디바이스에 설치
      • 낮은 하드웨어 환경에서도 동작하도록 작업
  • 3. AI 모델 학습
    • Pre-trained(사전학습) 모델 사용 여부 결정
    • 모델학습 & 성능평가
      • 하이퍼 파라미터 튜닝
        • 몇 epch, learning late, 배치 사이즈
      • 실험 반복
  • 4. 모델 배포와 개선
    • 데이터 획득: 존재하지 않는 데이터
    • AI 모델 개발: 미세한 변화로 인식하지 못하는 데이터
    • 데이터 획득 & AI 모델 개발: AI 모델이 인식하기 어려운 특이 케이스. 특이 케이스를 수집하여, 모델을 학습시킨다.

b. 자연어 데이터 레이블링 종류와 특징

텍스트 수집

  • 텍스트 생성
    • 대화문 데이터
      • 대화 형식: 다수 참가자간의 상호 작용
      • 대화 턴: 대화의 한 단계
      • 대화 내용
      • 대화 주제
    • QA 데이터셋, Multi-hop QA(다중단계질문응답), 일반 QA
  • 텍스트 태깅
    • 텍스트 태깅의 과정
      • 텍스트의 다양한 면을 분석하고 모델을 훈련하고 평가하는데 사용
      • 토큰화 -> 레이블링/태깅 -> 텍스트 분류와 정보 추출

c. 자연어 데이터 레이블링(태깅) 실습

택스트 생성 (대화문)

  • 대화상황 - 대화문 생성: https://cashmission.com/test/1786
    • 올바른
      [대화 상황 요소] 10대 / 당황 / 아침 / 음료

      [대화 상황] 우유를 먹고 나서야 유통기한이 지났다는 사실을 알았어요
    • 잘못된
      [대화 상황 요소] 20대 / 분노 / 아침 / 회사
      [대화문] 첫 출근을 준비하면서 너무 긴장돼요
      해설: '분노'라는 감정과는 어울리지 않는 대화 상황입니다.
  • 상담 대화문: https://cashmission.com/test/1787
    • 규칙
      • '~해요'로 마무리
      • 내담자의 자존감을 높여주는 방향으로 상담
    • 허용가능 범위
      • ㅋㅋ, ㅠㅠ, ㅎㅎ 등 보편적으로 쓰이는 감정 표현
      • 채팅의 편의를 위해서 일부러 맞춤법을 무시하는 경우
    • 허용 불가능
      • 틀린 맞춤법, 차별표현, 맥락과 무관한 대화문

텍스트 태깅

  • 명사구 태깅하기:https://cashmission.com/test/1783
    • 해당 명사가 카테고리 범주에 들어가는지 확인
  • 고유명사 태깅하기:https://cashmission.com/test/1781
    • 해당 명사를 카테고리에 직접 태깅
  • 광고 문구 태깅하기 : https://cashmission.com/test/1780
    • 카테고리 선택 > 문장에서 해당 단어 라벨링(드래그)

텍스트 분류

  • 댓글 보고 악플 분류하기: https://cashmission.com/test/1784
    • 악플은 이름이나 별칭을 통해 대상을 명확히 지칭하고 있어야 함.
    • 지칭하는 대상이 없거나, 욕설 또는 비방과 관련이 없으면 악플이 아님.
  • 혐오표현 분류하기: https://cashmission.com/test/1782
    • 혐오 표현에 태깅

(참고) 캐시미션

  • 인공지능에 개발에 필요한 데이터를 수집하는 서비스
  • 인공지능 데이터를 개발하기 위해서는 많은 양의 데이터를 다양하게 모아야 하고, 정확하게 라벨링, 수작업을 해야만 한다.
  • 앱을 통한 재테크 미션을 통해, 사용자들에게 소액의 리워드를 제공하고, 인공지능 프로젝트를 진행하는 기업에게는 데이터를 제공한다. 

d. 자연어 처리모델의 이해

  • NLP
    • Natural Language Processing - 인간의 언어를 컴퓨터가 이해하고 처리할 수 있게 하는 모든 기술 분야
    • NLU
      • Naturl Language Understanding - 사람의 언어를 컴퓨터가 '이해'하는 과정
      • 챗봇의 질문이해, 기계 번역, 문장 분석
    • NLG
      • Naturl Language Generation - 사람의 언어를 컴퓨터가 '생성'하는 과정
      • 챗봇의 응답생성, 추천 메세지 작성
  • BERT 계열
    • encoder, 입력 값을 이해하는 데 장점을 발휘 (NLU 쪽이 더 발달)
  • GPT 계열
    • decoder, 출력 값을 발달 시키는 데, 장점을 발휘 (NLG 쪽이 더 발달)

3. 프롬프트 엔지니어링

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

Tip1. 영어로 작성
  • 프롬프트 지니 - 자동 통번역
  • 디플 - 원하는 문장만 번역

Tip2. 쉽고 간결하게 입력
  • 영문 입력 가능 글자: 15,384 자
  • 한글 입력 가능 글자: 1,365 자

Tip3. 나의 역할 지정

Tip4. 닫힌 지시문
  • 종결 어미로 질문

Tip5. 연쇄 프롬프트
  • 아이폰에 대한 기사를 작성해줘.
  1. 헤드라인, 개요, 소제목으로 구성하고
    [gpt 결과 output.]
  2. 각 소제목에 3개의 핵심 메시지를 작성해줘.
    [gpt 결과 output.]
  3. 핵심 메시지별로 3개의 키워드를 추출해줘.

Tip6. 매개변수조정
  • api 호출을 통해 사용할 때에 조정 가능하다.

In-context Learning
  • Zero-shot Learning
  • One-shot Learning - 예시 데이터 제공
  • Few-shot Learning - 타입별, 다양한 예시 데이터 제공
    • 제가 어제 먹은 저녁 식사는 굉장히 멋졌습니다. - 긍정
    • 저는 몇 일전에 최악의 경험을 했습니다. - 부정
    • 제가 만났던 사람 중에 당신읜 최고의 사람입니다. - 긍정
    • 어제 나온 뉴스 기사는 끔찍했습니다. - 부정
    • <실제 질문> 내가 쓰고 있는 컴퓨터의 성능은 정말 놀라워!
      <답변> 긍정적인 말인 것 같습니다.

b. 프롬프트 엔지니어링 심화

Prompt Engineering

  • Chain-of-Thought (COT)
    모델의 추론 능력을 효과적으로 끌어올리기 위한 프롬프트 엔지니어링 기법
    예시에 해당 문제를 해결하기 위한 '중간 과정'을 포함해 프롬프트 구성.

Document Retrieval

  • 질의를 할 때, 관련 문서를 함께 제공
  • 문서를 미리 임베딩화(db화) 화여, 답변하도록 유도

c. 프롬프트 엔지니어링 업무에 활용하기

회의록 필터링

  • 1차 회의록 자료를 제공하고 문서 요약 및 정리를 맡긴다.

코드 수정

  • 코드를 제시하고 코드 최적화
  • 주석요청
  • 사용하고 싶은 기술 및 프레임워크 제시 

4. LangChain을 활용한 대화 어시스턴스

a. LangChain 기초

LangChain

  • LLM모델을 사용한 애플리케이션 개발도구
  • Model
    • OpenAI의 GPT
    • Google의 PaLM
    • In/Out
      : Format > Predict > Parse
  • Retrieval
    • LLM이 정보를 갖고 있지 않은 경우, 사용자가 입력한 추가 정보를 가공 및 활용
    • Data connection
      : Source > Load > Transform > Embed > Store > Retrieve
  • Chain
    • LangChain 요소들간 결합을 지원
    • LLM Chain은 모에 원하는 입력, 출력 형태를 지정한다.
  • Agent
    • LLM과 다른 툴(검색엔진) 등을 사용할지 정하는 파트
    • AI의 생각과 '액션' 반복
  • Memory
    • LLM과 상호 작용한 내용을 저장하여 같은 맥락으로 대화를 이어감
  • Callback
    • Chain으로 엮은 모듈간의 중간 출력값을 확인하거나, 버그를 찾고 확인(디버깅)하는 용도로 사용

ChatGPT API 발급

  • VIEW API keys
  • Create new secret key: 복사 후, 메모장 저장 (키를 다시 확인할 수 없음)

b. LangChain을 활용한 프롬프트 엔지니어링 - 개요

구글 확장 프로그램 Colab 설치 및 예제파일 준비

  • Colab: Colaboratory(줄여서 'Colab'이라고 함)을 통해 브라우저 내에서 Python 스크립트를 작성하고 실행할 수 있습니다.
  • 예제파일: url.kr/x97jeu
  • LangChain을_활용한_프롬프트_엔지니어링_개요:
    cd /content/drive/MyDrive/본인구글폴더

크롤링 정책 확인

  • 웹주소/robots.txt
  • 영상의 Gmarket 사이트에서 request.get이 안됨. (headers에 요청 넣어도 안됨)

강의영상 내용

  • Gmarket에 '핫도그'를 검색한 뒤, 관련 제품의 리뷰를 가져옴. 
  • 프롬프트를 작성하고 리뷰데이터를 삽입하여 ChatGPT에게 질문. 
  • ('핫도그를 판매하기 위해 고려해야 할 점')
  • ChatGPT 답변 확인

c. LangChain을 활용한 프롬프트 엔지니어링 - 데이터 분석

강의영상 내용

  • 타이타닉 사망자 정보를 통해 분석
  • 영상의 아래 부분 코드 오류 발생 (유료 openAPI key 필요) 
from langchain.agents import create_pandas_dataframe_agent

  • 에이전트를 호출함. (데이터 프레임을 ChatGPT에게 전달함)
  • 데이터가 어떻게 구성되었는지 GPT에게 질문함.
  • 실제 데이터를 확인하면서 GPT답변이 정확한지 확인.
  • 데이터 전처리를 GPT에서 요청함. (결측치 제거)
  • GPT의 예시 코드를 직접 호출함으로써, 실제 전처리 결과 확인.

d. LangChain을 활용한 프롬프트 엔지니어링 - 문서 분석

유료 openAPI key 필요

강의영상 내용

  • pdf라이브러리를 통해, pdf 파일을 텍스트로 가져옴.
  • 텍스트 데이터를 ChatGPT에게 전달함
  • 실제 데이터를 확인하면서 GPT답변이 정확한지 확인.

댓글 쓰기

다음 이전