Mục lục[Ẩn giấu][Chỉ]
Các kỹ thuật học sâu được gọi là “mạng nơ-ron đồ thị” (GNN) hoạt động trong miền đồ thị. Các mạng này gần đây đã được sử dụng trong nhiều lĩnh vực, bao gồm thị giác máy tính, hệ thống đề xuất và tối ưu hóa tổ hợp, để kể tên một số.
Ngoài ra, các mạng này có thể được sử dụng để đại diện cho các hệ thống phức tạp, bao gồm mạng xã hội, mạng tương tác protein-protein, biểu đồ tri thức và các mạng khác trong một số lĩnh vực nghiên cứu.
Không gian phi euclide là nơi dữ liệu đồ thị hoạt động, trái ngược với các loại dữ liệu khác như hình ảnh. Để phân loại các nút, dự đoán các liên kết và dữ liệu cụm, phân tích đồ thị được sử dụng.
Trong bài viết này, chúng ta sẽ xem xét Biểu đồ Mạng thần kinh chi tiết, các loại của nó, cũng như cung cấp các ví dụ thực tế bằng cách sử dụng PyTorch.
Vậy, Graph là gì?
Đồ thị là một kiểu cấu trúc dữ liệu được tạo thành từ các nút và đỉnh. Các kết nối giữa các nút khác nhau được xác định bởi các đỉnh. Nếu hướng được chỉ ra trong các nút, đồ thị được cho là có hướng; nếu không, nó là vô hướng.
Một ứng dụng tốt của đồ thị là mô hình hóa các mối quan hệ giữa các cá nhân khác nhau trong một mạng xã hội. Khi xử lý các tình huống phức tạp, chẳng hạn như liên kết và trao đổi, đồ thị rất hữu ích.
Họ được sử dụng bởi các hệ thống khuyến nghị, phân tích ngữ nghĩa, phân tích mạng xã hội và nhận dạng mẫu
. Tạo các giải pháp dựa trên đồ thị là một lĩnh vực hoàn toàn mới mang lại sự hiểu biết sâu sắc về các dữ liệu phức tạp và có liên quan đến nhau.
Mạng Neural Đồ thị
Mạng nơron đồ thị là kiểu mạng nơron chuyên biệt có thể hoạt động trên định dạng dữ liệu đồ thị. Nhúng đồ thị và mạng nơ-ron tích tụ (CNN) có tác động đáng kể đến chúng.
Mạng Neural Đồ thị được sử dụng trong các tác vụ bao gồm dự đoán các nút, cạnh và đồ thị.
- CNN được sử dụng để phân loại hình ảnh. Tương tự, để dự đoán một lớp, GNN được áp dụng cho lưới pixel thể hiện cấu trúc đồ thị.
- Phân loại văn bản bằng cách sử dụng mạng nơ-ron lặp lại. GNN cũng được sử dụng với kiến trúc đồ thị trong đó mỗi từ trong một cụm từ là một nút.
Để dự báo các nút, cạnh hoặc đồ thị hoàn chỉnh, mạng nơ-ron được sử dụng để tạo GNN. Ví dụ, một dự đoán ở cấp độ nút có thể giải quyết một vấn đề như phát hiện spam.
Dự đoán liên kết là một trường hợp điển hình trong hệ thống khuyến nghị và có thể là một ví dụ về vấn đề dự đoán khôn ngoan.
Các loại mạng thần kinh biểu đồ
Nhiều kiểu mạng nơ-ron tồn tại và Mạng nơ-ron hợp pháp có mặt trong phần lớn số đó. Chúng ta sẽ tìm hiểu về các GNN được biết đến nhiều nhất trong phần này.
Mạng biểu đồ phù hợp (GCN)
Chúng có thể so sánh với CNN cổ điển. Nó có được các đặc điểm bằng cách xem xét các nút lân cận. Hàm kích hoạt được sử dụng bởi GNN để thêm tính phi tuyến tính sau khi tổng hợp các vectơ nút và gửi đầu ra đến lớp dày đặc.
Về bản chất, nó được tạo thành từ tích chập Đồ thị, một lớp tuyến tính, và một hàm kích hoạt không dành cho người học. GCN có hai loại chính: Mạng phù hợp phổ và Mạng phù hợp không gian.
Mạng mã hóa đồ thị tự động
Nó sử dụng một bộ mã hóa để tìm hiểu cách biểu diễn đồ thị và một bộ giải mã để cố gắng tái tạo lại các đồ thị đầu vào. Có một lớp nút cổ chai kết nối bộ mã hóa và bộ giải mã.
Vì các bộ mã hóa tự động thực hiện một công việc xuất sắc trong việc xử lý cân bằng lớp, chúng thường được sử dụng trong dự đoán liên kết.
Mạng thần kinh biểu đồ lặp lại (RGNN)
Trong mạng đa quan hệ, trong đó một nút đơn lẻ có nhiều quan hệ, nó sẽ học được mô hình khuếch tán tối ưu và có thể quản lý các đồ thị. Để tăng độ trơn và giảm quá mức tham số hóa, các bộ điều chỉnh được sử dụng trong dạng mạng nơron đồ thị này.
Để có được kết quả tốt hơn, RGNN đòi hỏi ít sức mạnh xử lý hơn. Chúng được sử dụng để tạo văn bản, nhận dạng giọng nói, dịch máy, mô tả hình ảnh, gắn thẻ video và tóm tắt văn bản.
Mạng biểu đồ thần kinh được xác định (GGNN)
Khi nói đến các nhiệm vụ phụ thuộc dài hạn, chúng hoạt động tốt hơn các RGNN. Bằng cách bao gồm các cổng nút, cạnh và thời gian trên các phụ thuộc dài hạn, các mạng nơron đồ thị gated tăng cường các mạng nơron đồ thị tái phát.
Các cổng hoạt động tương tự như các đơn vị định kỳ Gated (GRU) ở chỗ chúng được sử dụng để nhớ lại và quên dữ liệu trong các giai đoạn khác nhau.
Triển khai Mạng Neural Đồ thị bằng Pytorch
Vấn đề cụ thể mà chúng tôi sẽ tập trung vào là vấn đề phân loại nút phổ biến. Chúng tôi có một mạng xã hội khá lớn được gọi là Musae-github, được biên dịch từ API mở, dành cho các nhà phát triển GitHub.
Các cạnh hiển thị các mối quan hệ theo dõi lẫn nhau giữa các nút, đại diện cho các nhà phát triển (người dùng nền tảng) đã gắn dấu sao trong ít nhất 10 kho lưu trữ (lưu ý rằng từ tương hỗ chỉ ra mối quan hệ vô hướng).
Dựa trên vị trí của nút, kho lưu trữ có gắn dấu sao, nhà tuyển dụng và địa chỉ email, các đặc điểm của nút được truy xuất. Dự đoán xem người dùng GitHub là nhà phát triển web hay nhà phát triển máy học là nhiệm vụ của chúng tôi.
Chức danh công việc của mỗi người dùng làm cơ sở cho chức năng nhắm mục tiêu này.
Cài đặt PyTorch
Để bắt đầu, trước tiên chúng ta cần cài đặt Kim tự tháp. Bạn có thể cấu hình nó theo máy của bạn từ tại đây. Đây là của tôi:
Nhập mô-đun
Bây giờ, chúng tôi nhập các mô-đun cần thiết
Nhập và khám phá dữ liệu
Bước sau đây là đọc dữ liệu và vẽ biểu đồ năm hàng đầu tiên và năm hàng cuối cùng từ tệp nhãn.
Chỉ hai trong số bốn cột — id của nút (tức là người dùng) và ml_target, là 1 nếu người dùng là thành viên của cộng đồng học máy và 0 cột khác — có liên quan đến chúng tôi trong tình huống này.
Cho rằng chỉ có hai lớp, bây giờ chúng ta có thể chắc chắn rằng nhiệm vụ của chúng ta là một vấn đề phân loại nhị phân.
Do sự mất cân bằng giữa các lớp đáng kể, bộ phân loại chỉ có thể cho rằng lớp nào chiếm đa số hơn là đánh giá lớp ít đại diện, làm cho cân bằng lớp là một yếu tố quan trọng khác cần xem xét.
Việc vẽ biểu đồ (phân bố tần số) cho thấy một số mất cân bằng vì có ít lớp học từ máy học (nhãn = 1) hơn so với các lớp khác.
Mã hóa tính năng
Đặc điểm của các nút cho chúng ta biết về đặc điểm được liên kết với mỗi nút. Bằng cách triển khai phương pháp của chúng tôi để mã hóa dữ liệu, chúng tôi có thể mã hóa ngay lập tức các đặc điểm đó.
Chúng tôi muốn sử dụng phương pháp này để đóng gói một phần nhỏ của mạng (ví dụ, 60 nút) để hiển thị. Mã được liệt kê ở đây.
Thiết kế và hiển thị đồ thị
Chúng tôi sẽ sử dụng hình học ngọn đuốc. dữ liệu để xây dựng biểu đồ của chúng tôi.
Để lập mô hình một biểu đồ với các thuộc tính (tùy chọn) khác nhau, dữ liệu là một đối tượng Python đơn giản được sử dụng. Bằng cách sử dụng lớp này và các thuộc tính sau - tất cả đều là các thuộc tính của ngọn đuốc - chúng ta sẽ tạo đối tượng đồ thị của mình.
Dạng của giá trị x, sẽ được phân bổ cho các tính năng nút được mã hóa, là [số lượng nút, số lượng tính năng].
Hình dạng của y là [số nút], và nó sẽ được áp dụng cho các nhãn của nút.
Chỉ số cạnh: Để mô tả một đồ thị vô hướng, chúng ta cần mở rộng các chỉ số cạnh ban đầu để cho phép tồn tại hai cạnh có hướng phân biệt liên kết hai nút giống nhau nhưng lại hướng ngược nhau.
Ví dụ: cần phải có một cặp cạnh, một cạnh trỏ từ nút 100 đến 200 và cạnh kia từ 200 đến 100, giữa các nút 100 và 200. Nếu các chỉ số cạnh được cung cấp, thì đây là cách biểu đồ vô hướng có thể được biểu diễn. [2,2 * số cạnh ban đầu] sẽ là dạng tensor.
Chúng tôi tạo phương pháp vẽ đồ thị để hiển thị một biểu đồ. Bước đầu tiên là chuyển đổi mạng đồng nhất của chúng ta thành một đồ thị NetworkX, sau đó có thể vẽ biểu đồ này bằng cách sử dụng NetworkX.draw.
Tạo mô hình GNN của chúng tôi và đào tạo nó
Chúng ta bắt đầu bằng cách mã hóa toàn bộ tập dữ liệu bằng cách thực hiện mã hóa dữ liệu với light = False và sau đó gọi hàm cấu tạo với light = False để xây dựng toàn bộ đồ thị. Chúng tôi sẽ không cố gắng vẽ biểu đồ lớn này vì tôi cho rằng bạn đang sử dụng một máy cục bộ có tài nguyên hạn chế.
Mặt nạ, là các vectơ nhị phân xác định nút nào thuộc từng mặt nạ cụ thể bằng cách sử dụng các chữ số 0 và 1, có thể được sử dụng để thông báo cho giai đoạn huấn luyện những nút nào nên được đưa vào trong quá trình huấn luyện và cho giai đoạn suy luận nút nào là dữ liệu thử nghiệm. Đuốc hình học.transforms.
Có thể thêm phần tách cấp nút bằng cách sử dụng mặt nạ huấn luyện, mặt nạ val và thuộc tính mặt nạ thử nghiệm của lớp AddTrainValTestMask, có thể được sử dụng để lấy biểu đồ và cho phép chúng tôi chỉ định cách chúng tôi muốn mặt nạ của mình được xây dựng.
Chúng tôi chỉ sử dụng 10% để đào tạo và sử dụng 60% dữ liệu làm bộ kiểm tra trong khi sử dụng 30% làm bộ xác thực.
Bây giờ, chúng ta sẽ xếp chồng hai lớp GCNConv, lớp đầu tiên có số lượng tính năng đầu ra bằng với số lượng tính năng trong biểu đồ của chúng ta dưới dạng các tính năng đầu vào.
Trong lớp thứ hai, chứa các nút đầu ra bằng số lớp của chúng tôi, chúng tôi áp dụng một hàm kích hoạt relu và cung cấp các tính năng tiềm ẩn.
Chỉ số cạnh và trọng số cạnh là hai trong số nhiều tùy chọn x mà GCNConv có thể chấp nhận trong hàm chuyển tiếp, nhưng trong tình huống của chúng ta, chúng ta chỉ cần hai biến đầu tiên.
Mặc dù thực tế là mô hình của chúng tôi sẽ có thể dự đoán lớp của mọi nút trong biểu đồ, chúng tôi vẫn cần xác định độ chính xác và tổn thất cho từng bộ riêng biệt tùy thuộc vào giai đoạn.
Ví dụ, trong quá trình đào tạo, chúng tôi chỉ muốn sử dụng bộ đào tạo để xác định độ chính xác và sự mất mát trong quá trình đào tạo, và do đó đây là lúc mặt nạ của chúng tôi có ích.
Để tính toán tổn thất và độ chính xác thích hợp, chúng tôi sẽ xác định các hàm của tổn thất bị che và độ chính xác bị che.
Đào tạo người mẫu
Bây giờ chúng ta đã xác định mục đích đào tạo mà ngọn đuốc sẽ được sử dụng. Adam là một người tối ưu hóa bậc thầy.
Chúng tôi sẽ tiến hành đào tạo cho một số kỷ nguyên nhất định trong khi vẫn theo dõi độ chính xác của việc xác thực.
Chúng tôi cũng lập biểu đồ về các tổn thất và độ chính xác của khóa đào tạo trong suốt các kỷ nguyên khác nhau.
Nhược điểm của Mạng Neural Đồ thị
Sử dụng GNNs có một vài nhược điểm. Khi nào sử dụng GNNa và cách nâng cao hiệu suất của các mô hình học máy của chúng tôi sẽ được chúng tôi làm rõ sau khi chúng tôi hiểu rõ hơn về chúng.
- Trong khi GNN là mạng nông, thường có ba lớp, hầu hết các mạng nơ-ron đều có thể đi sâu để cải thiện hiệu suất. Chúng tôi không thể thực hiện vượt trội trên các tập dữ liệu lớn do hạn chế này.
- Khó hơn để đào tạo một mô hình trên đồ thị, vì động lực học cấu trúc của chúng là động lực học.
- Do chi phí tính toán cao của các mạng này, việc mở rộng mô hình để sản xuất là một thách thức. Mở rộng quy mô GNN để sản xuất sẽ là một thách thức nếu cấu trúc đồ thị của bạn rất lớn và phức tạp.
Kết luận
Trong vài năm qua, GNN đã phát triển thành công cụ mạnh mẽ và hiệu quả cho các vấn đề máy học trong miền đồ thị. Tổng quan cơ bản về mạng nơron đồ thị được đưa ra trong bài viết này.
Sau đó, bạn có thể bắt đầu tạo tập dữ liệu sẽ được sử dụng để đào tạo và kiểm tra mô hình. Để hiểu cách nó hoạt động và khả năng của nó, bạn cũng có thể đi xa hơn và đào tạo nó bằng cách sử dụng một loại tập dữ liệu khác.
Chúc bạn mã hóa vui vẻ!
Bình luận