Books 9

[Books] Weighted Embedding

가중 임베딩(Weighted Embedding)은 단어 임베딩을 문장 수준 임베딩으로 확장하는 방법이다. 제안한 논문에서는 문서 내 단어의 등장은 저자가 생각한 주제에 의존한다고 가정한 후 분석을 수행한다. 즉, 주제에 따라 단어의 사용 양상이 달라진다는 것이다. 이를 위해 주제 벡터(Discourse vector) $\text{c}_s$라는 개념을 도입했다. 본 논문에서는 $\text{c}_s$가 주어졌을 때 어떤 단어 $w$가 등장할 확률을 다음과 같이 정의했다. \[ \text{P}(w|\text{c}_s) = \alpha \text{P}(w) + (1-\alpha) \frac{\exp(\tilde{c}_s \cdot \text{v}_w)}{\text{Z}}\] \[ \text{where} \ \t..

[Books] 행렬 분해 기반 언어 모델 (LSA, GloVe, Swivel)

Contents 행렬 분해는 단어-문서 행렬이나 TF-IDF 행렬 등의 행렬 구조에 차원 축소 방법을 적용해 차원의 수를 줄여 계산 효율성을 키우고, 행간에 숨어 있는 잠재 의미를 파악하는 것이 목표다. 언어 모델이 가질 수 있는 행렬은 단어-문서 행렬, TF-IDF 행렬, 단어-문맥 행렬, 점별 상호 정보량(PMI) 등이 존재하는데, 이번 글에서는 PMI 행렬의 특수한 버전인 PPMI 행렬에 대해서 다루어볼 것이다. PMI는 두 확률변수 사이의 상관성을 계량화한 지표이며, 두 단어의 등장이 독립을 가정했을 때 대비 얼마나 자주 같이 등장하는지를 수치화한 것이고, 수식은 다음과 같다. \[ \text{PMI}(A,B) = \log \frac{\text{P}(A,B)}{\text{P}(A) \times \..

[Books] 확률 기반 언어모델 (NPLM, Word2Vec, FastText)

Contents 단어수준 임베딩이란 추후 나올 문장수준 임베딩이 나오기 이전에 나온 방법론으로, 단어들을 임베딩해 모델을 구축하는 것을 의미한다. 단어수준 임베딩은 예측기반 모델(rediction based model)과 행렬 분해기반 모델(Matrix Factorization based model)이 존재한다. Prediction based model NPLM, Word2Vec, FastText Matrix Factorization based model LSA, GloVe, Swivel 이번 글에서는 NPLM, Word2Vec, FastText 등의 확률 기반 언어모델에 대해서 다룰 것이고, 행렬 분해 기반 언어모델은 다음에 다루어볼 것이다. Prediction Based Model NPLM (Neur..

[Books] 한국어 전처리

이기창님께서 작성하신 한국어 임베딩을 정리 및 요약했습니다. 영어의 경우 상대적으로 전처리하는 작업이 수월하다. 하지만 한국어의 경우 띄어쓰기가 사람마다 제각각일 수 있고, 단어의 순서가 바뀌더라도 해석하는데 있어 문제가 되지 않는다. 그로 인해 다른 언어에 비해 전처리하는 과정이 어렵다. 하지만 이 책에서는 한국어를 전처리하는 과정을 상세히 작성해주었기 때문에 많은 도움이 될 것이다. 본 책에서는 위키피디아, 네이버 영화 말뭉치 등 여러 오픈 데이터를 기반으로 한국어 전처리를 수행하였다. 한국어 형태소 분석기에는 은전한닢, 꼬꼬마, 한나눔, Okt, 코모란 등 5개의 오픈소스 형태소 분석기가 존재하는데 KoNLPy에서 모두 사용 가능하도록 제공해주고 있다. 또한, 형태소 분석기를 지도 학습 형태소 분석..

[Books] 오차역전파란? Backpropagation

오차 역전파는 딥러닝의 기초라고 할 수 있다. 이전까지 우리는 수치 미분을 통해 기울기를 구해 학습했지만, 이 방법은 매우 시간이 오래 걸린다. 그렇기에 딥러닝에서는 가중치의 기울기를 효율적으로 계산하는 오차역전파법(backpropagation)을 사용한다. 위와 같이 왼쪽에서 오른쪽으로 노드$^{\mathsf{node}}$에서 엣지$^{\mathsf{edge}}$를 거쳐 계산이 되는 방식을 순전파(forward propagaction)이라고 한다. 그 반대로 진행하는 것을 우리는 역전파라고 부른다. 역전파는 순전파와 달리 굵은 선을 표시하며 이 전파는 '국소적 미분'을 전달하고 아래의 수치는 미분 값을 의미한다. 여기서 '국소적 미분'을 전달하는 원리는 연쇄법칙(chain rule)에 따라 전달하게 된..

[Books] 신경망 학습하기 (loss function, gradient descent)

밑바닥부터 시작하는 딥러닝1을 리뷰합니다. 이전 글에서 선형으로 분리가 되는 문제의 경우 데이터로부터 자동으로 학습할 수 있다. 하지만 비선형 분리의 문제의 경우 자동으로 학습하는 것이 불가능하기 때문에 비선형 문제에서는 손실 함수(loss function)라는 개념이 나오게 된다. 본 책에서는 신경망 학습에서는 현재의 상태를 '하나의 지표'로 표현한다고 언급했다. '지표'를 가장 좋게 만들어주는 가중치를 탐색하는 것이 목표라고 할 수 있다. 여기서 '지표'는 바로 손실 함수이다. 손실함수는 다양한 함수들이 존재하지만, 일반적으로 오차제곱합(Sum of Squares for Error, SSE), 교차 엔트로피(Cross Entropy)를 많이 사용한다. 손실함수(loss function) 오차제곱합(S..

[Books] 밑바닥부터 시작하는 딥러닝 1 시작하기

밑바닥부터 시작하는 딥러닝1을 리뷰합니다. 밑바닥부터 시작하는 딥러닝(이하 밑시딥)1은 파이썬을 시작하고, 딥러닝에 관심을 가졌다면 필수적으로 읽고 가야하는 책이라고 생각한다. 밑시딥 시리즈는 딥러닝 패키지를 사용하지 않고 딥러닝을 밑바닥 구현부터 시작하기 때문에 딥러닝의 구조를 하나하나 파악할 수 있는 아주 좋은 책이다. 이 글에서는 밑시딥1을 읽고 지극히 개인적으로 중요하다고 생각하는 부분을 정리할 것이기 때문에 일부 내용이 빠져있을수도 있다. 밑시딥1은 밑바닥부터 구현하는 것을 목표로 두기 때문에 외부 라이브러리를 최소한만 사용한다. (numpy, matplotlib은 예외적으로 사용한다.) 기본적인 산술 연산 및 자료 구조와 같은 내용(1장)은 여기 코드를 참고하길 바라며, 본 글에서는 넘어가고,..

[Books] 임베딩(embedding)의 종류

이기창님께서 작성하신 한국어 임베딩을 정리 및 요약했습니다. 컴퓨터는 사람이 사용하는 자연어를 제대로 이해할 수가 없다. 그렇기 때문에 기계가 이해할 수 있도록 변환해주는 작업이 필요하다. 자연어가 가지는 통계적인 패턴(statistical pattern)을 벡터로 변환해주는 것이다. 임베딩을 만들 때 쓰는 통계 정보는 단어의 빈도, 언어 모델, 분포 가정으로 총 세 가지가 존재한다. 단어의 빈도 단어의 빈도는 BoW(Bag of Words)라고도 부르며, 어떤 단어가 많이 쓰였는지를 중요시한다. 순서를 고려하지 않고 단어들을 파싱(parsing)해서 단어의 빈도 수만 확인하는 방법이며, 대표적인 기법으로는 TF-IDF(Term Frequency-Inverse Document Frequency)이다. 딥..

[Books] 한국어 임베딩 시작하기

이기창님께서 작성하신 한국어 임베딩을 정리 및 요약했습니다. 한국어 임베딩은 한국어 자연어 처리를 하는 것에 있어 바이블과 같은 책이라고 말할 수 있다. 본 책의 내용을 간략하게 설명하고 본인의 스타일대로 추가 작성할 것이다. 일단 시작하기에 앞서 환경 설정 부터 진행할 것인데, 본인은 도커 환경에 컨테이너를 설치한 후 로컬 호스트에 연결시켜서 사용할 것이다. $ docker pull ratsgo/embedding-cpu docker run -it --rm --name ko_embedding \ -p 8888:8888 -v C:\[local directory]\:/notebook/embedding \ ratsgo/embedding-cpu:latest 로컬 호스트의 포트와 컨테이너의 포트를 연결시켜 준 후..

반응형