Spiking Neural Network
Spiking neural network (SNN) truyền thông tin dưới dạng các spike được định thời, tương tự neuron sinh học, để triển khai AI neuromorphic tiêu thụ ít năng lượng. Nội dung đề cập đến neuron và huấn luyện.
Mạng nơ-ron xung (SNN) là một mạng nơ-ron trong đó các neuron giao tiếp bằng những sự kiện rời rạc, kiểu tất cả-hoặc-không, gọi là xung, gần với cách neuron sinh học truyền tín hiệu hơn. Mỗi neuron tích lũy các xung đầu vào trong điện thế màng bên trong, điện thế này từ từ suy giảm; neuron chỉ phát xung khi điện thế vượt qua một ngưỡng. Thông tin được mã hóa qua neuron nào phát xung và thời điểm phát xung, vì vậy SNN xử lý dữ liệu theo thời gian khi dữ liệu đến và chỉ tính toán khi có xung. Tính thưa theo sự kiện này khiến SNN phù hợp với AI biên công suất thấp trên chip thần kinh hình thái và là lựa chọn tự nhiên cho camera sự kiện, vốn cũng ghi nhận thay đổi dưới dạng sự kiện bất đồng bộ. Năm 1997, Wolfgang Maass mô tả SNN là thế hệ thứ ba của các model mạng nơ-ron, sau đơn vị ngưỡng và mạng có hàm kích hoạt liên tục.
Cách neuron xung hoạt động#
Model được sử dụng rộng rãi nhất là neuron tích hợp và phát xung rò rỉ (LIF). Ở mỗi bước thời gian, điện thế màng suy giảm theo một tỷ lệ cố định, các xung đầu vào có trọng số được cộng vào; nếu điện thế đạt ngưỡng, neuron phát một xung rồi đặt lại điện thế. Neuron nhận đầu vào yếu không bao giờ đạt ngưỡng, còn neuron nhận đầu vào mạnh sẽ phát xung thường xuyên, vì vậy tần số phát xung mã hóa cường độ đầu vào. Mô phỏng bên dưới cung cấp các dòng điện đầu vào không đổi khác nhau cho ba neuron LIF:
import torch
# Three leaky integrate-and-fire neurons, each driven by a constant input current
current = torch.tensor([0.15, 0.3, 0.6])
decay, threshold = 0.8, 1.0 # fraction of potential kept per step, firing threshold
potential = torch.zeros(3)
spike_counts = torch.zeros(3)
for step in range(20):
potential = decay * potential + current # leak, then integrate the input
spikes = (potential >= threshold).float() # fire where the threshold is crossed
potential = potential * (1 - spikes) # reset neurons that fired
spike_counts += spikes
print(f"Spikes in 20 steps: {spike_counts.tolist()}")Đoạn mã in ra Spikes in 20 steps: [0.0, 4.0, 10.0]. Với đầu vào 0.15, điện thế ổn định ở mức 0.15 / (1 − 0.8) = 0.75, thấp hơn ngưỡng nên neuron đó không bao giờ phát xung. Đầu vào 0.3 tạo ra 4 xung, còn đầu vào 0.6 vượt ngưỡng sau mỗi hai bước, tạo ra 10 xung. Các thư viện như snnTorch cung cấp các lớp LIF tương tự dưới dạng module PyTorch có thể huấn luyện trên GPU.
Mã hóa thông tin bằng xung#
Dữ liệu phải được chuyển thành xung trước khi SNN có thể sử dụng; cách mã hóa ảnh hưởng đến cả độ chính xác lẫn tốc độ:
- Mã hóa tần suất: Một giá trị được biểu diễn thành tần số phát xung như trong mô phỏng trên. Phương pháp này ổn định nhưng cần nhiều bước thời gian để biểu diễn chính xác một giá trị.
- Mã hóa thời gian: Một giá trị được biểu diễn bằng thời điểm phát xung, chẳng hạn pixel sáng hơn phát xung sớm hơn; cách này truyền tải thông tin chỉ với rất ít xung.
- Cảm biến sự kiện: Camera thị giác thần kinh hình thái xuất ra một sự kiện giống xung mỗi khi độ sáng của pixel thay đổi, với độ phân giải thời gian micro giây và không có tốc độ khung hình cố định, nên dữ liệu có thể được đưa trực tiếp vào SNN.
Huấn luyện SNN#
Xung là một hàm bậc thang có đạo hàm bằng 0 ở hầu hết mọi nơi, nên lan truyền ngược tiêu chuẩn không thể truyền gradient qua hàm này. Có ba cách khắc phục. Phương pháp chuyển đổi ANN sang SNN huấn luyện một mạng thông thường với hàm kích hoạt ReLU, rồi ánh xạ mỗi giá trị kích hoạt thành tần số phát xung. Phương pháp huấn luyện bằng gradient thay thế giữ xung cứng trong lượt truyền xuôi nhưng thay đạo hàm trong lượt truyền ngược bằng đạo hàm của một hàm trơn, sau đó huấn luyện bằng lan truyền ngược theo thời gian như mạng nơ-ron hồi quy (RNN). Độ dẻo phụ thuộc thời điểm xung (STDP) là quy tắc cục bộ lấy cảm hứng từ sinh học, giúp tăng cường khớp thần kinh khi xung đầu vào xuất hiện trước xung đầu ra; phương pháp này học không cần nhãn. Hầu hết SNN mới đạt độ chính xác cao được huấn luyện trực tiếp bằng gradient thay thế, cần ít bước thời gian hơn nhiều so với mạng được chuyển đổi; chuyển đổi vẫn là cách đơn giản nhất để tận dụng model hiện có.
Phần cứng thần kinh hình thái#
SNN tiết kiệm năng lượng nhất trên các chip được thiết kế riêng cho chúng. Bộ xử lý thần kinh hình thái đặt bộ nhớ cạnh nhiều lõi nhỏ, giao tiếp bằng thông điệp xung và chỉ tính toán khi xung đến; do xung là nhị phân, mỗi sự kiện khớp thần kinh cần một phép cộng thay vì phép nhân. TrueNorth của IBM (2014) tích hợp một triệu neuron trên một chip duy nhất, SpiNNaker của Đại học Manchester sử dụng các cụm lõi ARM lớn, còn Loihi 2 của Intel vận hành Hala Point, một hệ thống nghiên cứu năm 2024 có 1,152 bộ xử lý Loihi 2 và 1.15 tỷ neuron. Trên GPU tiêu chuẩn, vốn được thiết kế cho phép toán ma trận dày đặc, SNN thường chạy chậm hơn các mạng thông thường tương đương.
SNN và mạng nơ-ron thông thường#
- Tín hiệu: Mạng thông thường, bao gồm mạng nơ-ron tích chập (CNN) và Transformer, truyền các giá trị liên tục qua mọi neuron trong một lượt truyền xuôi. SNN truyền các xung nhị phân qua nhiều bước thời gian, và phần lớn neuron luôn im lặng tại bất kỳ thời điểm nào.
- Độ chính xác: Mạng thông thường vẫn dẫn đầu trên các benchmark ảnh tiêu chuẩn; SNN chủ yếu thu hẹp khoảng cách nhờ huấn luyện bằng gradient thay thế và kiến trúc vay mượn từ các model thông thường.
- Hiệu quả: SNN chạy trên phần cứng thần kinh hình thái tiêu thụ ít năng lượng hơn nhiều với đầu vào thưa, theo sự kiện, chẳng hạn luồng dữ liệu từ camera sự kiện và âm thanh luôn bật.
Ứng dụng#
- Thị giác dựa trên sự kiện và robot: Trong một nghiên cứu Science Robotics năm 2024, các nhà nghiên cứu TU Delft điều khiển drone bay bằng mạng thị giác và điều khiển hoàn toàn dựa trên xung chạy trên Loihi của Intel, ánh xạ dữ liệu thô từ camera sự kiện thành lệnh chuyển động ở 200 Hz.
- Cảm biến luôn bật: Nhận diện từ khóa, nhận diện cử chỉ và phát hiện bất thường trong cảm biến được hưởng lợi từ SNN, vốn gần như không tiêu thụ điện khi không có thay đổi.
- Phát hiện đối tượng: SpikeYOLO, detector spiking của Xinhao Luo, Man Yao và cộng sự, công bố tại ECCV 2024, được xây dựng trên codebase Ultralytics và đơn giản hóa kiến trúc Ultralytics YOLOv8 bằng các khối điều khiển bởi spike; model đạt 48,9% mAP50-95 trên COCO với huấn luyện dùng giá trị nguyên và inference điều khiển bởi spike.










