Unverified Commit a2241faf authored by Muhyun Kim's avatar Muhyun Kim Committed by GitHub
Browse files

[Doc] fixing link and format in Korean User Guide (#3583)

parent d798280f
.. _guide_ko-nn-forward:
3.2 DGL NN 모의 Forward 함수
3.2 DGL NN 모의 Forward 함수
---------------------------
:ref:`(English Versin) <guide-nn-forward>`
......@@ -25,7 +25,7 @@ NN 모듈에서 ``forward()`` 함수는 실제 메시지 전달과 연산을 수
``forward()`` 는 계산 및 메시지 전달 과정에서 유효하지 않은 값을 만들 수 있는 여러 특별한 케이스들을 다룰 수 있어야 한다. :class:`~dgl.nn.pytorch.conv.GraphConv` 와 같은 그래프 conv 모듈에서 수행하는 가장 전형적인 점검은 입력 그래프가 in-degree가 0인 노드를 갖지 않는지 확인하는 것이다. in-degree가 0인 경우에, ``mailbox`` 에 아무것도 없게 되고, 축약 함수는 모두 0인 값을 만들어낼 것이다. 이는 잠재적인 모델 성능 문제를 일이킬 수도 있다. 하지만, :class:`~dgl.nn.pytorch.conv.SAGEConv` 모듈의 경우, aggregated representation은 원래의 노드 피쳐와 연결(concatenated)되기 때문에, ``forward()`` 의 결과는 항상 0이 아니기 때문에, 이런 체크가 필요 없다.
DGL NN 모듈은 여러 종류의 그래프, 단종 그래프, 이종 그래프(:ref:`guide-graph-heterogeneous`), 서브그래프 블록(:ref:`guide-minibatch` ), 입력에 걸쳐서 재사용될 수 있다.
DGL NN 모듈은 여러 종류의 그래프, 단종 그래프, 이종 그래프(:ref:`guide_ko-graph-heterogeneous`), 서브그래프 블록(:ref:`guide_ko-minibatch` ), 입력에 걸쳐서 재사용될 수 있다.
SAGEConv의 수학 공식은 다음과 같다:
......@@ -106,7 +106,7 @@ Heterogeneous 그래프의 경우, 그래프는 여러 이분 그래프로 나
else:
rst = self.fc_self(h_self) + self.fc_neigh(h_neigh)
이 코드는 실제로 메시지 전달과 축약 연산을 실행하고 있다. 이 부분의 코드는 모듈에 따라 다르게 구현된다. 이 코드의 모든 메시지 전달은 :meth:`~dgl.DGLGraph.update_all` API와 ``built-in`` 메시지/축약 함수들로 구현되어 있는데, 이는 :ref:`guide-message-passing-efficient` 에서 설명된 DGL의 성능 최적화를 모두 활용하기 위해서이다.
이 코드는 실제로 메시지 전달과 축약 연산을 실행하고 있다. 이 부분의 코드는 모듈에 따라 다르게 구현된다. 이 코드의 모든 메시지 전달은 :meth:`~dgl.DGLGraph.update_all` API와 ``built-in`` 메시지/축약 함수들로 구현되어 있는데, 이는 :ref:`guide_ko-message-passing-efficient` 에서 설명된 DGL의 성능 최적화를 모두 활용하기 위해서이다.
출력값을 위한 축약 후 피쳐 업데이트
~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
......@@ -106,7 +106,7 @@
opt.step()
print(loss.item())
.. _guide-training-edge-classification-heterogeneous-graph:
.. _guide_ko-training-edge-classification-heterogeneous-graph:
Heterogeneous 그래프
~~~~~~~~~~~~~~~~~~
......@@ -175,7 +175,7 @@ Heterogeneous 그래프들에 대한 에지 분류는 homogeneous 그래프와
train_mask = hetero_graph.edges['click'].data['train_mask']
node_features = {'user': user_feats, 'item': item_feats}
학습 룹은 homogeneous 그래프의 것과 거의 유사하다. 예를 들어, 에지 타입 ``click`` 대한 에지 레이블을 예측하는 것은 다음과 같이 간단히 구현된다.
학습 룹은 homogeneous 그래프의 것과 거의 유사하다. 예를 들어, 에지 타입 ``click`` 대한 에지 레이블을 예측하는 것은 다음과 같이 간단히 구현된다.
.. code:: python
......@@ -194,11 +194,11 @@ Heterogeneous 그래프의 에지들에 대한 에지 타입 예측하기
주어진 에지의 타입을 예측하는 일도 종종 하게된다.
:ref:`heterogeneous 그래프 예제 <guide-training-heterogeneous-graph-example>` 에서는 user item 연결하는 에지가 주어졌을 , user ``click`` 선택할지, ``dislike`` 선택할지를 예측하고 있다.
:ref:`heterogeneous 그래프 예제 <guide_ko-training-heterogeneous-graph-example>` 에서는 user item 연결하는 에지가 주어졌을 , user ``click`` 선택할지, ``dislike`` 선택할지를 예측하고 있다.
이는 추천에서 흔히 쓰이는 평가 예측의 간략한 버전이다.
노드 representation 얻기 위해서 heterogeneous graph convolution 네트워크를 사용할 있다. 이를 위해서 :ref:`이전에 정의한 RGCN <guide-training-rgcn-node-classification>` 사용하는 것도 가능하다.
노드 representation 얻기 위해서 heterogeneous graph convolution 네트워크를 사용할 있다. 이를 위해서 :ref:`이전에 정의한 RGCN <guide_ko-training-rgcn-node-classification>` 사용하는 것도 가능하다.
에지 타입을 예측하기 위해서 ``HeteroDotProductPredictor`` 용도를 간단히 변경해서 예측할 모든 에지 타입을 “병합“하고 모든 에지들의 타입에 대한 점수를 내보내는 하나의 에지 타입만 있는 다른 그래프를 취하게하면 된다.
......
......@@ -68,7 +68,7 @@ DGL는 그래프들의 리스트로부터 하나의 배치 그래프(batched gra
그래프 리드아웃(readout)
^^^^^^^^^^^^^^^^^^^^
모든 그래프는 노드와 에지의 피쳐들과 더불어 유일한 구조를 지니고 있다. 하나의 예측을 만들어내기 위해서, 보통은 아마도 풍부한 정보들을 합치고 요약한다. 이런 종류의 연산을 *리드아웃(readout)*이라고 부른다. 흔히 쓰이는 리드아웃 연산들은 모든 노드 또는 에지 피쳐들에 대한 (summation), 평균, 최대 또는 최소들이 있다.
모든 그래프는 노드와 에지의 피쳐들과 더불어 유일한 구조를 지니고 있다. 하나의 예측을 만들어내기 위해서, 보통은 아마도 풍부한 정보들을 합치고 요약한다. 이런 종류의 연산을 *리드아웃(readout)* 이라고 부른다. 흔히 쓰이는 리드아웃 연산들은 모든 노드 또는 에지 피쳐들에 대한 (summation), 평균, 최대 또는 최소들이 있다.
그래프 :math:`g` 대해서, 평균 노드 피처 리드아웃은 아래와 같이 정의된다.
......@@ -151,7 +151,7 @@ DGL은 많이 쓰이는 리드아웃 연산들을 빌드인 함수로 지원한
모델이 정의되었다면, 학습을 시작할 있다. 그래프 분류는 커다란 그래프 한개가 아니라 상대적으로 작은 그래프를 많이 다루기 때문에, 복잡한 그래프 샘플링 알고리즘을 사용하지 않고 그래프들의 stochastic 미니-배치를 사용해서 효과적으로 학습을 수행할 있다.
:ref:`guide-data-pipeline` 에서 소개한 그래프 분류 데이터셋을 사용하자.
:ref:`guide_ko-data-pipeline` 에서 소개한 그래프 분류 데이터셋을 사용하자.
.. code:: python
......
......@@ -5,7 +5,7 @@
:ref:`(English Version) <guide-training-link-prediction>`
어떤 노드들 사이에 에지가 존재하는지 아닌지를 예측하고 싶은 경우가 있고, 이를 *링크 예측 과제*라고 한다.
어떤 노드들 사이에 에지가 존재하는지 아닌지를 예측하고 싶은 경우가 있고, 이를 *링크 예측 과제* 라고 한다.
개요
~~~~~~~~~
......@@ -28,13 +28,11 @@ GNN 기반의 링크 예측 모델은 두 노드 :math:`u` 와 :math:`v` 간의
- BPR loss:
:math:`\mathcal{L} = \sum_{v_i \sim P_n(v), i=1,\dots,k} - \log \sigma (y_{u,v} - y_{u,v_i})`
- Margin loss:
:math:`\mathcal{L} = \sum_{v_i \sim P_n(v), i=1,\dots,k} \max(0, M - y_{u, v} + y_{u, v_i})`,
where :math:`M` is a constant hyperparameter.
여기서 :math:`M` 상수 하이퍼-파라메터이다.
:math:`\mathcal{L} = \sum_{v_i \sim P_n(v), i=1,\dots,k} \max(0, M - y_{u, v} + y_{u, v_i})`, 여기서 :math:`M` 상수 하이퍼-파라메터이다.
`implicit feedback <https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf>`__ 이나 `noise-contrastive estimation <http://proceedings.mlr.press/v9/gutmann10a/gutmann10a.pdf>`__ 알고 있다면, 아이디어는 친숙할 것이다.
:math:`u` :math:`v` 사이의 점수를 계산하는 뉴럴 네트워크 모델은 :ref:`위에서 설명한 <guide-training-edge-classification>` 에지 리그레션 모델과 동일하다.
:math:`u` :math:`v` 사이의 점수를 계산하는 뉴럴 네트워크 모델은 :ref:`위에서 설명한 <guide_ko-training-edge-classification>` 에지 리그레션 모델과 동일하다.
다음은 dot product 사용해서 에지들의 점수를 계산하는 예제이다.
......@@ -114,7 +112,7 @@ Heterogeneous 그래프들
Heterogeneous 그래프에서의 링크 예측은 homogeneous 그래프에서의 링크 예측과 많이 다르지 않다. 다음 예제는 하나의 에지 타입에 대해서 예측을 수행한다고 가정하고 있는데, 이를 여러 에지 타입으로 확장하는 것은 쉽다.
링크 예측을 위해서 :ref:`앞에서 <guide-training-edge-classification-heterogeneous-graph>` ``HeteroDotProductPredictor`` 재활용해서 에지 타입에 대한 에지의 점수를 계산할 있다.
링크 예측을 위해서 :ref:`앞에서 <guide_ko-training-edge-classification-heterogeneous-graph>` ``HeteroDotProductPredictor`` 재활용해서 에지 타입에 대한 에지의 점수를 계산할 있다.
.. code:: python
......
......@@ -10,7 +10,7 @@
개요
~~~~~~
노드를 분류하기 위해서 그래프 뉴럴 네트워크는 :ref:`guide-message-passing` 에서 소개한 메시지 전달 방법을 수행해서 노드 자신의 피쳐 뿐만 아니라 노드의 이웃 노드 에지의 피쳐도 함께 활용한다. 메시지 전달은 여러 반복해서 범위의 이웃들에 대한 정보를 활용할 있다.
노드를 분류하기 위해서 그래프 뉴럴 네트워크는 :ref:`guide_ko-message-passing` 에서 소개한 메시지 전달 방법을 수행해서 노드 자신의 피쳐 뿐만 아니라 노드의 이웃 노드 에지의 피쳐도 함께 활용한다. 메시지 전달은 여러 반복해서 범위의 이웃들에 대한 정보를 활용할 있다.
뉴럴 네트워크 모델 작성하기
~~~~~~~~~~~~~~~~~~~~
......@@ -40,18 +40,18 @@ DGL은 한 차례 메시지 전달을 수행하는 몇 가지 빌트인 graph co
h = self.conv2(graph, h)
return h
모델은 노드 분류 뿐만 아니라, :ref:`guide-training-edge-classification` , :ref:`guide-training-link-prediction` , 또는 :ref:`guide-training-graph-classification` 같은 다른 다운스트림 테스크들을 위한 히든 노드 표현을 구하기 위해서 사용될 있음을 알아두자.
모델은 노드 분류 뿐만 아니라, :ref:`guide_ko-training-edge-classification` , :ref:`guide_ko-training-link-prediction` , 또는 :ref:`guide_ko-training-graph-classification` 같은 다른 다운스트림 테스크들을 위한 히든 노드 표현을 구하기 위해서 사용될 있음을 알아두자.
빌트인 graph convolution 모듈의 전체 목록은 :ref:`apinn` 참고하자.
DGL 뉴럴 네트워크 모듈이 어떻게 동작하는지 그리고 메시지 전달을 활용한 커스텀 뉴럴 네트워크 모듈을 작성하는 방법은 :ref:`guide-nn` 있는 예제들을 참고하자.
DGL 뉴럴 네트워크 모듈이 어떻게 동작하는지 그리고 메시지 전달을 활용한 커스텀 뉴럴 네트워크 모듈을 작성하는 방법은 :ref:`guide_ko-nn` 있는 예제들을 참고하자.
학습 (loop)
~~~~~~~~~~~
전체 그래프를 이용한 학습은 단지 위에서 정의된 모델에 forward propagation 그리고 학습 노드들의 groud truth 레이블과 예측을 비교해서 loss 계산하는 것으로 구성된다.
절은 빌드인 데이터셋 :class:`dgl.data.CiteseerGraphDataset` 사용해서 학습 룹을 설명한다. 노드 피처 레이블은 그래프 인스턴스에 저장되어 있고, 학습-검증-테스트 분할 또한 그래프에 이진 마스크로서 저장되어 있다. 이는 :ref:`guide-data-pipeline` 에서 본것과 비슷하다.
절은 빌드인 데이터셋 :class:`dgl.data.CiteseerGraphDataset` 사용해서 학습 룹을 설명한다. 노드 피처 레이블은 그래프 인스턴스에 저장되어 있고, 학습-검증-테스트 분할 또한 그래프에 이진 마스크로서 저장되어 있다. 이는 :ref:`guide_ko-data-pipeline` 에서 본것과 비슷하다.
.. code:: python
......@@ -102,7 +102,7 @@ DGL 뉴럴 네트워크 모듈이 어떻게 동작하는지 그리고 메시지
`GraphSAGE <https://github.com/dmlc/dgl/blob/master/examples/pytorch/graphsage/train_full.py>`__ end-to-end homogeneous 그래프 노드 분류 예제를 제공한다. 해당 모델은 ``GraphSAGE`` 클래스에 구현되어 있고, 조정가능 레이어 , dropout 확률들, 그리고 커스터마이징이 가능한 aggregation 함수 비선형성 등의 예제가 포함되어 있다.
.. _guide-training-rgcn-node-classification:
.. _guide_ko-training-rgcn-node-classification:
Heterogeneous 그래프
~~~~~~~~~~~~~~~~~~
......@@ -135,7 +135,7 @@ Heterogeneous 그래프
``dgl.nn.HeteroGraphConv`` 노드 타입들과 노드 피쳐 텐서들의 사전을 입력으로 받고, 노드 타입과 노드 피쳐의 다른 사전을 리턴한다.
여기서 사용되는 데이터셋은 이미 user item 피쳐를 가지고 있고, 이는 :ref:`heterogeneous graph example <guide-training-heterogeneous-graph-example>` 에서 확인할 있다.
여기서 사용되는 데이터셋은 이미 user item 피쳐를 가지고 있고, 이는 :ref:`heterogeneous graph example <guide_ko-training-heterogeneous-graph-example>` 에서 확인할 있다.
.. code:: python
......@@ -154,7 +154,7 @@ Forward propagation을 다음과 같이 단순하게 실행된다.
h_user = h_dict['user']
h_item = h_dict['item']
학습 룹은 예측을 계산할 노드 representation들의 사전을 사용하는 것을 제외하고는 homogeneous graph 학습 룹과 동일하다. 예를 들어,``user``노드 만을 예측하고 싶다면, 단지 리턴된 사전에서 ``user`` 노드 임베딩을 추출하면 된다.
학습 룹은 예측을 계산할 노드 representation들의 사전을 사용하는 것을 제외하고는 homogeneous graph 학습 룹과 동일하다. 예를 들어, ``user`` 노드 만을 예측하고 싶다면, 단지 리턴된 사전에서 ``user`` 노드 임베딩을 추출하면 된다.
.. code:: python
......
......@@ -8,11 +8,11 @@
개요
----------------
이 장에서는 :ref:`guide-message-passing` 에서 소개한 메시지 전달 방법과 :ref:`guide-nn` 에서 소개한 뉴럴 네트워크 모듈을 사용해서 작은 그래프들에 대한 노드 분류, 에지 분류, 링크 예측, 그리고 그래프 분류를 위한 그래프 뉴럴 네트워크를 학습하는 방법에 대해서 알아본다.
이 장에서는 :ref:`guide_ko-message-passing` 에서 소개한 메시지 전달 방법과 :ref:`guide_ko-nn` 에서 소개한 뉴럴 네트워크 모듈을 사용해서 작은 그래프들에 대한 노드 분류, 에지 분류, 링크 예측, 그리고 그래프 분류를 위한 그래프 뉴럴 네트워크를 학습하는 방법에 대해서 알아본다.
여기서는 그래프 및 노드 및 에지 피쳐들이 GPU 메모리에 들어갈 수 있는 크기라고 가정한다. 만약 그렇지 않다면, :ref:`guide-minibatch` 를 참고하자.
여기서는 그래프 및 노드 및 에지 피쳐들이 GPU 메모리에 들어갈 수 있는 크기라고 가정한다. 만약 그렇지 않다면, :ref:`guide_ko-minibatch` 를 참고하자.
그리고, 그래프와 노드/에지 피쳐들은 이미 프로세싱되어 있다고 가정한다. 만약 DGL에서 제공되는 데이터셋 또는 :ref:`guide-data-pipeline` 에서 소개한 ``DGLDataset`` 과 호환되는 다른 데이터셋을 사용할 계획이라면, 다음과 같이 단일-그래프 데이터셋을 위한 그래프를 얻을 수 있다.
그리고, 그래프와 노드/에지 피쳐들은 이미 프로세싱되어 있다고 가정한다. 만약 DGL에서 제공되는 데이터셋 또는 :ref:`guide_ko-data-pipeline` 에서 소개한 ``DGLDataset`` 과 호환되는 다른 데이터셋을 사용할 계획이라면, 다음과 같이 단일-그래프 데이터셋을 위한 그래프를 얻을 수 있다.
.. code:: python
......@@ -23,7 +23,7 @@
주의: 이 장의 예제들은 PyTorch를 백엔드로 사용한다.
.. _guide-training-heterogeneous-graph-example:
.. _guide_ko-training-heterogeneous-graph-example:
Heterogeneous 그래프
~~~~~~~~~~~~~~~~~~
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment