인천 평생학습 온라인 플랫폼(인천 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 연구가 진행되는 과정을 통해 알아보는 데이터 수집의 필요성
서비스 기획의 예
- 시장조사, 레퍼런스, 경쟁사분석, 비즈니스 모델 검토
- MVP 개발
- 유저 테스트
- 추가 개발
- 유저 오픈
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. 연쇄 프롬프트
- 아이폰에 대한 기사를 작성해줘.
- 헤드라인, 개요, 소제목으로 구성하고
[gpt 결과 output.] - 각 소제목에 3개의 핵심 메시지를 작성해줘.
[gpt 결과 output.] - 핵심 메시지별로 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답변이 정확한지 확인.
Tags:
개인공부_AI