Thuật ngữ

Giảm dần độ dốc ngẫu nhiên (SGD)

Khám phá cách Stochastic Gradient Descent tối ưu hóa các mô hình học máy, cho phép đào tạo hiệu quả cho các tập dữ liệu lớn và tác vụ học sâu.

Xe lửa YOLO mô hình đơn giản
với Ultralytics TRUNG TÂM

Tìm hiểu thêm

Stochastic Gradient Descent, thường được gọi là SGD, là một thuật toán tối ưu hóa phổ biến và hiệu quả được sử dụng rộng rãi trong Machine Learning (ML) và đặc biệt là Deep Learning (DL) . Nó hoạt động như một biến thể của thuật toán Gradient Descent tiêu chuẩn nhưng được thiết kế riêng để có tốc độ và hiệu quả khi xử lý các tập dữ liệu rất lớn. Thay vì tính toán gradient (hướng dốc nhất cho hàm mất mát) bằng cách sử dụng toàn bộ tập dữ liệu trong mỗi bước, SGD sẽ ước tính gradient dựa trên một mẫu dữ liệu được chọn ngẫu nhiên hoặc một tập hợp con nhỏ được gọi là mini-batch. Phương pháp này giúp giảm đáng kể chi phí tính toán và yêu cầu về bộ nhớ, giúp việc đào tạo các mô hình phức tạp trên lượng dữ liệu khổng lồ trở nên khả thi.

Sự liên quan trong Học máy

SGD là nền tảng để đào tạo các mô hình học máy quy mô lớn, đặc biệt là Mạng nơ-ron (NN) phức tạp hỗ trợ nhiều ứng dụng AI hiện đại. Hiệu quả của nó khiến nó trở nên không thể thiếu khi làm việc với các tập dữ liệu quá lớn để phù hợp với bộ nhớ hoặc sẽ mất quá nhiều thời gian để xử lý bằng Batch Gradient Descent truyền thống. Các mô hình như Ultralytics YOLO thường sử dụng SGD hoặc các biến thể của nó trong quá trình đào tạo để học các mẫu cho các tác vụ như phát hiện đối tượng , phân loại hình ảnhphân đoạn hình ảnh . Các khuôn khổ học sâu chính như PyTorchTensorFlow cung cấp các triển khai mạnh mẽ của SGD, làm nổi bật vai trò cơ bản của nó trong hệ sinh thái AI.

Các khái niệm chính

Để hiểu về SGD cần lưu ý một số ý tưởng cốt lõi sau:

  • Bản chất ngẫu nhiên: Thuật ngữ "ngẫu nhiên" ám chỉ tính ngẫu nhiên được đưa vào bằng cách chỉ sử dụng một hoặc một vài mẫu để ước tính độ dốc ở mỗi bước. Tính ngẫu nhiên này thêm nhiễu vào quá trình tối ưu hóa, đôi khi có thể giúp mô hình thoát khỏi các cực tiểu cục bộ kém và tìm ra các giải pháp tổng thể tốt hơn.
  • Mini-Batches: Trong khi SGD thuần túy sử dụng một mẫu duy nhất cho mỗi lần cập nhật, thì trên thực tế, việc sử dụng một "mini-batch" mẫu nhỏ (ví dụ: 32, 64, 128) lại phổ biến hơn. Cách tiếp cận này, thường vẫn được gọi là SGD, cân bằng hiệu quả của các bản cập nhật mẫu đơn với độ ổn định đạt được từ việc tính trung bình các gradient trên một lô nhỏ. Kích thước của lô này được kiểm soát bởi siêu tham số Batch Size .
  • Tỷ lệ học: Siêu tham số quan trọng này xác định quy mô của các bước được thực hiện trong quá trình tối ưu hóa. Tỷ lệ học được lựa chọn tốt là rất quan trọng đối với sự hội tụ; quá cao, quá trình có thể vượt quá mức tối thiểu, quá thấp, và quá trình đào tạo trở nên quá chậm. Các kỹ thuật như lập lịch tỷ lệ học thường được sử dụng cùng với SGD.
  • Hàm mất mát: SGD hướng đến mục tiêu giảm thiểu Hàm mất mát , hàm này đo 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ế trong dữ liệu đào tạo .

Sự khác biệt từ các khái niệm liên quan

SGD là một trong số các thuật toán tối ưu hóa và điều quan trọng là phải phân biệt nó với các thuật toán khác:

  • Gradient Descent (Batch GD): Sự khác biệt chính nằm ở cách tính toán gradient. Batch GD sử dụng toàn bộ tập dữ liệu cho mỗi lần cập nhật tham số, cung cấp một gradient chính xác nhưng trở nên tốn kém về mặt tính toán và chậm đối với các tập dữ liệu lớn. SGD sử dụng một mẫu (hoặc một mini-batch), khiến mỗi lần cập nhật nhanh hơn nhiều nhưng nhiễu hơn. Bạn có thể tìm hiểu thêm về phương pháp chuẩn trên trang thuật ngữ Gradient Descent .
  • Mini-Batch Gradient Descent: Đây là triển khai thực tế phổ biến nhất thường được gọi đơn giản là SGD. Nó tính toán gradient trên các tập hợp con nhỏ, ngẫu nhiên (mini-batch) của dữ liệu. Nó tạo ra sự cân bằng giữa độ chính xác của Batch GD và hiệu quả của SGD thuần túy.
  • Adam Optimizer: Adam là thuật toán tối ưu hóa tốc độ học thích ứng, nghĩa là nó điều chỉnh tốc độ học cho từng tham số riêng lẻ dựa trên các gradient trong quá khứ. Mặc dù Adam thường hội tụ nhanh hơn SGD cơ bản, nhưng SGD (đặc biệt là với động lượng) đôi khi có thể khái quát hóa tốt hơn đối với dữ liệu chưa biết, như đã thảo luận trong nghiên cứu như "Giá trị biên của các phương pháp gradient thích ứng trong học máy" .

Ứng dụng trong thế giới thực

Hiệu quả của SGD cho phép sử dụng trong nhiều ứng dụng AI quy mô lớn:

Ví dụ 1: Đào tạo các mô hình ngôn ngữ lớn (LLM)

Các mô hình đào tạo như những mô hình được sử dụng trong Xử lý ngôn ngữ tự nhiên (NLP) thường liên quan đến các tập dữ liệu văn bản lớn (hàng tỷ từ). SGD và các biến thể của nó rất cần thiết để lặp lại dữ liệu này một cách hiệu quả, cho phép các mô hình học ngữ pháp, ngữ cảnh và ngữ nghĩa. Các nền tảng như Hugging Face phụ thuộc rất nhiều vào các trình tối ưu hóa này để đào tạo các mô hình biến đổi .

Ví dụ 2: Đào tạo phát hiện đối tượng theo thời gian thực

Đối với các mô hình như Ultralytics YOLO được thiết kế cho suy luận thời gian thực , việc đào tạo cần phải hiệu quả. SGD cho phép các nhà phát triển đào tạo các mô hình này trên các tập dữ liệu hình ảnh lớn như COCO hoặc các tập dữ liệu tùy chỉnh được quản lý thông qua các nền tảng như Ultralytics HUB . Các bản cập nhật nhanh chóng cho phép hội tụ nhanh hơn so với Batch GD, rất quan trọng để lặp lại nhanh chóng trong quá trình phát triển mô hình và điều chỉnh siêu tham số .

Đọc tất cả