NLP

오상윤·2023년 4월 17일
0

딥러닝

목록 보기
8/12

Natural Language Processing(NLP)

  • 사람이 이해하는 자연어를 컴퓨터가 이해할 수 있는 값들로 변환하는 과정, 혹은 그 반대 과정
  • Natural language Generation(NLG), Natural Language Understanding(NLU)

NLP가 어려운 이유

  • 수많은 단어, 다양한 형태 : 100만개 이상의 단어, 시제, 단수, 복수...
  • 의미의 모호성
  • 표현의 다양성

processing

tokenization

  • 문장을 단어별로 분리

normalization

  • De-capitalization : 대문자를 소문자로
  • stop words 제거
  • stemming/Lemmatization
  • 최소 등장 빈도

Vocabulary

  • 단어 <-> One-Hot Vector 간의 매칭 역할
  • Tokenizing -> Normalization -> Making vocab

Subword segmentation

  • 하나의 단어는 각각의 뜻을 가진 subword들의 조합이다
  • 하나의 단어 -> subwords 분리 & 각각을 임베딩
    • Out-Of-vocabulary(OOV) 문제 해결(희귀 단어, 신조어 등)
    • Stop words 제거 및 stemming/Lemmatization을 안해도됨
  • Subword tokenizer
    • Bype Pair Enconding
      • 단어를 문자 단위로 쪼갠 뒤 빈도수가 가장 높은 쌍을 하나씩 통합하는 과정을 n번 반복
    • Wordpiece
      • BPE의 변형
      • 가장 많이 등장한 쌍을 병합하는 것이 아닌, 병합되었을 때 전체 데이터의 Likelihood를 가장 높이는 쌍을 병합
    • SentencePiece
      • 영여는 모든 단어가 띄어쓰기로 구분되어 있지만 한국어, 중국어처럼 단어가 구분되어 있지 않는 경우도 있다
      • 사전 토큰화 작업 없이 토크나이즈 수행

Basic language Model

Language model(LM)

  • 문장의 등장 확률을 계산하는 모델
  • 기본 가정 : 문장은 단어들의 시퀀스
  • 모델 : 단어 시퀀스의 등장확률 계산 -> 문장의 등장확률
  • 모델 -> 대량의 데이터 -> 단어 등장패턴(확률 분포)학습

N-gram Language Model

  • 기초적인 통계기반 모델
  • 모델 가정
    • 문장의 등장 확률은 단어 등장의 결합확률이다
    • 단어 등장의 결합확률은 이전에 등장한 n개 단어들에 대한 조건부 확률이다.

Naive Bayes Language Model

  • 대표적인 통계기반 언어 모델
  • N-gram 모델도 여전히 Out-of-sample Problem 존재
  • 모델 가정
    • 문장의 등장 확률은 단어 등장의 결합확률이다
    • 단어 등장은 다른 단어들의 등장에 대해 독립적이다
  • 통계기반 방법론의 문제점
    1. Out-of-sample problem에 취약
    2. 단어 등장빈도 카운팅 -> 단어의 표현이 이산적

Distributed Word Representation

Meaning to Vector

  • 단어의 의미를 저차원의 벡터로 표현하는 것
    • 단어 간 수학적 연산을 통해 의미적 연산이 가능
  • 가정 : 벡터 공간 상 비슷한 위치의 단어는 비슷한 의미를 가진다
  • 용도 : 언어모델의 인풋
  • Context-Free/Contextual

Contxt-Free Word Representation

  • Word2Vec, GloVe, Fasttext
    • NNLM의 Word Embedding 개념을 발전시킴
    • 벡터가 단어의 의미를 잘 표현할 수 있도록 특화된 Embedding Task 제안
    • 대규모의 텍스트 데이터로 word embedding 사전학습 & 베포 -> word embedding의 시대
  • RNN, CNN 계열 모델과 함께 쓰였음
    • Contextual Word Representation을 사용하는 Transformer, ELMO, BERT 등장 이전까지

Word2Vec

  • word Embedding 방법론으로써 NNLM의 문제점
    1. 이전 단어만 참고, 주변 단어를 모두 참고하지 못함
    2. 계산량 많아지면 많은 데이터로 학습이 어렵다
  • 가정 : 문장 내 특정 단어는 주변 단어들과 의미적 유사성을 갖을 것이다.
  • 두 가지 방법
    • CBOW : 주변 단어로 중심단어 예측
    • Skip-gram : 중심단어로 주변단어 예측

Revurrent Neural network(RNN)

  • 입력과 출력을 시퀀스 단위로 처리하는 딥러닝 모델
  • 입력 시퀀스의 길이가 자유롭다 -> Language Model에 적합(MLP는 고정 길이만 가능)
  • 가정
    • 문장에는 관측되지 않는 정보(문맥)가 있어 관측가능한 정보(단어)와 서로 영향을 주고 받을 것이다
    • 특정 시점의 정보는 이전 시점들의 영향을 받을 것이다.

Long Short-Term Memory(LSTM)

  • RNN의 문제점
    • 하나의 벡터(hidden state)에 이전 문맥의 모든 정보를 담아야함
      • 시퀀스의 길이가 길어지면 정보량이 많아진다 -> 수용력의 부족 -> 오래된 정보를 기억하지 않음
      • 시퀀스 길이가 길어지면 예전 시점의 gradient는 감소 -> 오래된 정보에 대한 Dependency 학습 불가 -> Long-Term Dependency Problem
  • LSTM의 구조
    1. State: 이전까지의 정보
      1) Cell State: 전체 문맥
      2) Hidden State : 직전 시점의 출력
    2. Gate : 정보를 걸러내는 필터
      1) Forget Gate : 무엇을 잊을까?
      2) Input Gate : 무엇을 기억할까?
      3) Output Gate : 무엇을 출력할까?

Seq2Seq

  • input sequence -> output sequence
  • 길이가 다른 인풋과 아웃풋을 매핑할 수 있ㅇ음
  • NLG Task에 주로 사용

RNN Based Seq2seq

  • LSTM 또는 GRU 사용
  • 디코더의 작동 원리
    1. 인코더의 Context와 문장의 시작을 알리는 토큰 입력 -> 첫 단어 예측
    2. 직전 시점의 hidden state와 예측 단어 입력 -> 다음 단어 예측
    3. 문장의 끝을 나타내는 토큰 예측시까지 디코딩 반복

Teacher forcing

  • Training 시, 이전 단어의 예측이 틀렸다면 어떻게 할 것인가?
  • 디코더의 Input으로 이전 스텝의 Predicted word가 아닌 Target word(정답)을 넣어주는 학습 방식
  • 현재 스텝의 예측이 이전 스텝의 예측에 의존하지 않도록 함
  • inference시, 가장 그럴듯한 문장을 어떻게 찾아낼 것인가?
  • 매 스텝마다 가장 노은 확률을 갖는 단어를 Greedy하게 선택?
  • Beam search : 매 스텝마다 가장 높은 누적확률을 갖는 k 개의 단어를 선택 -> 등장까지 탐색
profile
가보자가보자~

0개의 댓글

관련 채용 정보