찾고자 하는 목표 u에서 출발, v를 방문할 확률확률밀도함수에 사용하기 위한 non-linear function
Softmax function : 다중 분류에 사용 (보통 출력층 activation func.)
Sigmoid function : 이진 분류에 사용 (보통 중간층 activation func.)
📌 참고
Softmax 함수는 Sigmoid 함수의 일반화
Odds Logit(딥러닝의 raw출력) : 0을 기준 []
Logit Sigmoid : 상호 역함수 [0,1]
Sigmoid Softmax : 다중클래스에 대해 일반화
u와 v가 그래프 랜덤워크에서 동시에 발생하는 확률
임베딩 내적값이 필요함!= u에서 시작한 랜덤워크 R에서 얻은 노드들
- 관측치 :
- 구하려하는 파라미터 :
- 이 확률을 최대화하여 분포의 모수(파라미터) 예측
우도법은 값을최대화 > (-)부호를 통해 최소화 개념으로 전환
👉 Loss를 최소화하는 임베딩 를 찾아보자
👉 와 의 내적을 최대화하면, Loss는 0에 가까워진다
✍ Why softmax? 다중클래스 분류문제로, 모든 노드들의 확률 분포를 정의하기 위함. 그러나 연산복잡도가 큼!
Problem : node의 개수 기준, complexity가 높음 :
Solution : Negative sampling
노드가 주어졌을 때, 두 개의 노드가 서로 유사한가에 대한 이진분류문제로 전환(단, node의개수만큼 반복 *k회 수행)
아래의 수식이 의미하는 것은 "노드 u, v가 유사하게 임베딩 되었을 확률-노드 u와 negative sampled된 노드(u와 유사하지 않을 것이라 판단된 노드.random walk에서 u 근처에 없는노드)이 유사하게 임베딩되었을 확률"로, 아래의 수식을 높게 학습시킨다는 것은 u와 v의 임베딩은 유사하도록, u와 negative sample된 다른 노드들의 임베딩은 유사하지 않도록 학습시킨다는 것을 의미함.
아래의 수식에서의 sigmoid함수는 [0,1]확률화의 기능으로 도입
참고:
📌참고 : 네거티브 샘플링
네거티브 샘플링은 전체 노드에 대한 내적값을 구하는 대신, 노드 와 이웃하지 않은 노드 중 개를 샘플링하여 사용함. 분자(앞)의 항은 의 이웃노드와 계산되는 이웃노드일 확률로 최대화되며, 뒤의 항은 의 이웃하지않은 노드와 계산되는 이웃노드일 확률로, 최소화되게 됨.
이 방법은 word2vec의 연산복잡도 개선 방식과 매커니즘이 동일. 문제의 정의를 아래와 같이 변경
에 포함된 모든 노드를 보지않고, 개의 별도 선별한 negative sample을 사용한다는 점도 다른 점입니다!
word2vec
AS-IS 'you'와 'goodbye' 맥락단어 입력이 주어질 때, 가운데에 나올 단어는 무엇입니까?
TO-BE 'you'와 'goodbye' 맥락단어 입력이 주어질 때, 가운데에 나올 단어는 'say' 입니까, 아닙니까?
Random walk
AS-IS 입력 노드 "u"가 주어질 때, 이웃노드는 무엇입니까?
TO-BE 입력 노드 "u"가 주어질 때, 'v'는 이웃노드입니까?
빈도수가 높은 단어들은 범용적으로 활용되는 경우가 많기 때문에, 특정 노드와의 관계가 크지 않을 것이라는 직관(i) 경사도의 계산 : 의 계산
(ii) 모든 에 대하여 를 업데이트 :

BFS-like walk : 낮은 의 값
DFS-like walk : 낮은 의 값