[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.10.17
📕 학습 목록
- 자연어 처리 모델 (NLP) 개념 복습
📗 기억할 내용
1. 자연어 처리 모델(NLP) 정의
- 자연어 처리 모델(NLP, Natural Language Processing): 인간이 사용하는 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 기술. 텍스트 데이터를 분석하고, 이해하며, 생성하는 작업을 포함하며, 이러한 작업을 수행하기 위해 다양한 모델들이 발전해 왔음
2. 자연어 처리 모델(NLP)
1) NLP 모델의 발전
① 초기 모델
- LSTM(Long Short-Term Memory): 시계열 분석이 가능한 기초적인 모델. 숫자 분석에는 강점을 보이지만, 자연어 분석에는 부족한 면이 있음
② 발전형 모델
- CNN + LSTM: 단순한 시계열 분석 이상의 작업을 처리할 수 있는 모델. CNN이 이미지나 자연어에서 특성 추출, LSTM이 시계열 데이터를 다루는 방식으로, 더 복잡한 자연어 처리 작업을 가능하게 함
③ Seq2Seq 모델
- 텍스트를 시퀀스 단위로 분석하는 모델. 이때부터 우리가 흔히 아는 챗봇이 등장. Seq2Seq 모델은 입력과 출력 시퀀스를 매핑하는 데 특화됨
④ Transformer 모델
- Attention 메커니즘을 도입하여 정보 처리 성능을 크게 향상시킨 모델. 발화 정보 저장과 병렬 처리를 통해, 현 세대 챗봇의 기반이 되는 알고리즘을 제공함. 주요 모델로는 BERT, GPT, T5, Polyglot, LLaMA 등이 있음
Transformer 모델 | |||||
BERT | GPT | T5 | Polyglot | LLaMA | |
개발사 | 구글 | 오픈AI | 구글 | 다중 기여자 (오픈소스) | 메타 AI |
주요 작업 | 마스킹된 언어 모델 | 생성형 언어 모델 | 텍스트-투-텍스트 작업 | 다국어 언어 이해 | 생성형 언어 모델 |
모델 구조 | 트랜스포머 (인코더) | 트랜스포머 (디코더) | 트랜스포머 (인코더-디코더) |
트랜스포머 기반 구조 |
트랜스포머 기반 구조 |
훈련 방식 | 대규모 코퍼스에서 사전 훈련 후, 특정 작업에 맞게 미세 조정 | 오토리그레시브 언어 모델링 사전 훈련 | 모든 NLP 작업을 텍스트-투-텍스트 형식으로 변환하여 사전 훈련 | 다국어 코퍼스를 기반으로 사전 훈련 | 효율성과 성능을 중점으로 한 생성 작업에 대한 사전 훈련 |
장점 | 텍스트 내 문맥과 관계 이해에 탁월 | 텍스트 생성 작업에 우수 | 다양한 NLP 작업에 유연하게 대응 | 다양한 언어 처리에 강점 | 대규모 생성 작업에 효율적이고 확장 가능 |
단점 | 텍스트 생성 작업에 부적합 | 복잡한 추론이나 긴 문맥 처리에 한계 | 각 작업에 대한 미세 조정 필요 | 특정 도메인 작업에서는 한계 | 아직 새로워 특정 벤치마크에서 한계 |
2) 벡터화 (Vectorization)
① 벡터화 : 자연어 시퀀스를 컴퓨터가 처리할 수 있는 벡터 형태로 변환하는 작업
② 벡터화의 종류
- 원-핫 벡터(One-Hot Vector)
- 차원: 고차원 희소 벡터
- 차원의 크기: 단어 집합의 크기에 비례
- 변환 기준: 사용자가 지정해야 함
- 변환 값: 이진 데이터(0, 1)
- 임베딩 벡터(Embedding Vector)
- 차원: 저차원 밀집 벡터
- 차원의 크기: 사용자 지정 가능
- 변환 기준: 훈련 데이터에 의존 (학습을 통해 생성됨)
- 변환 값: 실수 데이터로 표현
3) 벡터화 관련 용어
- 분산 표현(Distributed Representation): 특정 단어를 다차원 벡터로 표현하는 방법
- 임베딩(Embedding): 분산 표현을 활용해 문자열 간의 유사성을 벡터화하는 작업
- 임베딩 벡터(Embedding Vector): 임베딩이 된 상태의 데이터
- 자연어 유사도 계산: 임베딩 벡터 간의 유사성을 계산하는 방식. 코사인 유사도(Cosine Similarity)가 대표적
- 코사인 유사도: 벡터화된 문자열 A와 B 간의 각도 차이를 이용해 유사도를 계산. 값이 1에 가까울수록 서로 비슷한 문자열임
- Word2Vec: 자연어 임베딩을 위한 대표적인 학습 방법
- CBOW(Continuous Bag of Words): 주변 단어를 이용해 중심 단어를 예측하는 방식
- Skip-gram: 중심 단어를 통해 주변 단어를 예측하는 방식
4) Transformer 모델 구조
- Encoder-Decoder 구조: 입력 시퀀스와 출력 시퀀스를 처리하는 방식. 인코더는 입력을, 디코더는 출력을 처리함
- Positional Encoding: Transformer 모델은 순서 정보를 다루지 않기 때문에, 문맥 정보 손실을 방지하기 위해 임베딩 과정에서 위치 정보를 추가함
- Multi-Head Attention: Attention 연산을 병렬로 처리하여 모델의 성능을 향상시키는 구조
5) 생성형 AI (Generative AI)
- 생성형 AI(Generative AI): 인공지능(AI), 머신러닝(ML), 딥러닝(DL)의 하위 개념으로, 텍스트 입력을 받아 인간과 유사한 응답을 생성하는 모델을 의미함. 텍스트, 그림, 음악 등 다양한 형태의 출력을 생성할 수 있음
6) LLM(대규모 언어 모델)의 학습과 응답 방식
① LLM의 학습 평가 기준
- RLHF(Reinforcement Learning with Human Feedback): 인간 피드백을 통해 학습을 강화하는 방식. 신뢰도가 높지만, 시간이 많이 소모됨
- AI Feedback: AI가 스스로 응답의 품질을 평가하는 방식. 자동화는 가능하지만 품질 평가의 신뢰도가 낮을 수 있
② LLM의 응답 방식
- 사용자 정의 모델 학습: 학습 비용이 크고 데이터 요구량이 많지만, 성능이 뛰어남
- Fine-tuning(미세조정): 사전 학습된 모델에 추가 학습을 시켜, 특정 도메인에 맞춰 성능을 향상시킴
- RAG(Retrieval-Augmented-Generation): 외부 데이터를 참조하여 응답을 생성하는 방식. 빠르고 비용이 적음
- 프롬프트 엔지니어링: 특정한 응답을 유도하는 프롬프트를 작성하여 성능을 높이는 방식. 비용이 적고 간편함
7) 프롬프트 엔지니어링
① 성공 기준 정의
- 구체적인 기준을 제시: "좋은 성능"이라는 막연한 표현보다, "정확한 감정 분류"와 같이 구체적인 기준을 설정해야 함
- 정량적인 기준 제시: "안전한 출력"보다는, "1만 번 출력 중 유해 콘텐츠 필터링 모델에 의해 처리된 대상이 0.1% 미만일 것"처럼 명확한 수치로 기준을 정함
- 예: 가용성(Availability)은 정량적 기준이 될 수 있으며, 시스템이 99.9%의 가동성을 보장하는 식으로 표현 가능함
- 엣지 케이스(Edge Case)도 정량적으로 처리할 수 있으며, 오류 없이 처리되는 비율을 99% 이상으로 설정하는 식으로 정량적 기준이 될 수 있음
- 정성적인 기준 사용 시: 응답 품질을 1~10 범위로 평가하거나, 전문가가 설정한 기준에 맞춰 응답을 평가
② 평가 절차 구축
- 작업별 평가 기준 설정: 관련 없는 응답이 나오는지, 지나치게 긴 입출력 처리는 어떻게 할 것인지, 모호한 응답에 대한 처리를 명확히 정의해야 함
③ 프롬프트 유형
- Zero-shot prompt: 단순히 질문만 제시하는 방식
- One-shot prompt: 하나의 예시를 제시하여 답변을 유도
- Few-shot prompt: 여러 개의 예시를 제시하여 보다 정확한 답변을 유도
④ Pre-context와 역할 부여
- Pre-context 제공: 질문 외에 시스템 프롬프트를 통해 사고의 흐름을 제공하여 답변의 방향성을 유도함
- 역할 프롬프팅(Role Prompting): 특정 역할을 부여하거나 상황을 가정하여 답변의 톤과 형식을 조정할 수 있음. 예를 들어, "초등학교 4학년 학생처럼 설명해줘"와 같은 지시
⑤ 명확한 프롬프트 입력
- 출력 사용 목적 제시: 출력의 목적과 대상에 맞는 형식을 요구
- 출력 내용 제한: 예를 들어, XML 태그를 사용해 출력 형식을 제한하거나, 어휘 수준을 제한하는 방법 사용
⑥ 멀티샷 프롬프팅(Multi-shot Prompting)
- 멀티샷 프롬프팅 이유
- 환각 현상 방지: 명확한 의미 전달을 위해 예시를 제시
- 일관성 확보: 규격에 맞는 응답을 유도
- 성능 향상: 출력 토큰 절약 및 효율성 향상
- 주의사항
- 요청 응답과 관련성이 있어야 함
- 예시 데이터는 다양하게 제시하며 엣지 케이스를 최소화
8) Fine-tuning과 RAG
- Fine-tuning(미세조정): 특정 도메인에 맞춰 모델을 학습시켜 응답의 품질을 향상시키는 방식
- RAG: 외부 문서를 참조하여 응답을 생성하는 방식. 참조할 문서 데이터에 따라 응답의 품질이 달라짐
9) GeDi 및 PPLM
- GeDi(Guided Language Model): 생성된 응답을 필터링하거나 제어하는 기술. LLM이 잘못된 답변을 하지 않도록 유도
- PPLM(Plug and Play Language Model): 생성된 응답 방향을 개발자가 인위적으로 조절하는 방식. 기존 LLM과 달리 개발자가 벡터 방향을 조절하여 원하는 대로 응답을 유도
10) 오픈소스와 프로프라이어터리 모델
- 오픈소스: 소스 코드가 공개되어 수정 및 재배포가 가능한 모델
- 프로프라이어터리: 소스 코드가 공개되지 않으며, 주로 기업에서 사용하는 모델
📘 트러블 슈팅
[문제]
- 문제 내용
출력 과정에서 오류 발생
def solution(str1, str2): answer = '' for i, j in [str1, str2]: answer += i answer += j return answer
ValueError: too many values to unpack (expected 2)
- 문제 원인
for i, j in [str1, str2] : str1과 str2는 문자열이기 때문에 이 부분에서 제대로 작동하지 않음
[해결]
- 해결 방법
zip을 사용하여두 문자열을 번갈아 가며 병합
- 해결 결과
def solution(str1, str2): answer = '' for i, j in zip(str1, str2): answer += i answer += j return answer
테스트 1 입력값 〉 "aaaaa", "bbbbb" 기댓값 〉 "ababababab" 실행 결과 〉 테스트를 통과하였습니다.
📙 내일 일정
- aws 특강
'TIL _Today I Learned > 2024.10' 카테고리의 다른 글
[DAY 64] AWS 환경 이해 (0) | 2024.10.21 |
---|---|
[DAY 63] AWS 특강 (0) | 2024.10.18 |
[DAY 61] NLP 실습???????? (0) | 2024.10.16 |
[DAY 60] 자연어 처리 (NLP) 모델 (1) | 2024.10.15 |
[DAY 59] 자연어 처리 (NLP) (2) | 2024.10.14 |