본 정리글은 "[챗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 (0) | 2017.07.21 |
[ML lec 05] Logistic Classification (0) | 2017.07.19 |