강의 노트: 입문 - 자연어처리 시작하기

2023. 7. 6. 21:00·AI/Lecture notes



본 정리글은 "[챗GPT 러닝데이] 입문 - 자연어처리 시작하기 - 김준영"을 보고 작성하였습니다.






자연어 처리?

자연어 처리 = 인간의 언어 텍스트를 컴퓨터로 표현하기

근본은 사실 확률적 언어 생성이다. => 입력된 제시 조건(문장, 단어 등)에서부터 내용을 잘 파악해서 어떤 말들이 이어서 나올 가능성이 높았는가?

컴퓨터로 문장과 문단의 의미를 다루기 위해서는

문장을 형태소로 분리하고 -> 토큰화(tokenizing)

형태소마다의 의미를 수로 표현할 수 있어야 함 -> 임베딩(embedding)






Tokenizer

크게 두가지 tokenizer가 있음



전문가 분석/지도학습 기반

Okyt, Komoran, Mecab, Hannanum, Kkma 등



비지도학습 기반

sentencepiece, soynlp 등
주어진 Corpus를 이용하여 형태소 종류를 직접 학습하거나, 자체 알고리즘을 이용하여 분석






Embedding

임베딩 기법이 발달하기 이전에는 여러 시도들이 있었음



통계적 기법의 활용

단어-문서 행렬
TF-IDF (Term Frequency-Inverted Document Frequency) 등

  • 모든 문서에서 자주 나오는 형태소는 중요도가 낮고
  • 특정 문서에 집중된 형태소는 중요도가 높다는 가정



단순 나열하기

One-Hot Encoding



한계

형태소의 특성을 잘 반영하려면 corpus가 커져야하는데, 커질수록 형태소 표현에 필요한 벡터가 불필요하게 커짐
결과적으로 적은 길이의 벡터로 형태소를 나타내기 위한 단어 수준 임베딩, 문장 수준의 임베딩으로 발전

  • 단어 수준: 잠재의미분석, Word2Vec, GloVe, FastText 등
  • 문장 수준: ELMo, BERT, GPT 등






임베딩: 자연어를 컴퓨터로 처리 가능한 수의 배열인 벡터(vertor)로 표현하는 과정 (dense vector)
=> 뜻과 문법 특성을 연산 가능



Wor2Vec



N-gram

N-gram: 문장 내의 형태소를 N개 단위로 묶은 집합, 각 묶음 안에는 순서와 인접성이 포함되기 때문에 N-gram을 이용하면 형태소와 형태소 사이의 배열에 잠재된 질적 특성을 처리할 수 있게 됨

ex) 아버지 가 방 에 들어가 시 ㄴ다

2-gram
(아버지, 가)
(가, 방)
...

4-gram
(아버지, 가, 방, 에)
(가, 방, 에, 들어가)
...

N-gram의 순서 배열을 이용하여 앞, 뒷말이 주어졌을 때 특정 단어가 출현할 조건부 확률을 계산할 수 있음
P(보다 | 거실, 에서, TV, 를) -> 높은 확률



MLP (Multi-layer Perceptron)

Perceptron: 인공신경망의 가장 기본적인 단위로, 입력 샘플을 구성하는 각 정보(x)들에 가중치를 곱한 다음 활성화 함수(activation)을 적용하여 결과를 얻는 과정. 로지스틱 회귀분석과 식의 형태가 동일.

Multi-Layer Perceptron: 복수의 perceptron으로 이루어진 layer를 여러 층 쌓아서 구성한 인공신경망 (Deep neural network)



Word2Vec: Skip-gram

하나의 문맥 단어를 넣고 k개의 주변 단어를 맞추는 구조의 인공신경망 모델
=> 주변 단어를 추정하도록 학습하는 과정에서 문맥 단어의 임베딩 벡터가 학습됨

입, 출력은 One-Hot Encoding의 형태
=> One-hot 벡터에 가중치 행렬을 곱하여 잠재벡터를 생성
=> 잠재벡터에 다른 가중치 행렬을 곱하여 k개 주변 단어의 On-Hot 벡터를 예측
=> 잠재벡터: 임베딩 벡터

Skip-gram 방식은 학습이 오래 걸리기 때문에, 시간 단축을 위하여 네거티브 샘플링과 서브샘플링 기법을 적용
=> 모든 단어에 대해서 가중치 행렬을 구해야 함

네거티브 샘플링
=> 모델이 '모든 단어가 주변 단어로 등장할 확률값을 예측'하는 컨셉이 아닌 '전체 단어 가운데 k개를 무작위로 추출해서 입력단어-추출단어의 관계가 positive 샘플인지 negative 샘플인지 예측'하게끔 하는 컨셉으로 변경

서브샘플링
=> 네거티브 샘플링 과정에서 전체 단어 가운데 등장 빈도가 높은 단어의 등장 확률을 줄이고, 낮은 단어의 등장 확률을 높이는 방향으로 확률을 보정

저작자표시 (새창열림)

'AI > Lecture notes' 카테고리의 다른 글

강의 노트: LoRa로 빠르게 나만의 모델을 만들어보자  (0) 2023.07.07
[ML lec 08] Deep Neural Nets for Everyone  (0) 2017.07.27
[ML lec 07] Application & Tips  (0) 2017.07.25
[ML lec 06] Softmax Regression  (1) 2017.07.21
[ML lec 05] Logistic Classification  (1) 2017.07.19
'AI/Lecture notes' 카테고리의 다른 글
  • 강의 노트: LoRa로 빠르게 나만의 모델을 만들어보자
  • [ML lec 08] Deep Neural Nets for Everyone
  • [ML lec 07] Application & Tips
  • [ML lec 06] Softmax Regression
pfldy2850
pfldy2850
인공지능의 서비스화와 현실화에 관심이 많은 엔지니어입니다.
  • pfldy2850
    DEV.DY
    Github LinkedIn
  • 전체
    오늘
    어제
    • All (105)
      • AI (68)
        • 어플리케이션 개발 (11)
        • 모델 인퍼런스 (9)
        • 검색 시스템 (11)
        • MLOps (8)
        • 기술,논문 리뷰 (7)
        • Lecture notes (10)
        • 오픈소스 릴리즈 노트 (12)
      • Infra (4)
        • Kubernetes (1)
        • Service Mesh (1)
        • Service Proxy (1)
        • Storage (1)
      • Data Engineering (4)
        • Spark (3)
        • Kafka (1)
        • Delta Lake (0)
      • 컴퓨터 공학 (2)
        • 소프트웨어 공학 (2)
      • 개발 (16)
        • ReactJS (8)
        • NodeJS (2)
        • Python (4)
        • Pytorch (1)
        • git (1)
      • 영어공부 (2)
        • GPT로 영어 회화 공부 (2)
      • 활동 (2)
        • 2017 NDC (2)
      • 기타 (1)
      • 레거시 (6)
        • OS (6)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
pfldy2850
강의 노트: 입문 - 자연어처리 시작하기
상단으로

티스토리툴바