일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 배반사건
- 헝가리안노테이션
- 몬테카를로 학습
- q learning
- 유전알고리즘
- 그리드월드
- 코딩스타일
- 스네이크케이스
- Traveling salesman problem
- 산업공학
- 파스칼케이스
- Sarsa
- Metaheuristic
- Docker Image
- multi task learning
- mmoe
- 케밥케이스
- 강화학습
- routing problem
- 카멜케이스
- on-policy
- 딥러닝
- 도커 컨테이너
- 확률공리
- Federated learning
- 큐러닝
- off-policy
- genetic algorithm
- 연합학습
- 도커 개념
- Today
- Total
SU Library
Graph공부 1. Mathine Learning with Graphs 본문
*시작하기에 앞서 스탠포드 대학의 CS224W강의를 듣고 제가 공부하고 이해한 것을 정리해놓은 것입니다.
그래프는 복잡한 세상을 표현하는 일반적인 수단중 하나입니다. 대표적으로 그래프로 표현될 수 있는 정보는 페이스북의 친구관계, 유튜브 알고리즘, 네플릭스 시청자 분석 등이 있지요. 뿐만 아니라 생물학의 단백질 구조, 이미지 내에서으 의 오브젝트의 관계 등등 생각보다 많은 것들을 그래프로 표현할 수 있습니다.

머신러닝 관점에서 그래프는 복잡한 도메인들을 관계그래프로써표한할 수 있는 풍부한 관계 구조를 가지고 있는 것이고, 우리는 이러한 관계를 모델링함으로서, 좋은 퍼포먼스를 얻는 것을 목표로 합니다.
Ways to Analyze Networks
네트워크(그래프)를 분석하는 방법은 크게 다음과 같은 방법들이 있습니다.
- Predict the type/color of a given node
- Node classification - Predict whether two nodes are linked
- Link prediction - Identify densely linked clusters of nodes
- Community detection - Measure similarity of two nodes/networks
- Network similarity
Embedding Nodes
d차원의 임베딩에 그래프의 노드들을 매핑시키는 것입니다. 이것은 비슷한 노드들끼리 임베딩차원에서 가까운 거리에 있다는 것을 의미하고 이는 관계를 정량적인 수치로 표현하는 방법입니다.

이전까지 개괄적인 방법에 대해서 훑어보았다면 이제부턴 그래프가 무엇인지부터 살펴보겠습니다.
Components of a Network

- 초록색의 점 :Node 혹은 Vertex(ices)라고 부르고 /math{N}으로 표기합니다.
- 점과 점을 이어주는 선은 links혹은 edge라고 부르며 /math{E}로 표기합니다.
- 위 구성을 하나의 그래프 혹은 네트워크라고 부르며, /math{G(N,E)}로 표기합니다.
Networks or Graphs?
- 네트워크는 종종 실제 시스템을 참조하기도합니다.
Ex: Web,Social network, Metabolic network. - 그래프는 네트워크를 수학적으로 표현한 것입니다.
Ex: Web graph, Social graph, knoledge graph

위의 그림에서는 그래프의 방향이 양방향인 Undirected그래프의 예시였습니다. 그래프의 Edge의 특징은 단방향성만 가지는 것들이 존재하는데, 이를 Directed 그래프라고 합니다. 아래그림을 보면서 차이를 확인하시기바랍니다.

Directed의 경우 대표적인 예시론 먹이사슬 트위터 팔로우 상태 등이 있습니다.
Node degree
그래프에서 각각의 노드들은 degree를 가집니다. 이는 쉽개 말해서 몇개의 edge가 현재 노드로 흘러 들어오는 것이냐를 계산한 것입니다. 이는 다음과 같은 방식으로 계산됩니다.
현재 노드에 들어오는 edge들을 인접한 노드들의 개수로 나눈 것입니다.


Complete Graph
하나의 양방향 그래프에서 가장 많은 엣지를 가지는 개수를 구하는 공식은 다음과 같습니다.

Representing Graphs: Adjacency Matrix
앞서 정의한 그래프를 인접행렬로 표현한 것입니다.

각 행과 열은 각 노드를 의미하는 것이고 1행에서 0 1 0 1은 1번 노드가 2번 4번과 이어져 있다는뜻입니다. 이는 Undirected 그래프에서는 대칭이기때문에 행과열이 같은 값을 지니지만, directed일 경우 오른쪽 그림처럼 대칭성을 지니지 않게 되지요.

Representing Graphs Edge list

노드와 노드를 이어주는 링크에 대한 표현입니다. (2,3)은 2와 3을 이어주고 (3,2)는 3에서 2로 가는 것이므로 위의 그림에선 양방향으로 표현했습니다. 그외에 단방향으로는 (3,4) ,(4,5) 등이 있습니다.
Representing Graphs : Adjacency list

인접리스트는 네트워크가 Large하거나 Sparse할때 유용하게 쓰입니다.
인접리스트는 주변의 인접한 리스트들, 현재 노드에서 이동 할수 있는 노드들을 출력합니다.
*여기서 Sparse하다는 의미는 fully connected의 반대의미로 모든 노드들이 maximum 한 링크를 가지지 않는 모든 네트워크를 말합니다.

Edge Attributes
Edge는 노드들의 관계를 나타내는데 이는 항상 0과 1로만 표현할 수 있는 것은 아닙니다.
노드간의 관계를 나타낼 수 있는 옵션으로는
- Weight(frequency of communication)
- Ranking(best friend, second best friend...)
- Type(firend,relative co-worker)
- Sign(Friend vs Foe, Trust vs Distrust)
- Properties depending on the rest of the graph(number of common friends)
이를 활용한 다음의 다양한 그래프들이 있습니다.


Connectivity of Undirected Graphs
이전까지 노드와 노드의 연결성을 확인했지만, 그래프와 그래프의 연결성도 표현할 수 있습니다. 다음은 두 그래프가 연결되어있는 것인지 떨어져 있는 것인지를 표현합니다.

그래프가 연결되어있을 시에, 이를 이어주는 노드를 bridge edge라고 하고 이를 이어주는 노드들을 articulation node라고 합니다.

Connectivity of Directed Graphs
- Strongly connected directed graph
두 노드가 서로 오고 왕복할 수 있는 경로를 가지고 있다면, 강한 연결을 가지고 있다고합니다. - Weakly connected directed graph
두 노드의 이동방향이 한쪽으로만 갈수있고 다른쪽으로는 갈수 없다면 약한 연결을 가지고 있다고합니다.
