Defining a new learning problem skip-gram 모델은 위처럼 context 하나에 대해 target을 random sampling 하는 방식입니다. 위 예시에서는 k 변수를 4로 설정하여 실제 target을 제외한 후보를 네 개 추출한 것을 볼 수 있습니다. 만약 데이터셋이 작은 경우라면 이 k의 값을 키워 여러 개의 단어를 추출해보는 것이 좋습니다. 반대로 데이터셋이 크다면 k의 값을 줄이는 것이 효율적입니다. 결국 context - word 쌍을 input X로 주고, target y를 output으로 두어서 모델이 학습하게 됩니다. Model 위 소프트맥스 함수는, context와 target 쌍이 주어졌을 때, 예측 결과가 실제 target이었을 확률을 구하는 것입니다..
Skip-grams 이번에는 Word2Vec 모델 중 하나인 skip-gram에 대해 다룹니다. 지금까지는 target 단어를 기준으로 context를 어떻게 설정하는지에 대해 주로 이야기했습니다. 하지만 여기서는 orange라는 하나의 context를 기준으로 랜덤하게(5개의 단어 +- 범위 내에서) target을 설정한 것을 볼 수 있습니다. Model context에 따른 target을 설정하는 방법이 조금 다르다는 점을 제외한 나머지 과정은 동일합니다. context의 one-hot vector를 통해 embedding matrix에서 해당 column을 추출합니다. 여기에 softmax를 적용해 어떤 단어가 될지(vocab에 포함된 단어 중)를 예측하여 y hat을 구합니다. 이때 context..
Neural language model 지난 시간까지 배웠던 word embedding이 어떤 식으로 모델 학습에 이용되는지를 나타내고 있습니다. 1. 각 단어(토큰)를 대상으로 vocab에서 숫자를 꺼내어 one-hot vector를 생성합니다. 2. 이를 이용하여 embedding matrix에서 매칭되는 column을 추출합니다. 3. 추출된 column을 중첩하여 input으로 이용합니다. 4. 모델 학습은 이렇게 만든 input에 대한 weight & bias, 그리고 softmax를 통해 추출한 확률을 구할 때의 weight & bias로 진행됩니다. Other context/target pairs target, 즉 예측하고자 하는 단어의 주변 문맥을 어디까지 설정하는가도 중요한 문제입니다. ..
Selection 이번에는 '선택'과 관련한 문제입니다. 만약 어떤 배열에서 '최소/최대'의 값을 구해야 한다면 배열을 한 번만 쭉 훑으면서 최소/최대의 값을 저장하면 되기 때문에 선형 시간이 필요할 것입니다. 즉, N만큼의 시간이 소요되죠. 하지만 배열에서 k번째의 값을 구하려면 이는 단순히 한 번 훑어보는 것으로 판단할 수 있는 문제가 아니게 됩니다. 정렬 후 k번째 값을 가져오면 되지만 이는 linearithmic, 즉 NlogN만큼의 시간이 필요한 작업입니다. 뭔가 비슷한듯 비슷하지 않은 두 방식에 대해서, 후자도 선형 시간으로 처리할 수 있지 않을까? 라는게 과거 학자들의 궁금증이었습니다. Quick-select import random def partition(a, lo, hi): i, j =..
Quicksort 퀵정렬의 기본 개념은 다음과 같습니다. 우선 배열을 무작위로 섞고, 좌우 구간으로 나눕니다. 하나(i)는 왼쪽에서 오른쪽으로 이동하고, 나머지(j)는 오른쪽에서 왼쪽으로 이동합니다. i는 기준(partitioning element)보다 큰 값이 나오면, j는 기준보다 작은 값이 나오면 이동을 멈춥니다. 두 값을 교환합니다. 위 과정을 반복합니다. 퀵정렬은 합병 정렬이 그 자체로 수행되기 전에 분할하는 것과 달리, 퀵정렬은 분할마다 정렬이 수행된다는 차이점이 있습니다. Quicksort partitioning demo Quicksort: Java code for partitioning, Java implementation def partition(a, lo, hi): i, j = lo, ..
Analogies 벡터는 특정 차원 내의 한 점을 가리키는 화살표로 이해할 수 있습니다. 따라서 두 벡터 간의 차를 통해 다른 벡터 간의 특징을 유추할 수 있습니다. 예를 들어 man-woman의 차이를 생각해보면 성별이 반대라는 특징을 얻을 수 있죠. 이런 차이는 king-queen에서도 똑같이 드러날 것입니다. Analogies using word vetors 그래서 만약 man-woman과 유사한 관계에 있는 king의 짝꿍을 찾는다고 한다면 위와 같은 sim(유사도) 공식을 이용할 수 있습니다. 유사도가 가장 높은(arg max) 원소를 찾는 방식을 이용하는 것이죠. 이는 2차원 공간으로 시각화했을 때를 생각해보면, 두 벡터 간의 차이를 나타내는 화살표(벡터)가 가장 유사한 것이 무엇인지 찾는 과..