[ad_1]
Giới thiệu
Kolmogorov-Arnold Networks, còn được gọi là KAN, là tiến bộ mới nhất trong mạng lưới thần kinh. Dựa trên định lý biểu diễn Kolgomorov-Arnold, chúng có tiềm năng trở thành một giải pháp thay thế khả thi cho Perceptron đa lớp (MLP). Không giống như MLP có các hàm kích hoạt cố định ở mỗi nút, KAN sử dụng các hàm kích hoạt có thể học được trên các cạnh, thay thế các trọng số tuyến tính bằng các hàm đơn biến dưới dạng các đường trục được tham số hóa.
Một nhóm nghiên cứu từ Viện Công nghệ Massachusetts, Viện Công nghệ California, Đại học Đông Bắc và Viện Tương tác Cơ bản và Trí tuệ Nhân tạo NSF đã giới thiệu Mạng Kolmogorov-Arnold (KAN) như một sự thay thế đầy hứa hẹn cho MLP trong một bài báo gần đây có tiêu đề “KAN: Mạng lưới Kolmogorov-Arnold.”
Mục tiêu học tập
- Tìm hiểu và hiểu một loại mạng thần kinh mới có tên là Mạng Kolmogorov-Arnold có thể cung cấp độ chính xác và khả năng diễn giải.
- Triển khai Mạng Kolmogorov-Arnold bằng cách sử dụng Thư viện Python.
- Hiểu sự khác biệt giữa Perceptron nhiều lớp và Mạng Kolmogorov-Arnold.
Bài viết này đã được xuất bản như một phần của Cuộc thi Blog Khoa học Dữ liệu.
Định lý biểu diễn Kolmogorov-Arnold
Theo định lý biểu diễn Kolmogorov-Arnold, bất kỳ hàm liên tục nhiều biến nào cũng có thể được định nghĩa là:
Đây:
ϕqp : (0, 1) → R và Φq : R → R
Bất kỳ hàm nhiều biến nào cũng có thể được biểu diễn dưới dạng tổng của các hàm một biến và phép cộng. Điều này có thể khiến bạn nghĩ rằng việc học máy có thể trở nên dễ dàng hơn bằng cách học các hàm nhiều chiều thông qua các hàm một chiều đơn giản. Tuy nhiên, vì hàm một biến có thể không trơn nên định lý này được coi là lý thuyết và không thể thực hiện được trong thực tế. Tuy nhiên, các nhà nghiên cứu của KAN đã nhận ra tiềm năng của định lý này bằng cách mở rộng hàm này lên hơn 2n+1 lớp và cho các hàm trơn tru trong thế giới thực.
Perceptron nhiều lớp là gì?
Đây là những hình thức đơn giản nhất của ANN, nơi thông tin chảy theo một hướng, từ đầu vào đến đầu ra. Kiến trúc mạng không có chu kỳ hoặc vòng lặp. Perceptron đa lớp (MLP) là một loại mạng lưới thần kinh chuyển tiếp.
Perceptron nhiều lớp là một loại mạng nơ-ron truyền thẳng. Feedforward Mạng lưới thần kinh là các mạng nơ-ron nhân tạo đơn giản trong đó thông tin di chuyển về phía trước, theo một hướng, từ đầu vào đến đầu ra thông qua một lớp ẩn.
Hoạt động của MLP
- Lớp đầu vào: Lớp đầu vào bao gồm các nút đại diện cho các tính năng của dữ liệu đầu vào. Mỗi nút tương ứng với một tính năng.
- Lớp ẩn: MLP có một hoặc nhiều lớp ẩn giữa lớp đầu vào và đầu ra. Các lớp ẩn cho phép mạng tìm hiểu các mẫu và mối quan hệ phức tạp trong dữ liệu.
- Lớp đầu ra: Lớp đầu ra tạo ra các dự đoán hoặc phân loại cuối cùng.
- Kết nối và Trọng lượng: Mỗi kết nối giữa các nơ-ron ở các lớp liền kề đều được liên kết với một trọng lượng, xác định sức mạnh của nó. Trong quá trình tập luyện, trọng lượng này được điều chỉnh thông qua Lan truyền ngượctrong đó mạng học cách giảm thiểu sự khác biệt giữa dự đoán của nó và giá trị mục tiêu thực tế.
- Chức năng kích hoạt: Mỗi nơ-ron (ngoại trừ các nơ-ron trong lớp đầu vào) áp dụng một hàm kích hoạt cho tổng trọng số của các đầu vào của nó. Điều này đưa tính phi tuyến tính vào mạng.
Công thức đơn giản
Đây:
- σ = hàm kích hoạt
- W = trọng số có thể điều chỉnh thể hiện cường độ kết nối
- x = đầu vào
- B = thiên vị
MLP dựa trên định lý xấp xỉ phổ quát, trong đó tuyên bố rằng mạng nơ-ron tiếp liệu có một lớp ẩn duy nhất với số lượng nơ-ron hữu hạn có thể gần đúng với bất kỳ hàm liên tục nào trên một tập hợp con nhỏ gọn miễn là hàm đó không phải là đa thức. Điều này cho phép các mạng thần kinh, đặc biệt là các mạng có lớp ẩn, thể hiện một loạt các chức năng phức tạp. Do đó, MLP được thiết kế dựa trên điều này (với nhiều lớp ẩn) để nắm bắt các mẫu phức tạp trong dữ liệu. MLP có chức năng kích hoạt cố định trên mỗi nút.
Tuy nhiên, MLP có một số nhược điểm. MLP trong máy biến áp sử dụng các tham số của mô hình, ngay cả những tham số không liên quan đến các lớp nhúng. Chúng cũng ít được giải thích hơn. Đây là cách KAN xuất hiện.
Mạng Kolmogorov-Arnold (KAN)
Mạng Kolmogorov-Arnold là mạng thần kinh có các chức năng kích hoạt có thể học được. Tại mỗi nút, mạng học chức năng kích hoạt. Không giống như MLP có chức năng kích hoạt nút cố định, KAN có chức năng kích hoạt có thể học được ở các cạnh. Chúng thay thế các trọng số tuyến tính bằng các đường trục được tham số hóa.
Ưu điểm của KAN
Dưới đây là những ưu điểm của KAN:
- Tính linh hoạt cao hơn: KAN rất linh hoạt do chức năng kích hoạt và kiến trúc mô hình của chúng, do đó cho phép biểu diễn dữ liệu phức tạp tốt hơn.
- Chức năng kích hoạt thích ứng: Không giống như MLP, các chức năng kích hoạt trong KAN không cố định. Vì các chức năng kích hoạt của chúng có thể học được ở các biên nên chúng có thể thích ứng và điều chỉnh theo các mẫu dữ liệu khác nhau, do đó nắm bắt được các mối quan hệ đa dạng một cách hiệu quả.
- Xử lý độ phức tạp tốt hơn: Chúng thay thế các trọng số tuyến tính trong MLP bằng các đường spline được tham số hóa, do đó chúng có thể xử lý dữ liệu phức tạp, phi tuyến tính.
- Độ chính xác vượt trội: KAN đã chứng minh độ chính xác tốt hơn trong việc xử lý dữ liệu nhiều chiều
- Rất dễ hiểu: Chúng tiết lộ cấu trúc và mối quan hệ tôpô giữa dữ liệu do đó chúng có thể dễ dàng được giải thích.
- Ứng dụng đa dạng: họ có thể thực hiện các nhiệm vụ khác nhau như hồi quy, giải phương trình vi phân từng phần và học tập liên tục.
Cũng đọc: Perceptron nhiều lớp: Ký hiệu và tham số có thể đào tạo
Triển khai KAN đơn giản
Hãy triển khai KAN bằng một ví dụ đơn giản. Chúng ta sẽ tạo một tập dữ liệu tùy chỉnh của hàm: f(x, y) = exp(cos(pi*x) + y^2). Hàm này nhận hai đầu vào, tính cosin của pi*x, cộng bình phương của y với nó rồi tính lũy thừa của kết quả.
Yêu cầu của phiên bản thư viện Python:
- Trăn==3.9.7
- matplotlib==3.6.2
- gọn gàng==1.24.4
- scikit_learn==1.1.3
- ngọn đuốc==2.2.2
!pip set up git+https://github.com/KindXiaoming/pykan.git
import torch
import numpy as np
##create a dataset
def create_dataset(f, n_var=2, n_samples=1000, split_ratio=0.8):
# Generate random enter knowledge
X = torch.rand(n_samples, n_var)
# Compute the goal values
y = f(X)
# Cut up into coaching and take a look at units
split_idx = int(n_samples * split_ratio)
train_input, test_input = X(:split_idx), X(split_idx:)
train_label, test_label = y(:split_idx), y(split_idx:)
return {
'train_input': train_input,
'train_label': train_label,
'test_input': test_input,
'test_label': test_label
}
# Outline the brand new operate f(x, y) = exp(cos(pi*x) + y^2)
f = lambda x: torch.exp(torch.cos(torch.pi*x(:, (0))) + x(:, (1))**2)
dataset = create_dataset(f, n_var=2)
print(dataset('train_input').form, dataset('train_label').form)
##output: torch.Measurement((800, 2)) torch.Measurement((800, 1))
from kan import *
# create a KAN: 2D inputs, 1D output, and 5 hidden neurons.
# cubic spline (ok=3), 5 grid intervals (grid=5).
mannequin = KAN(width=(2,5,1), grid=5, ok=3, seed=0)
# plot KAN at initialization
mannequin(dataset('train_input'));
mannequin.plot(beta=100)
## practice the mannequin
mannequin.practice(dataset, choose="LBFGS", steps=20, lamb=0.01, lamb_entropy=10.)
## output: practice loss: 7.23e-02 | take a look at loss: 8.59e-02
## output: | reg: 3.16e+01 : 100%|██| 20/20 (00:11<00:00, 1.69it/s)
mannequin.plot()
mannequin.prune()
mannequin.plot(masks=True)
mannequin = mannequin.prune()
mannequin(dataset('train_input'))
mannequin.plot()
mannequin.practice(dataset, choose="LBFGS", steps=100)
mannequin.plot()
Giải thích mã
- Cài đặt thư viện Pykan từ Git Hub.
- Nhập thư viện.
- Hàm create_dataset tạo dữ liệu đầu vào ngẫu nhiên (X) và tính toán các giá trị đích (y) bằng hàm f. Tập dữ liệu sau đó được chia thành tập huấn luyện và tập kiểm tra dựa trên tỷ lệ phân chia. Các tham số của chức năng này là:
- f: hàm tạo ra các giá trị đích.
- n_var: số lượng biến đầu vào.
- n_samples: tổng số mẫu
- Split_ratio: tỷ lệ để chia tập dữ liệu thành tập huấn luyện và tập kiểm tra, và nó trả về một từ điển chứa các đầu vào và nhãn huấn luyện và kiểm tra.
- Tạo một hàm có dạng: f(x, y) = exp(cos(pi*x) + y^2)
- Gọi hàm create_dataset để tạo tập dữ liệu bằng hàm f được xác định trước đó với 2 biến đầu vào.
- In hình dạng của đầu vào đào tạo và nhãn của chúng.
- Khởi tạo mô hình KAN với đầu vào 2 chiều, đầu ra 1 chiều, 5 nơron ẩn, spline bậc ba (ok=3) và 5 khoảng lưới (lưới=5)
- Vẽ mô hình KAN khi khởi tạo.
- Huấn luyện mô hình KAN bằng cách sử dụng tập dữ liệu được cung cấp trong 20 bước bằng trình tối ưu hóa LBFGS.
- Sau khi đào tạo, vẽ mô hình được đào tạo.
- Cắt tỉa mô hình và vẽ mô hình đã cắt tỉa với các nơ-ron đeo mặt nạ.
- Cắt tỉa mô hình một lần nữa, đánh giá nó dựa trên đầu vào huấn luyện và vẽ mô hình đã cắt tỉa.
- Huấn luyện lại mô hình đã cắt tỉa thêm 100 bước.
MLP vs KAN
MLP | KAN |
Đã sửa lỗi chức năng kích hoạt nút | Chức năng kích hoạt có thể học được |
Trọng lượng tuyến tính | đường trục tham số hóa |
Ít giải nghĩa hơn | Dễ hiểu hơn |
Ít linh hoạt và thích ứng hơn so với KAN | Tính linh hoạt và khả năng thích ứng cao |
Thời gian tập luyện nhanh hơn | Thời gian tập luyện chậm hơn |
Dựa trên Định lý xấp xỉ phổ quát | Dựa trên Định lý biểu diễn Kolmogorov-Arnold |
Phần kết luận
Việc phát minh ra KAN chỉ ra một bước tiến tới việc thúc đẩy các kỹ thuật học sâu. Bằng cách cung cấp khả năng diễn giải và độ chính xác tốt hơn MLP, chúng có thể là lựa chọn tốt hơn khi mục tiêu chính là khả năng diễn giải và độ chính xác của kết quả. Tuy nhiên, MLP có thể là giải pháp thiết thực hơn cho các nhiệm vụ cần tốc độ. Nghiên cứu liên tục được tiến hành để cải thiện các mạng này, tuy nhiên hiện tại, KAN là một giải pháp thay thế thú vị cho MLP.
Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.
Các câu hỏi thường gặp
A. Ziming Liu, Yixuan Wang, Sachin Vaidya, Fabian Ruehle, James Halverson, Marin Soljaci, Thomas Y. Hou, Max Tegmark là những nhà nghiên cứu tham gia vào quá trình phát triển KAN.
A. Hàm kích hoạt cố định là các hàm toán học được áp dụng cho đầu ra của các nơ-ron trong mạng nơ-ron. Các chức năng này không đổi trong suốt quá trình đào tạo và không được cập nhật hoặc điều chỉnh dựa trên quá trình học tập của mạng. Ví dụ: Sigmoid, tanh, ReLU.
Các hàm kích hoạt có thể học được có khả năng thích ứng và sửa đổi trong quá trình huấn luyện. Thay vì được xác định trước, chúng được cập nhật thông qua lan truyền ngược, cho phép mạng tìm hiểu các chức năng kích hoạt phù hợp nhất.
A. Một hạn chế của KAN là thời gian đào tạo chậm hơn do cấu trúc phức tạp của chúng. Chúng yêu cầu nhiều tính toán hơn trong quá trình huấn luyện vì chúng thay thế các trọng số tuyến tính bằng các hàm dựa trên spline yêu cầu tính toán bổ sung để tìm hiểu và tối ưu hóa.
Đáp. Nếu nhiệm vụ của bạn yêu cầu độ chính xác và khả năng diễn giải cao hơn cũng như thời gian đào tạo không bị giới hạn, bạn có thể tiếp tục với KAN. Nếu thời gian đào tạo là quan trọng, MLP là một lựa chọn thiết thực.
A. Trình tối ưu hóa LBFGS là viết tắt của trình tối ưu hóa “Bộ nhớ có giới hạn Broyden–Fletcher–Goldfarb–Shanno”. Đây là một thuật toán phổ biến để ước tính tham số trong học máy và tối ưu hóa số.
[ad_2]
Source link