GNN 간단히 - 1

들어가며

이해의 목적으로, 내가 쓴 글을 남이 본다고 할 때 별 도움은 안되는 것 같다. 내가 이런 글을 쓰는 목적이 다른 사람을 이해시키려고 하는 게 아니기도 하고.. 이해를 정말 잘 해보고자 한다면, 분명 더 좋은 사람이 있을 거 같고, 별로 새롭거나 참신한 내용을 쓸 정도로 내가 전문가도 아니당.

Graph Representation Learning Book의 일부 챕터에 대한 요약이고, 내가 중요하게 생각하거나 이해를 못한 부분이 당연히 강조되어 있다.

Prerequiste;

\(G = (V, E, X_v, X_e)\), \(v \in V = \{1, 2, \dots, n\}\), \(e \in E \subseteq V \times ...

Click to read more ...

가난함에 대한 생각 (1)

들어가며

가난에 관한 내 경험을 다루는 글이며 일반화될 수는 없다고 생각한다. 어느 정도의 가난이냐면… 이를테면 제주도 수학여행을 못 가지는 않았지만, 수학여행비를 마련하기 위해 부모님이 고생을 했을 정도이다. 초등학교 때 친구따라 태권도 학원은 다닐 수 있었지만, 중학교 부터 공부를 가르치는 학원에 다니지는 않았다. 집을 위해 돈을 일찍 벌려고 특성화고에 진학했지만, 막상 대학교에는 올 수 있었던 정도의(다분히 국가장학금 때문이었다), 그런 정도의 가난에 대한 얘기다.

절대적, 상대적 가난

가끔 젊은 사람이 느끼는 가난 조금 더 일반적으로는 젊은 사람이 겪는 고통에 대해, 옛날엔 더 힘들게 살았다는 얘기를 하는 사람들이 많다. 사람마다 얘기하는 ‘옛날’은 제법 다르다. 70년대, 일제 치하, 더 심한 사람들은 가끔 증기 기관이 발명되기 이전 시대를 언급하기도. 이런 얘기를 하는 ...

Click to read more ...

An approximation of Cogswell Regularization for SGD update in Recsys.

Cogswell Regularization

Cogswell Regularization has been proposed by [1] in 2015. This is based on the following observations

  • Embeddings are spread on the Euclidean Space.
  • If two feature vectors are different, then their representations are different. It would be good to fill the embedding space with a similar density of embeddings if they are in the range of the input network.

So [1] Proposed the following obj...

Click to read more ...

"오픈소스를 해야 하는 이유"에 대한 생각.

잡담.

자주 듣는 얘기가 있다. 어떤 일이 A, B, C, …, Z 이렇게 순차적으로 이뤄진다고 할 때, 나는 A 설명했다가, B, C, ..,D까지 스킵하고는 E를 설명했다가, F를 한참 설명하다, 다시 B가 필요해진 것 같아 B를 설명하는 식이라고 한다. 한두 명만 이런 얘기를 하는 게 아니라, 나랑 가깝게 일을 한 모두가 비슷한 얘기를 하는 걸로 봐선, 좀 문제가 있는 것 같다.

상대방과 내가 같은 지식과 한계를 갖고 있을 것이라는 전제를 갖고 설명하는 듯한 느낌이다. 내가 쉬운 부분은 상대한테도 쉽고, 내가 어려운 부분은 상대방도 어렵고. 사회적 관계에서만이 아니라 일에서도 공감능력은 중요한 것 같다. 게다가 이런 건 노력해도 잘 나아지지 않는다고 한다……..

오픈 소스에 대한 개인적인 생각

솔직히 자기과시욕을 제외하면, 오픈소스를 왜 하는 이유를 잘...

Click to read more ...

NeuralSort

잡담

ICLR 2019에 실린 Stochastic Optimization of Sorting Networks via Continuous Relaxations 의 리뷰. 글을 안 쓴 지 너무 오래되서 글을 쓰는 방법을 잊어버린 것 같다.;;

Motivation

정렬이나 top-k element를 선택하는 일은 여러 머신 러닝 task에서 기본적인 연산 중 하나이다.

그런 예시 중 하나로, vector $q$가 주어졌을 때, 주어진 query $q$와 비슷한 여러 vector $v_1, \cdots, v_n$을 KNN을 생각할 수 있다.

이는 각각의 vector $v_i$에 대해 score $s(q, v_i) = q^Tv_i \text{ or } (q-v_i)^2$를 계산해서...

Click to read more ...

ALS, BPR을 직접 구현해봤다.

잡담

유명 추천 시스템 라이브러리 2개에 involve되어 있긴 한데, 생각해보니 추천 시스템 알고리즘을 스크래치부터 구현해 본 적이 거의 없는 것 같다. Logistic matrix factorization을 implicit에 구현해보긴 했는데…

그래서, 과연 나는 추천 시스템 알고리즘을 충분히 빠르게 구현할 수 있을까? 하는 생각이 들었다. 생각한 김에 바로 해봤다. 주말에 할 게 없기도 했었고…

사용할 언어/프레임워크 선택

언어

인터페이스 부분은 파이썬으로 진행하기로 결정했다. Numpy Array가 무척 편하기도 하고, scipy.sparse_matrix를 그대로 이용할 수 있다는 장점이 있기 때문이다.

사실, 중요한건 Backend였는데, 내가 약간이라도 경험해 본 기술을 사용하는게 유리할...

Click to read more ...