목록전체 글 (8)
Applied Data Analysis Study
단어 횟수를 기반으로 표현하는 방식(Frequency-Based Method)은 문장에 있는 Token의 등장횟수를 세어서 표현하는 방식 Token의 횟수에만 집중하기 때문에 주머니 같은 곳에 Token을 모아놓고 단어를 뽑아서 문장을 표현해서 "Bag of Word(BoW)" 이라고도 한다. Token을 세어서 표현했다고 해서 단어빈도(Term-Frequency, TF)를 이용한 방식이라고도 한다.(이부분 살짝 이상하다. 왜냐하면 TF는 하나의 문서 안에서 혹은 문장 안에서의 단어빈도로 제한하는 것으로 알고 있다. ) Corpus의 모든 Token에 대해 문장(문단)을 위와 같이 BoW형태로 표현해 만든 Document-Term Matrix를 모델링에 사용하곤 했다. 이 방법에는 한가지 문제가 있는데 ..
컴퓨터는 0과 1을 통해 모든 작업을 수행하기 때문에, 학습을 할 때 역시 문자보단 숫자를 더 잘 처리한다. 그렇기 때문에 문자를 숫자로 바꾸는 여러가지 기법이 있는데, 그 중 one hot encoding은 범주형 데이터를 다룰 때 쓰는 가장 기본적이고 필수적인 방법이다. 자, one-hot encoding이 뭘까? 질문을 다시 해보자면, 문자를 숫자로 바꿀 때 조심해야 하는 문제가 뭘까? 눈치가 있는 사람들은 '범주형 데이터'라는 부분에서 금방 알아차렸을텐데, 데이터에 연속성이 없다는 것이다. 이건 아래 문장을 통해 보도록 하자. 수학문제를 풀다가 빡친 듯한 누군가가 쓴 글의 일부이다. 'I fucking hate math.' 띄어쓰기 기준으로 tokenization -> 사전 만들기 과정을 거치면 ..
문자를 숫자로 표현하는 방법 1. 문장을 의미 있는 부분(단위)로 나눈다(text segmentation) s="부평역은 길이 복잡하다" s=s.split(" ") print(s) # ["부평역은", "길이", "복잡하다"] Tokenization이라고 하고, 쪼개진 부분을 Token(문장을 구성하는 기본단위)이라고 부른다. 단어를 기준으로 나눌 수도 있고 형태소 단위로 나눌 수도 있고 언어의 특성마다 단위를 어떻게 하느냐에 따라서 성능이 달라질 수 있음 컴퓨터에게 "여기부터 여기까지의 문자의 나열은 특정한 의미가 있는 부분이니 하나로 인식하렴"이라고 가르쳐주는 과정이라고 볼 수 있다. 2. 나눠진 의미 있는 부분을 숫자로 바꿔 문장을 숫자로 표현한다.(Representation) token2idx={}..

글자보다 더 긴 형태의 Token을 만들어내기 위해 사용하는 방법 중 하나가 n-gram Tokenization n-gram 방법은 1개 단위가 아닌 여러 개(n)의 연속된 윈도우를 단위로 살펴보기 위해 나온 개념 uni-gram에서는 의미 없는 글자가 Token 이었다면 bi-gram과 tri-gram으로는 띄어쓰기나 글자로는 잡을 수 없던 "책상", "사과", "먹었다" 등의 Token을 찾을 수 있고 이런 의미를 가진 Token은 모델 학습을 도와줌 띄어쓰기 기준의 Token은 연속적으로 사용되는 용어를 잘 찾아낼 수 있음 (특히, 영어) 고유의 의미를 갖는 단어들을 조합해 다른 의미를 만드는 어려운 일 보다는 아예 다른 Token으로 모델 학습을 좀 더 쉽게 만들 수 있음 uni-gram, bi-..

BPE(byte pair encoding)은 1994년에 위의 논문을 통해 제안된 정보 압축 알고리즘인데, 최근에는 자연어 처리 모델로 많이 쓰이고 있다. 자연어... 아직까진 그냥 이름만 봐도 어려워 보인다. 차근차근 공부해보자. 기계에게 어마무시한 양의 단어를 학습시킨다 해도 세상의 모든 단어를 입력할 수는 없다. 너무 많으니까. 기계는 모르는 단어가 나오면 그 단어를 '단어 사전에 없는 단어'라는 의미에서 'UNK(unknown token)'로 표현한다. 영어 독해를 한다치면 빈칸이 되는 것이다. 영어문제를 풀어본 적이 있다면 누구나 알겠지만, 모르는 단어가 많아질수록 문맥, 주제 파악등이 아주 어려워진다. 기계도 역시 마찬가지로, 모르는 단어가 있으면 문제 푸는 것이 까다로워진다. 이런 상황을 '..

VGG - 2014년 ILSVRC대회에서 2위를 차지한 모델 - 3x3 Convolution layer를 깊게 중첩한다는 것이 VGG의 큰 특징이다. - 레이어의 깊이에 따라서 VGG16, VGG19등으로 불린다. GoogLeNet 2014년 ILSVRC에서 VGGNet을 이기고 우승을 차지한 알고리즘으로 Inception모델이라고도 불린다. - Google+LeNet을 합친 말 - Inception 모듈이라는 개념을 CNN에 도입 기존의 CNN구조는 Convolution다음에 Pooling layer를 거치는 것이 일반적인데 Inception Model은 한 레이어 내에서 서로 다른 연산을 거친 후에 feature Map을 다시 합치는 방식이다. - 한 feature map 내에서 여러 Convouti..