ai-111Đọc toàn bộ đề miễn phí

Mạng Đẳng Cấu Đồ Thị GIN (Xu et al. ICLR 2019 - 1-WL Test Power)

Sử dụng hàm gom cụm tổng (Sum Aggregation) kết hợp tham số học ε và mạng đa tầng MLP để đạt được sức mạnh biểu diễn tối đa tương đương kiểm định đẳng cấu đồ thị 1-Weisfeiler…

AINâng cao45 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

gnnginweisfeiler-lehmanexpressive-powerpytorch

Kiến thức tiên quyết: graph-convolutional-network-gcn-layer.

Nội dung đề bài

Mục tiêu kiến thức

  • Xu et al. (2019) chứng minh rằng các mô hình GNN truyền thống (dùng toán tử mean như GCN hay max như GraphSAGE) thất bại trong việc phân biệt các đồ thị cơ bản vì phép tính trung bình làm mất thông tin về kích thước tập láng giềng.
  • Mạng Đẳng Cấu GIN (Graph Isomorphism Network):

Sử dụng hàm gom cụm tổng (Sum Aggregation) kết hợp tham số học ε và mạng đa tầng MLP để đạt được sức mạnh biểu diễn tối đa tương đương kiểm định đẳng cấu đồ thị 1-Weisfeiler-Lehman (1-WL Test): hv(k) = MLP(k) ( (1 + ε(k)) · hv(k-1) + ∑u ∈ N(v) hu(k-1) ) Trong đó:

  • ε: Có thể là hằng số cố định hoặc tham số có thể học (nn.Parameter).
  • Phép tính tổng đảm bảo tính chất đơn ánh (injective mapping) trên tập đa hợp (multisets).

Yêu cầu

Xây dựng lớp GINLayer(torch.nn.Module):

class GINLayer(nn.Module):
    def __init__(self, in_features: int, out_features: int, eps: float = 0.0, learn_eps: bool = False):
        pass

    def forward(self, x: torch.Tensor, edge_index: torch.Tensor) -> torch.Tensor:
        # x: (N, in_features)
        # edge_index: (2, E)
        # Returns: (N, out_features)
        pass
  • Sử dụng MLP 2 tầng: Linear(in -> out) -> ReLU -> Linear(out -> out).
  • Gom cụm tổng thông điệp từ các đỉnh láng giềng u ∈ N(v) (edge_index[0] là nguồn gửi tới edge_index[1]).

Input

  • Lớp GINLayer(in_features, out_features, eps, learn_eps): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.

Output

  • Các phương thức của GINLayer: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.

Ràng buộc

  • Thời gian chạy tối đa: 2000ms.
  • Giới hạn bộ nhớ: 256MB.
  • Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.

Ví dụ 1

Input

torch.manual_seed(42)
gin = GINLayer(in_features=1, out_features=2, eps=0.0)
x = torch.ones(2, 1)
edge_index = torch.tensor([[0, 0, 1, 1, 1], [0, 0, 1, 1, 1]])
gin(x, edge_index)

Output

[[0.7907, 0.1878],
 [0.7906, 0.2693]]

Giải thích

Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.