Tìm hiểu tác động của hiện tượng bùng nổ độ dốc đến học sâu và khám phá các kỹ thuật giảm thiểu đã được chứng minh như cắt độ dốc để đảm bảo quá trình huấn luyện ổn định. Ultralytics YOLO26.
Hiện tượng bùng nổ độ dốc xảy ra trong quá trình huấn luyện mạng nơ-ron nhân tạo khi độ dốc—các giá trị được sử dụng để cập nhật trọng số của mạng—tích lũy và trở nên quá lớn. Hiện tượng này thường xảy ra trong quá trình
lan truyền ngượcĐây là quá trình mà mạng nơ-ron tính toán lỗi và tự điều chỉnh để cải thiện độ chính xác. Khi các tín hiệu lỗi này được nhân lên liên tục qua các lớp sâu, chúng có thể tăng theo cấp số nhân, dẫn đến những cập nhật lớn cho mạng nơ-ron.
trọng số mô hình (model weights)Sự bất ổn này ngăn cản mô hình hội tụ, làm gián đoạn quá trình học tập và thường dẫn đến việc hàm mất mát bị sai lệch.
NaN (Không phải là số) giá trị.
Để hiểu tại sao độ dốc lại bùng nổ, việc xem xét cấu trúc của các kiến trúc học sâu là rất hữu ích. Trong các mạng sâu, chẳng hạn như Mạng thần kinh hồi quy (RNN) hoặc Mạng thần kinh tích chập (CNN) rất sâu, độ dốc của các lớp đầu tiên là tích của các số hạng từ tất cả các lớp tiếp theo. Nếu các số hạng này lớn hơn 1,0, phép nhân lặp đi lặp lại sẽ hoạt động như một hiệu ứng quả cầu tuyết.
Điều này tạo ra một kịch bản trong đó trình tối ưu hóa thực hiện các bước quá lớn, vượt quá giải pháp tối ưu trong không gian lỗi. Đây là một thách thức phổ biến khi huấn luyện trên dữ liệu phức tạp với các thuật toán tiêu chuẩn như Stochastic Gradient Descent ( SGD ) .
Quá trình phát triển AI hiện đại sử dụng một số kỹ thuật tiêu chuẩn để ngăn chặn sự biến thiên của các gradient vượt khỏi tầm kiểm soát, đảm bảo quá trình huấn luyện mô hình đáng tin cậy.
Vấn đề độ dốc bùng nổ thường được thảo luận cùng với vấn đề đối lập của nó, độ dốc biến mất . Cả hai đều bắt nguồn từ quy tắc chuỗi trong phép tính vi phân và tích phân được sử dụng trong lan truyền ngược, nhưng chúng biểu hiện theo những cách trái ngược nhau.
Việc xử lý độ lớn của gradient là rất quan trọng để triển khai các giải pháp AI mạnh mẽ trong nhiều ngành công nghiệp khác nhau.
Mặc dù các thư viện cấp cao thường tự động xử lý việc này, bạn có thể áp dụng cắt xén gradient một cách rõ ràng trong PyTorch trong một vòng lặp huấn luyện tùy chỉnh. Đoạn mã này minh họa cách cắt xén gradient trước khi trình tối ưu hóa cập nhật trọng số.
import torch
import torch.nn as nn
# Define a simple model and optimizer
model = nn.Linear(10, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# Simulate a training step
loss = torch.tensor(100.0, requires_grad=True) # Simulated high loss
loss.backward()
# Clip gradients in place to a maximum norm of 1.0
# This prevents the weight update from being too drastic
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
# Update weights using the safe, clipped gradients
optimizer.step()