0Pricing
Learn AI with Python · บทเรียน

โครงข่ายกราฟคอนโวลูชัน (GCN)

กรอบการส่งข้อความ GCNConv การรวมคุณลักษณะโหนด และการตั้งค่า PyTorch Geometric

โครงข่ายกราฟคอนโวลูชัน (GCN) เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

จาก CNN สู่ GCN

CNN ใช้ประโยชน์จากโครงสร้างแบบตารางในรูปภาพ ส่วนเครือข่ายคอนโวลูชันบนกราฟ (GCN)ขยายแนวคิดคอนโวลูชันไปยังกราฟที่ไม่เป็นระเบียบ ทำให้แต่ละโหนดปรับปรุงตัวแทนของตนเองโดยใช้ข้อมูลจากโหนดข้างเคียง วิธีนี้รองรับข้อมูลที่ไม่มีตารางตายตัว

การส่งต่อข้อความ

GCN ใช้กรอบการทำงานแบบการส่งต่อข้อความ: ในแต่ละชั้น โหนดทุกโหนดจะ (1) รวบรวมข้อความจากโหนดข้างเคียง (2) รวมข้อความเหล่านั้น และ (3) ปรับปรุงเวกเตอร์ตัวแทนของตนเอง การซ้อนหลายชั้นทำให้ข้อมูลไหลผ่านกราฟได้

การรวมข้อมูลจากโหนดข้างเคียง

การดำเนินการหลักคือการรวมคุณลักษณะของโหนดข้างเคียง ชั้น GCN แบบง่ายจะหาค่าเฉลี่ยของเวกเตอร์คุณลักษณะของโหนดข้างเคียงของโหนดหนึ่ง (รวมตัวโหนดนั้นเองด้วย) จากนั้นจึงใช้การแปลงเชิงเส้นที่เรียนรู้ได้และฟังก์ชันไม่เชิงเส้น

# For each node v:
#   h_v = activation( W * mean(features of v and its neighbors) )

เหตุใดจึงต้องปรับมาตรฐานเมทริกซ์การเชื่อมต่อ

โหนดที่มีดีกรีสูงจะมีอิทธิพลมากเกินไปหากเรารวมโหนดข้างเคียงโดยตรง GCN จึงใช้เมทริกซ์การเชื่อมต่อที่ปรับมาตรฐานเพื่อปรับขนาดอิทธิพล ทำให้ขนาดของเวกเตอร์ตัวแทนโหนดคงที่สำหรับโหนดที่มีดีกรีต่างกัน

สูตรการปรับมาตรฐาน

การปรับมาตรฐานแบบสมมาตรจะเพิ่มลูปที่เชื่อมโหนดเข้ากับตัวเอง จากนั้นปรับขนาดตามดีกรีของโหนด เขียนได้เป็น D^(-1/2) (A + I) D^(-1/2) การเพิ่มเมทริกซ์เอกลักษณ์ I ทำให้โหนดสามารถคงคุณลักษณะของตนเองไว้ระหว่างการรวมข้อมูล

# A_hat = A + I  (add self-loops)
# D_hat = degree matrix of A_hat
# A_norm = D_hat^(-1/2) * A_hat * D_hat^(-1/2)

PyTorch Geometric

PyTorch Geometric (PyG) เป็นไลบรารีมาตรฐานสำหรับ GNN ใน PyTorch โดยมีชั้นสำเร็จรูป เช่น GCNConv ซึ่งจัดการคอนโวลูชันแบบส่งต่อข้อความที่ปรับมาตรฐานให้คุณ

import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv

ชั้น GCNConv ชั้นเดียว

GCNConv(in_channels, out_channels) สร้างการทำคอนโวลูชันบนกราฟหนึ่งครั้ง โดยรับเมทริกซ์คุณลักษณะของโหนด x และ edge_index (การเชื่อมต่อของกราฟในรูปแบบ COO) แล้วส่งคืนเวกเตอร์ตัวแทนโหนดที่ปรับปรุงแล้ว

conv = GCNConv(in_channels=16, out_channels=32)
# x: [num_nodes, 16], edge_index: [2, num_edges]
h = conv(x, edge_index)  # -> [num_nodes, 32]

GCN แบบ 2 ชั้น

