Adam Optimizer
Khám phá bộ tối ưu hóa Adam 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 mô hình như Ultralytics YOLO26.
Trình tối ưu hóa Adam, viết tắt của Adaptive Moment Estimation, là một optimization algorithm tiên tiến được sử dụng rộng rãi để huấn luyện các mô hình học sâu. Nó đã cách mạng hóa lĩnh vực này 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 stochastic gradient descent (SGD): Adaptive Gradient Algorithm (AdaGrad) và Root Mean Square Propagation (RMSProp). Bằng cách tính toán các learning rates thích ứng riêng lẻ cho các tham số khác nhau từ ước tính moment thứ nhất và thứ hai của gradient, Adam cho phép các neural networks hội tụ nhanh hơn đáng kể so với các phương pháp truyền thống. Độ mạnh mẽ và yêu cầu điều chỉnh tối thiểu của nó biến đây thành lựa chọn mặc định cho nhiều kỹ sư bắt đầu một dự án machine learning (ML) mới.
Cách thức hoạt động của Adam#
Về bản chất, huấn luyện một model bao gồm việc giảm thiểu một loss function, đo lường sự khác biệt 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 kích thước bước không đổi (learning rate) để di chuyển xuống "loss landscape" hướng tới mức lỗi tối thiểu. Tuy nhiên, landscape này thường phức tạp, bao gồm các khe núi và cao nguyên có thể làm bẫy các thuật toán đơn giản hơn.
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ố:
-
Mô-men (Bậc một): Tương tự như một quả bóng nặng lăn xuống đồi, nó theo dõi trung bình động của các gradient trong quá khứ để duy trì vận tốc theo hướng có liên quan.
-
Phương sai (Bậc hai): Nó theo dõi trung bình động của các gradient bình phương, giúp điều chỉnh tỷ lệ của tốc độ học.
Sự kết hợp này cho phép trình tối ưu hóa thực hiện các bước lớn hơn ở các khu vực phẳng của landscape và các bước nhỏ hơn, thận trọng hơn ở các khu vực dốc hoặc nhiều nhiễu. Cơ chế cụ thể được chi tiết trong Adam research paper by Kingma and Ba nền tảng, chứng minh tính ưu việt thực nghiệm của nó 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 hóa Adam đã dẫn đến việc áp dụng nó trên hầu như tất cả các lĩnh vực của artificial intelligence (AI).
- Natural Language Processing (NLP): Các mô hình ngôn ngữ lớn, chẳng hạn như Generative Pre-trained Transformers (GPT), phụ thuộc rất nhiều vào Adam (hoặc biến thể AdamW của nó) để huấn luyện. Thuật toán này xử lý các gradient thưa thớt liên quan đến từ vựng khổng lồ và tập dữ liệu lớn một cách hiệu quả, cho phép tạo ra các chatbots và hệ thống dịch thuật mạnh mẽ.
- Computer Vision in Healthcare: Trong medical image analysis, các model phải phát hiện các bất thường tinh vi như khối u trong ảnh quét MRI. Adam giúp các convolutional neural networks (CNNs) hội tụ nhanh chóng đến các giải pháp có độ chính xác cao, điều quan trọng khi phát triển các công cụ chẩn đoán cho AI in Healthcare.
Adam so với SGD#
Mặc dù Adam thường hội tụ nhanh hơn, việc phân biệt nó với Stochastic Gradient Descent (SGD) là rất quan trọng. SGD cập nhật model weights bằng cách sử dụng learning rate cố định và thường được ưu tiên cho các giai đoạn cuối của việc huấn luyện các model object detection tiên tiến vì đôi khi nó có thể đạt được khả năng khái quát hóa (độ chính xác cuối cùng) tốt hơn một chút trên dữ liệu kiểm tra.
Tuy nhiên, Adam mang tính "thích ứng", nghĩa là nó xử lý việc điều chỉnh learning rate một cách tự động. Điều này làm cho nó thân thiện hơn nhiều với người dùng cho các thử nghiệm ban đầu và các kiến trúc phức tạp nơi việc điều chỉnh SGD sẽ gặp khó khăn. Đối với những người dùng quản lý các thử nghiệm trên Ultralytics Platform, việc chuyển đổi giữa các trình tối ưu hóa này để so sánh hiệu suất thường là một bước quan trọng trong hyperparameter tuning.
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 gọi là AdamW (Adam với Weight Decay) thường được khuyến nghị vì nó khắc phục các sự cố về điều chuẩn trong thuật toán Adam ban đầu. Điều này đặc biệt hiệu quả đối với các kiến trúc mới nhất như YOLO26, được hưởng lợi từ sự ổn định mà AdamW mang lại.
Ví dụ sau đây minh họa cách huấn luyện model Ultralytics YOLO26 sử dụng optimizer 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 nhà phát triển quan tâm đến nền tảng lý thuyết sâu hơn, các tài nguyên như Stanford CS231n Optimization Notes cung cấp các trực quan hóa tuyệt vời về cách Adam so sánh với các thuật toán khác như RMSProp và AdaGrad. Ngoài ra, PyTorch Optimizer Documentation cung cấp các chi tiết kỹ thuật về các đối số và đặc tả thực thi có sẵn để tùy chỉnh.






