본문 바로가기

딥러닝 & 머신러닝/강연

그래비티 클래스 3주차 강의 내용 정리

3주차 강의는 자연어 처리 내용이었다. 난 자연어 처리 관련해서 하나도 몰랐고, 이쪽으로 깊게 들어갈 생각도 아니기 때문에 가볍게 들으려고 했다. 근데 생각했던 것보다 내용이 방대하고 조금 어려워서 이해하기 힘들었다. 강사님도 살짝 텐션이 떨어지시는 것 같아 살짝 아쉬웠다. 그래도 자연어 처리가 정말 많이 활용되고 있는 분야이며, 컴퓨터 사이언스 뿐만 아니라 심리학이나 언어학 등의 도움이 필요하다는 것을 깨닫게 되었다.


임베딩: 글자를 숫자로 바꾼다. text data를 numerical data로.

BoW: 단순히 문장에 있는 단어가 몇 개나 있는지 센다. but 단순 빈도수로는 문맥 의미 파악못한다.

N-gram: 단어 몇 개를 하나의 토큰으로 본다.

tf-idf: 대표 단어를 단순히 빈도수 많은 단어로 여기지 않는 것. idf는 이 단어가 얼마나 희귀한지를 알려준다. 손흥민은 스포츠 기사에만 나오지만 은는이가는 다른 기사에도 다 나온다. 손흥민이 희귀한 단어라는 것을 알려준다.

word2vec: ‘오늘’이 주변이고 ‘날씨’가 주요 단어 – 인풋으로 오늘, 아웃풋으로 날씨를 표출하면 된다. 오늘이라는 단어만 1로 두고 나머지는 0으로 두는 원핫인코딩을 한다. 이때 랜덤한 가중치 행렬을 곱하면 1에 해당하는 부분만 살아남아서 룩업이 된다. -> 해당하는 단어만 룩업테이블을 만든다고 한다. V: 단어의 수

임베딩의 목적: 단어를 특정 숫자(n차원의 행렬)로 더 잘 표현하는 것. 유사한 건 유사하다고 보도록 -> 동시 등장하는 게 제일 유사한 단어라고 가정하는 게 word2vec. normalize를 통해서 깨끗해진 단어를 임베딩 해야 한다.

 

두 단어를 숫자로 표현한 벡터 간의 내적 값이 크면 동시에 더 자주 등장했다, 즉 서로 유사도가 높다고 생각하게 한다.

word2vec를 통해 이제 각 단어의 벡터를 구할 수 있게 되었다. but, 동의어를 둘 다 같은 벡터라고 생각하는 문제가 발생 ex) 저녁

 

충분한 양질의 데이터가 있으면 BPE가 좋은 선택이다.

 

text cnn: text에서는 직사각형 필터를 쓴다.

 

rnn: 타임 스텝이 한 번씩 돌 때마다 그 전 필터를 지나왔던 것들이 한 스택씩 쌓이게 된다.

기억을 한다는 게 가중치가 곱해진다는 건데, 스텝을 거칠수록 그래디언트 배니싱 문제가 생겨서 앞에 것을 까먹는다는 얘기

 

Lstm: rnn보다 기억력 좋다

코퍼스: 단어 데이터 모임

 

ELMo: 이미 잘 훈련된 language model의 임베딩을 쓴다. - 이미 잘 임베딩, 즉, 이미 각 단어가 숫자로 잘 표현된 것을 가져다 쓴다는 뜻

 

BERT: 현재 거의 모든 자연어 처리 모델의 백본 네트워크. 현존 최강의 성능.

transformer: self attention으로 이루어져 있고, self attention은 문장에서 어떤 부분이 중요한지 계속 쌓아나가는 것.

 

masked language modeling과 NSP를 열심히 하면 모델의 언어적 이해도가 높아질 거라 생각. -> 이게 pre training