โดยทั่วไป GCN จะซ้อนกันสองชั้น ชั้นแรกจะแปลงคุณลักษณะและรวมข้อมูลจากโหนดข้างเคียงที่ห่างหนึ่งช่วง ส่วนชั้นที่สองจะรวมข้อมูลจากโหนดข้างเคียงที่ห่างสองช่วง ทำให้แต่ละโหนดมีขอบเขตรับข้อมูลครอบคลุมสองช่วง

class GCN(torch.nn.Module):
    def __init__(self, in_dim, hid, out):
        super().__init__()
        self.conv1 = GCNConv(in_dim, hid)
        self.conv2 = GCNConv(hid, out)

    def forward(self, x, edge_index):
        x = F.relu(self.conv1(x, edge_index))
        x = F.dropout(x, training=self.training)
        return self.conv2(x, edge_index)

ขอบเขตรับข้อมูลขยายตามความลึก

ชั้น GCN แต่ละชั้นจะขยายขอบเขตรับข้อมูลของโหนดออกไปอีกหนึ่งช่วง สองชั้นจะมองเห็นบริเวณรอบข้างสองช่วง สามชั้นจะมองเห็นสามช่วง และต่อเนื่องไปเช่นนี้ ความลึกทำให้ข้อมูลจากระยะไกลเข้าถึงโหนดได้

การทำให้เรียบมากเกินไป

อย่างไรก็ตาม การซ้อนชั้นมากเกินไปทำให้เกิดการทำให้เรียบมากเกินไป: การหาค่าเฉลี่ยของโหนดข้างเคียงซ้ำ ๆ ทำให้เวกเตอร์ตัวแทนของโหนดทั้งหมดเข้าใกล้เวกเตอร์เดียวกันจนแทบแยกไม่ออก ส่งผลให้ความแตกต่างที่จำเป็นต่อการจำแนกหายไป ด้วยเหตุนี้ GCN ส่วนใหญ่จึงใช้เพียง 2 หรือ 3 ชั้น

การลดการทำให้เรียบมากเกินไป

เทคนิคที่ใช้ลดการทำให้เรียบมากเกินไป ได้แก่ การเชื่อมต่อแบบตกค้างหรือแบบข้าม เครือข่ายแบบความรู้กระโดดที่รวมผลลัพธ์จากหลายชั้น และการทำให้เครือข่ายมีความตื้น โดย GCN แบบตื้นมักทำได้ดีกว่าแบบลึกในการทดสอบมาตรฐาน

ตรวจสอบความเข้าใจอย่างรวดเร็ว

โปรดทดสอบความรู้เกี่ยวกับ GCN ของคุณ

สรุปทบทวน

คุณได้เรียนรู้เรื่องเครือข่ายคอนโวลูชันบนกราฟดังนี้

  • GCN ใช้กรอบการทำงานแบบการส่งต่อข้อความ: รวมคุณลักษณะของโหนดข้างเคียงแล้วจึงปรับปรุงโหนด
  • เมทริกซ์การเชื่อมต่อที่ปรับมาตรฐานพร้อมลูปที่เชื่อมโหนดเข้ากับตัวเองช่วยให้เวกเตอร์ตัวแทนมีเสถียรภาพ
  • GCNConv ใน PyTorch Geometric ใช้สร้างการทำคอนโวลูชันหนึ่งครั้ง
  • สถาปัตยกรรมทั่วไปคือ GCN แบบ 2 ชั้น
  • ความลึกที่มากเกินไปทำให้เกิดการทำให้เรียบมากเกินไป

คำถามที่พบบ่อย

บทเรียน “โครงข่ายกราฟคอนโวลูชัน (GCN)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โครงข่ายกราฟคอนโวลูชัน (GCN)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โครงข่ายกราฟคอนโวลูชัน (GCN)”

กรอบการส่งข้อความ GCNConv การรวมคุณลักษณะโหนด และการตั้งค่า PyTorch Geometric คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “โครงข่ายกราฟคอนโวลูชัน (GCN)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทฤษฎีกราฟสำหรับการเรียนรู้ของเครื่อง
  2. โครงข่ายกราฟคอนโวลูชัน (GCN)
  3. การจำแนกโหนดด้วย GNN
  4. การพยากรณ์เส้นเชื่อมและการจำแนกกราฟ
← กลับไปที่ Learn AI with Python