Adam Optimizer
Khám phá optimizer Adam dành cho deep learning. Tìm hiểu cách nó kết hợp momentum và RMSProp để hội tụ nhanh hơn trong các model như Ultralytics YOLO26.
Trình tối ưu Adam, viết tắt của Ước lượng moment thích nghi, là một thuật toán tối ưu hóa tiên tiến được sử dụng rộng rãi để huấn luyện các model deep learning. Thuật toán này đã tạo ra bước đột phá trong lĩnh vực bằng cách kết hợp ưu điểm của hai phần mở rộng phổ biến khác của phương pháp giảm gradient ngẫu nhiên (SGD): Thuật toán Gradient thích nghi (AdaGrad) và Lan truyền trung bình bình phương gốc (RMSProp). Bằng cách tính toán tốc độ học thích nghi riêng cho các tham số khác nhau từ các ước lượng moment bậc nhất và bậc hai của gradient, Adam giúp mạng nơ-ron hội tụ nhanh hơn đáng kể so với các phương pháp truyền thống. Tính ổn định và yêu cầu tinh chỉnh tối thiểu khiến Adam trở thành lựa chọn mặc định của nhiều kỹ sư khi bắt đầu một dự án machine learning (ML) mới.
Cách Adam hoạt động#
Về cốt lõi, quá trình huấn luyện model bao gồm việc tối thiểu hóa một hàm mất mát, đại diện cho độ chênh lệch giữa các dự đoán của model và dữ liệu thực tế. Các thuật toán tiêu chuẩn thường sử dụng một kích thước bước không đổi (tốc độ học) để đi xuống trên "bề mặt mất mát" hướng tới mức lỗi tối thiểu. Tuy nhiên, bề mặt này thường phức tạp, có các khe và vùng phẳng có thể khiến những thuật toán đơn giản hơn bị mắc kẹt.
Adam giải quyết vấn đề này bằng cách duy trì hai bộ đệm lịch sử cho mỗi tham số:
-
Động lượng (moment bậc nhất): Tương tự một quả bóng nặng lăn xuống dốc, thành phần này theo dõi trung bình động của các gradient trước đó để duy trì vận tốc theo hướng phù hợp.
-
Phương sai (moment bậc hai): Thành phần này theo dõi trung bình động của bình phương các gradient, qua đó điều chỉnh tỷ lệ tốc độ học.
Sự kết hợp này cho phép trình tối ưu thực hiện các bước lớn hơn ở những vùng phẳng của bề mặt và các bước nhỏ hơn, thận trọng hơn ở những vùng dốc hoặc nhiều nhiễu. Cơ chế cụ thể được trình bày chi tiết trong bài báo nghiên cứu Adam của Kingma và Ba, công trình đã chứng minh ưu thế thực nghiệm của Adam trên nhiều tác vụ deep learning (DL) khác nhau.
Các ứng dụng trong thực tế#
Tính linh hoạt của trình tối ưu Adam đã dẫn đến việc nó được ứng dụng trong hầu như mọi lĩnh vực của trí tuệ nhân tạo (AI).
- Xử lý ngôn ngữ tự nhiên (NLP): Các large language model, chẳng hạn như Transformer được tiền huấn luyện sinh (GPT), phụ thuộc nhiều vào Adam (hoặc biến thể AdamW) trong quá trình huấn luyện. Thuật toán này xử lý hiệu quả các gradient thưa liên quan đến từ vựng khổng lồ và các tập dữ liệu quy mô lớn, cho phép xây dựng các chatbot và hệ thống dịch mạnh mẽ.
- Thị giác máy tính trong chăm sóc sức khỏe: Trong phân tích ảnh y tế, các model phải phát hiện những bất thường nhỏ như khối u trong ảnh MRI. Adam giúp mạng nơ-ron tích chập (CNNs) hội tụ nhanh đến các nghiệm có độ chính xác cao, điều này rất quan trọng khi phát triển các công cụ chẩn đoán cho AI trong chăm sóc sức khỏe.
Adam so với SGD#
Mặc dù Adam thường hội tụ nhanh hơn, điều quan trọng là phải phân biệt Adam với Giảm gradient ngẫu nhiên (SGD). SGD cập nhật trọng số model bằng tốc độ học cố định và thường được ưu tiên trong các giai đoạn huấn luyện cuối của các model [phát hiện đối tượng](https://ultralytics-translation-1.invalid tiên tiến nhất, vì đôi khi có thể đạt khả năng khái quát hóa (độ chính xác cuối cùng) trên dữ liệu kiểm thử tốt hơn một chút.
Tuy nhiên, Adam mang tính "thích nghi", nghĩa là nó tự động xử lý việc điều chỉnh tốc độ học. Điều này giúp Adam thân thiện với người dùng hơn nhiều trong các thử nghiệm ban đầu và với những kiến trúc phức tạp, nơi việc tinh chỉnh SGD sẽ khó khăn. Đối với người dùng quản lý các thử nghiệm trên Nền tảng Ultralytics, việc chuyển đổi giữa các trình tối ưu này để so sánh hiệu năng thường là một bước quan trọng trong tinh chỉnh siêu tham số.
Triển khai với Ultralytics#
Các framework hiện đại như PyTorch và thư viện Ultralytics giúp việc sử dụng Adam trở nên đơn giản. Một biến thể phổ biến có tên AdamW (Adam với Weight Decay) thường được khuyến nghị vì khắc phục các vấn đề về regularization trong thuật toán Adam gốc. Điều này đặc biệt hiệu quả với các kiến trúc mới nhất như YOLO26, vốn hưởng lợi từ sự ổn định mà AdamW cung cấp.
Ví dụ sau đây minh họa cách huấn luyện model Ultralytics YOLO26 bằng trình tối ưu AdamW:
from ultralytics import YOLO
# Load the cutting-edge YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model using the 'AdamW' optimizer
# The 'optimizer' argument allows easy switching between SGD, Adam, AdamW, etc.
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW")Đối với các developer quan tâm đến nền tảng lý thuyết chuyên sâu hơn, những tài nguyên như Ghi chú Tối ưu hóa Stanford CS231n cung cấp các hình minh họa xuất sắc về cách Adam so sánh với những thuật toán khác như RMSProp và AdaGrad. Ngoài ra, Tài liệu về trình tối ưu PyTorch cung cấp thông tin kỹ thuật về các đối số và chi tiết triển khai có thể tùy chỉnh.









