본문 바로가기
TIL _Today I Learned/2024.10

[DAY 62] 자연어 처리 (NLP) 복습

by gamdong2 2024. 10. 17.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 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