Tìm hiểu về thuật toán Stochastic Gradient Descent ( ) SGD ) tối ưu hóa các mô hình học máy. Khám phá cách thức SGD quyền lực Ultralytics YOLO26 giúp huấn luyện AI nhanh hơn và hiệu quả hơn.
Thuật toán giảm độ dốc ngẫu nhiên ( SGD (Đây là thuật toán tối ưu hóa mạnh mẽ được sử dụng rộng rãi trong học máy để huấn luyện mô hình hiệu quả, đặc biệt khi làm việc với các tập dữ liệu lớn. Về bản chất, nó...) SGD Đây là một biến thể của phương pháp giảm độ dốc tiêu chuẩn, được thiết kế để tăng tốc quá trình học bằng cách cập nhật các tham số mô hình thường xuyên hơn. Thay vì tính toán lỗi cho toàn bộ tập dữ liệu trước khi thực hiện một lần cập nhật duy nhất—như được thực hiện trong phương pháp giảm độ dốc theo lô truyền thống— SGD Phương pháp này cập nhật trọng số của mô hình chỉ bằng cách sử dụng một ví dụ huấn luyện duy nhất được chọn ngẫu nhiên tại một thời điểm. Bản chất "ngẫu nhiên" này đưa nhiễu vào đường dẫn tối ưu hóa, giúp mô hình tránh được các giải pháp không tối ưu và hội tụ nhanh hơn trên các tập dữ liệu khổng lồ, nơi việc xử lý tất cả dữ liệu cùng một lúc là quá tốn kém về mặt tính toán.
Mục tiêu chính của bất kỳ quá trình huấn luyện nào là giảm thiểu hàm mất mát , hàm này định lượng sự khác biệt giữa dự đoán của mô hình và giá trị mục tiêu thực tế. SGD Thuật toán đạt được điều này thông qua một chu trình lặp. Đầu tiên, thuật toán chọn ngẫu nhiên một điểm dữ liệu từ dữ liệu huấn luyện . Sau đó, nó thực hiện một lượt truyền tiến để tạo ra dự đoán và tính toán lỗi. Sử dụng lan truyền ngược , thuật toán tính toán độ dốc—về cơ bản là độ dốc của đồ thị lỗi—dựa trên ví dụ duy nhất đó. Cuối cùng, nó cập nhật trọng số của mô hình theo hướng ngược lại với độ dốc để giảm lỗi.
Quá trình này được lặp lại nhiều lần, thường được nhóm lại thành các kỷ nguyên (epoch) , cho đến khi hiệu suất của mô hình ổn định. Độ lớn của các cập nhật này được kiểm soát bởi một siêu tham số được gọi là tốc độ học (learning rate ). Bởi vì mỗi bước chỉ dựa trên một mẫu duy nhất, đường dẫn đến điểm cực tiểu thường ngoằn ngoèo hoặc nhiễu loạn so với quỹ đạo mượt mà của phương pháp giảm độ dốc theo lô (batch gradient descent). Tuy nhiên, nhiễu loạn này thường có lợi trong học sâu, vì nó có thể ngăn mô hình bị mắc kẹt ở điểm cực tiểu cục bộ, có khả năng dẫn đến một giải pháp toàn cục tốt hơn.
Hiểu rõ sự khác biệt giữa SGD và các thuật toán tối ưu hóa liên quan là rất quan trọng để lựa chọn chiến lược huấn luyện phù hợp.
SGD và các biến thể của nó là động lực thúc đẩy nhiều công nghệ trí tuệ nhân tạo mang tính đột phá được sử dụng ngày nay.
Trong khi các thư viện cấp cao như ultralytics xử lý việc tối ưu hóa nội bộ trong quá trình
train() lệnh, bạn có thể thấy cách một SGD Trình tối ưu hóa được khởi tạo và sử dụng trong một cấp độ thấp hơn.
PyTorch quy trình làm việc. Đoạn mã này minh họa cách định nghĩa một quy trình đơn giản. SGD trình tối ưu hóa cho một tensor .
import torch
import torch.nn as nn
import torch.optim as optim
# Define a simple linear model
model = nn.Linear(10, 1)
# Initialize Stochastic Gradient Descent (SGD) optimizer
# 'lr' is the learning rate, and 'momentum' helps accelerate gradients in the right direction
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# Create a dummy input and target
data = torch.randn(1, 10)
target = torch.randn(1, 1)
# Forward pass
output = model(data)
loss = nn.MSELoss()(output, target)
# Backward pass and optimization step
optimizer.zero_grad() # Clear previous gradients
loss.backward() # Calculate gradients
optimizer.step() # Update model parameters
print("Model parameters updated using SGD.")
Mặc dù rất phổ biến, SGD Điều này đi kèm với những thách thức. Vấn đề chính là nhiễu trong các bước gradient, có thể khiến tổn thất dao động mạnh thay vì hội tụ một cách mượt mà. Để giảm thiểu điều này, các chuyên gia thường sử dụng động lượng , một kỹ thuật giúp tăng tốc. SGD theo hướng thích hợp và làm giảm dao động, tương tự như một quả bóng nặng lăn xuống dốc. Ngoài ra, việc tìm ra tốc độ học phù hợp là rất quan trọng; nếu quá cao, mô hình có thể vượt quá điểm cực tiểu (hiện tượng bùng nổ độ dốc), và nếu quá thấp, quá trình huấn luyện sẽ diễn ra rất chậm. Các công cụ như Nền tảng Ultralytics giúp tự động hóa quá trình này bằng cách quản lý việc điều chỉnh siêu tham số và cung cấp hình ảnh trực quan cho các chỉ số huấn luyện. Những tiến bộ như trình tối ưu hóa Adam về cơ bản tự động hóa việc điều chỉnh tốc độ học, giải quyết một số vấn đề này. SGD Những khó khăn vốn có của nó.