![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/VezBf/btqt84ABnfm/IUkRQN1zIksBUXo405cg3K/img.png)
기존 통계 기반 언어 모델의 문제점 학습 데이터에 존재하지 않는 n-gram 데이터가 포함된 문장이 나타날 확률 값을 0으로 부여한다. 이러한 문제점은 Back-off 또는 Smoothing 방법으로 일부 보완할 수는 있지만 완전히 해결할 수 있는 것은 아니다. '장기 의존성 (Long-Term Dependency)' 문제가 발생한다. 즉, n-gram 의 n 의 값이 커질수록 등장 확률 값이 0인 단어 시퀀스가 폭발적으로 증가하게 된다. 단어 / 문장 간 유사도를 계산할 수 없다. 단어들은 모두 원-핫 벡터로 표현되고, 두 단어의 유사성을 구하기 위해 내적을 할 경우 값은 항상 0이 나오며, 이는 두 단어 벡터가 직교 (Orthogonal) 한다는 것이다. 직교한다는 것은 두 벡터가 서로 독립적 (In..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cQHzmh/btqBc5GGUYs/kWqFPGe1KTy1hzyuw8Sut1/img.png)
A / B Testing 의 단점을 보완 A / B Testing : A / B Testing URL A / B Testing이 단점을 간단히 얘기하면 다음과 같다. 테스트를 많이 하면 단기적으로 손해가 발생할 수 있다. A / B Testing의 결과는 시간의 흐름 (계절 / 취향 변화) 에 따라 바뀔 수 있다. MAB (Multi-Armed Bandits) ? A / B Testing의 문제를 해결하기 위해 실험을 길게 하거나, 일정한 주기로 동일한 실험을 반복하는 방식으로 보완할 수는 있지만 비효율적이다. 아래 그림은 카카오의 추천 AI 플랫폼인 '토로스'의 내부 로직이다. MAB가 어느 시점에 쓰이는지 직관적으로 알 수 있다. 어원 및 정의 A / B 테스트가 가진 문제점을 해결한다고 알려진 MA..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ukQNW/btqBcwJk6h0/UhBW2JhmXchBObbP6S9KK1/img.png)
A / B Testing ? 웹 사이트 방문자를 임의로 두 집단으로 나누고, 한 집단에게는 기존 사이트를 보여주고 다른 집단에게는 새로운 사이트를 보여준다. 두 집단 중 어떤 집단이 더 높은 성과를 보이는지 측정하여, 새 사이트가 기존 사이트에 비해 좋은지를 정량적으로 평가하는 방식을 말한다. 여기에서 성과란 새 사이트가 목표로 했던 바에 따라 다른데, 보통은 회원 가입율, 재방문율, 구매전환율 등의 지표를 본다. A / B Testing의 4가지 장점 다음 URL의 Benefit을 번역했다 : https://www.nngroup.com/articles/putting-ab-testing-in-its-place/ 웹 사이트 분석의 한 분야로서, 실제 상황에서 고객의 실제 행동을 측정한다. 버전 B가 버전 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/NUupf/btqA6EgvPSl/nfa3ltCSwVHjKkZi3eyDk1/img.png)
문제 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지 (L) 나 바다 (W) 로 표시되어 있다. 이 지도에서 이동은 상하좌우로 이웃한 육지로만 가능하며, 한 칸 이동하는데 한 시간이 걸린다. 보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀있다. 육지를 나타내는 두 곳 사이를 최단 거리로 이동하려면 같은 곳을 두 번 이상 지나가거나, 멀리 돌아가서는 안 된다. 예를 들어 위와 같이 지도가 주어졌다면 보물은 아래 표시된 두 곳에 묻혀 있게 되고, 이 둘 사이의 최단 거리로 이동하는 시간은 8시간이 된다. 보물 지도가 주어질 때, 보물이 묻혀 있는 두 곳 간의 최단..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/1fvZl/btqA3eDhsMZ/IaT704sikX8HUDhAF0THck/img.png)
문제 우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다. 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오. 입력 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일 내용은 다음과 같다. 첫째 줄에는 전체 사람의 수 n이 주어진다. 둘째 줄에는 촌수를 계산..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/usYBW/btqA0ODHupI/4a0Xky3m2KtV2fHsJYdbKK/img.png)
문제 초기에 {0}, {1}, {2}, ... {n} 이 각각 n+1개의 집합을 이루고 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작성하시오. 입력 첫째 줄에 n (1 ≤ n ≤ 1,000,000), m (1 ≤ m ≤ 100,000) 이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 포함되어 있는 집합과, b가 포함되어 있는 집합을 합친다는 의미이다. 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산은 1 a b의 형태로 입력이 주어진다. 이는 a와 b가 같은 집합에 포함되어 있는지를 확인하는 연산이다...
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bHp0Tn/btqA0O4lnqe/rmmJ2gYCj8Kg91qygluWf1/img.png)
상호 배타적 집합 공통 원소가 없는, 즉 상호 배타적인 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료 구조가 바로 유니온-파인드 자료 구조이다. Example 어떤 파티에 n명의 사람들이 왔다고 하자. 생일이 동일한 사람들끼리 팀을 구성할 때, 같은 사람을 한 번 찾게 되면 이 사람들은 팀을 이뤄 같이 움직인다. 그리고 다른 팀과 생일이 같다는 것을 확인하면 곧장 두 팀은 합쳐지게 된다. 상황 표현 및 연산 우선 각 사람을 0 ~ n - 1 까지의 원소로 표현한 뒤, 각 1개의 원소를 포함하는 n개의 집합을 만든다. 두 사람 a와 b가 서로 생일이 같다는 사실을 알 때마다 두 사람이 포함된 집합을 합치게 된다. 이와 같은 일들을 구현하기 위해 세 가지 연산이 필요하다. 초기화 : n개..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dwby9M/btqAPeCyOGB/90kucS4rp0LDQkOOITadlk/img.png)
Abstract 많은 협업 필터링 (CF, Collaborative Filtering) 알고리즘은 아이템 유사도를 생성하기 위해 아이템-아이템 간 관계를 분석한다는 점에서 아이템 기반이라고 할 수 있음. 최근 자연어 처리 분야에서의 연구들 중 일부는 뉴럴 임베딩 알고리즘을 사용하여 단어의 잠재 표현을 학습하는 것을 제시했음. 이 방법들 중 Word2Vec으로 알려진, Negative Sampling 을 이용한 Skip-gram (SGNS) 은 다양한 언어학적 작업에서 좋은 결과를 가져왔음. 이 논문에서, 우리는 아이템 기반 CF가 동일한 프레임워크의 뉴럴 단어 임베딩으로도 만들 수 있다는 것을 보여줌. SGNS에서 영감을 받아, 우리는 Item2Vec이라고 이름 붙인, 잠재 공간에서 아이템에 대한 임베딩..