Đối với mục đích của tài liệu này:
Mục tiêu quan trọng nhất của quá trình phát triển công nghệ máy học là tối đa hoá mức độ hữu ích của mô hình đã triển khai.
Thường thì bạn có thể sử dụng các bước và nguyên tắc cơ bản giống nhau trong phần này cho mọi vấn đề về máy học.
Phần này đưa ra các giả định sau đây:
- Bạn đã có một quy trình huấn luyện hoàn toàn chạy cùng với một cấu hình thu được kết quả hợp lý.
- Bạn có đủ tài nguyên điện toán để tiến hành các thử nghiệm điều chỉnh có ý nghĩa và chạy song song ít nhất một số công việc đào tạo.
Chiến lược điều chỉnh gia tăng
Đề xuất: Bắt đầu bằng một cấu hình đơn giản. Sau đó, hãy cải tiến từng bước để cải thiện thông tin chi tiết về vấn đề. Hãy đảm bảo rằng mọi cải tiến đều dựa trên bằng chứng mạnh mẽ.
Chúng tôi giả định rằng mục tiêu của bạn là tìm cấu hình tối đa hoá hiệu suất của mô hình. Đôi khi, mục tiêu của bạn là tối đa hóa việc cải tiến mô hình theo thời hạn cố định. Trong các trường hợp khác, bạn có thể tiếp tục cải tiến mô hình một cách vô hạn; ví dụ: liên tục cải tiến mô hình được sử dụng trong sản xuất.
Về nguyên tắc, bạn có thể tối đa hoá hiệu suất bằng cách sử dụng một thuật toán để tự động tìm kiếm trong toàn bộ không gian của các cấu hình có thể có, nhưng đây không phải là một tuỳ chọn thực tế. Không gian của các cấu hình có thể cực kỳ lớn và chưa có thuật toán nào đủ tinh vi để tìm kiếm không gian này một cách hiệu quả mà không có hướng dẫn của con người. Hầu hết các thuật toán tìm kiếm tự động đều dựa vào không gian tìm kiếm được thiết kế thủ công. Đây là các không gian có chức năng xác định tập hợp các cấu hình cần tìm kiếm, và những không gian tìm kiếm này có thể khá quan trọng.
Cách hiệu quả nhất để tối đa hoá hiệu suất là bắt đầu bằng một cấu hình đơn giản, tăng dần tính năng và cải thiện trong khi xây dựng thông tin chi tiết về vấn đề.
Bạn nên sử dụng thuật toán tìm kiếm tự động trong mỗi vòng chỉnh và liên tục cập nhật không gian tìm kiếm khi sự hiểu biết của bạn tăng lên. Khi khám phá, bạn sẽ tự nhiên thấy các cấu hình ngày càng tốt hơn và do đó, mô hình "tốt nhất" của bạn sẽ liên tục cải thiện.
Thuật ngữ "ra mắt" đề cập đến bản cập nhật cho cấu hình tốt nhất của chúng tôi (có thể tương ứng hoặc không tương ứng với lần phát hành thực tế của một mô hình sản xuất). Đối với mỗi "lần khởi chạy", bạn phải đảm bảo rằng thay đổi dựa trên bằng chứng mạnh mẽ—không chỉ là cơ hội ngẫu nhiên dựa trên cấu hình may mắn—để bạn không thêm độ phức tạp không cần thiết vào quy trình đào tạo.
Nhìn chung, chiến lược điều chỉnh gia tăng của chúng tôi bao gồm việc lặp lại 4 bước sau đây:
- Chọn mục tiêu cho vòng thử nghiệm tiếp theo. Đảm bảo rằng mục tiêu được đặt phạm vi thích hợp.
- Thiết kế vòng thử nghiệm tiếp theo. Thiết kế và triển khai một tập hợp các thử nghiệm tiến tới mục tiêu này.
- Tìm hiểu từ kết quả thử nghiệm. Đánh giá thử nghiệm so với danh sách kiểm tra.
- Xác định xem có nên áp dụng thay đổi ứng viên hay không.
Phần còn lại của phần này trình bày chi tiết về chiến lược này.
Chọn mục tiêu cho vòng thử nghiệm tiếp theo
Nếu bạn cố gắng thêm nhiều tính năng hoặc trả lời nhiều câu hỏi cùng một lúc, bạn có thể sẽ không giải quyết được các ảnh hưởng riêng biệt đến kết quả. Các mục tiêu ví dụ bao gồm:
- Hãy thử cải tiến tiềm năng cho quy trình (ví dụ: công cụ điều chỉnh quy trình mới, lựa chọn xử lý trước, v.v.).
- Tìm hiểu tác động của một siêu thông số cụ thể của mô hình (ví dụ: chức năng kích hoạt)
- Giảm thiểu lỗi xác thực.
Ưu tiên tiến độ dài hạn hơn cải thiện lỗi xác thực ngắn hạn
Tóm tắt: Trong hầu hết các trường hợp, mục tiêu chính của bạn là có được thông tin chi tiết về vấn đề điều chỉnh.
Bạn nên dành phần lớn thời gian để nắm bắt thông tin chi tiết về vấn đề và tập trung tương đối ít thời gian để tập trung vào việc tối đa hoá hiệu suất của nhóm xác thực. Nói cách khác, hãy dành phần lớn thời gian cho việc "khai thác" và chỉ dành một phần nhỏ vào việc "khai thác". Việc hiểu vấn đề là rất quan trọng để tối đa hóa hiệu suất cuối cùng. Việc xác định thứ tự ưu tiên dựa trên những lợi ích ngắn hạn sẽ giúp:
- Tránh khởi chạy các thay đổi không cần thiết xảy ra trong các lần chạy hoạt động tốt chỉ thông qua tai nạn lịch sử.
- Xác định siêu thông số mà lỗi xác thực nhạy cảm nhất, siêu thông số tương tác nhiều nhất và do đó cần được điều chỉnh cùng nhau và siêu thông số tương đối không nhạy cảm với các thay đổi khác và do đó có thể được khắc phục trong các thử nghiệm trong tương lai.
- Đề xuất các tính năng mới mà bạn có thể dùng thử, chẳng hạn như các trình điều chỉnh mới khi vấn đề trang bị thêm.
- Xác định những tính năng không hữu ích và do đó có thể xoá đi, giảm sự phức tạp của các thử nghiệm trong tương lai.
- Nhận biết khi nào các cải tiến từ tinh chỉnh tham số có thể bão hòa.
- Thu hẹp không gian tìm kiếm của chúng tôi xung quanh giá trị tối ưu để cải thiện hiệu quả điều chỉnh.
Cuối cùng, bạn sẽ hiểu được vấn đề. Sau đó, bạn có thể tập trung hoàn toàn vào lỗi xác thực ngay cả khi các thử nghiệm không thông tin tối đa về cấu trúc của vấn đề điều chỉnh.
Thiết kế vòng thử nghiệm tiếp theo
Tóm tắt: Xác định những siêu thông số là khoa học, phiền toái và các thông số cố định cho mục tiêu thử nghiệm. Tạo một chuỗi các nghiên cứu để so sánh các giá trị khác nhau của siêu thông số khoa học trong khi tối ưu hóa dựa trên các siêu thông số gây phiền toái. Chọn không gian tìm kiếm về các thông số gây phiền toái để cân bằng chi phí tài nguyên với giá trị khoa học.
Xác định các thông số siêu khoa học, phiền toái và cố định
Đối với một mục tiêu nhất định, tất cả các siêu thông số thuộc một trong các danh mục sau:
- siêu thông số khoa học là những thông số có ảnh hưởng đến hiệu suất của mô hình, chính là thông tin mà bạn đang cố gắng đo lường.
- siêu thông số gây phiền toái là những thông số cần được tối ưu hoá để so sánh một cách công bằng các giá trị của siêu thông số khoa học. Các thông số gây phiền phức tương tự như thông số gây phiền toái trong số liệu thống kê.
- siêu thông số cố định có giá trị không đổi trong vòng thử nghiệm hiện tại. Các giá trị của siêu thông số cố định sẽ không thay đổi khi bạn so sánh các giá trị của siêu thông số khoa học. Bằng cách sửa một số siêu thông số nhất định cho một tập hợp thử nghiệm, bạn phải chấp nhận rằng kết luận lấy từ các thử nghiệm có thể không hợp lệ đối với các chế độ cài đặt khác của siêu thông số cố định. Nói cách khác, siêu tham số cố định sẽ đưa ra cảnh báo cho mọi kết luận mà bạn rút ra từ các thử nghiệm.
Ví dụ: giả sử mục tiêu của bạn như sau:
Xác định xem mô hình có nhiều lớp ẩn có lỗi xác thực thấp hơn hay không.
Trong trường hợp này:
- Tốc độ học tập là một thông số gây phiền toái vì bạn chỉ có thể so sánh công bằng các mô hình với nhiều lớp ẩn khác nhau nếu tốc độ học được điều chỉnh riêng cho từng số lớp ẩn. (Tốc độ học tập tối ưu thường phụ thuộc vào kiến trúc mô hình).
- Hàm kích hoạt có thể là một siêu thông số cố định nếu bạn đã xác định trong các thử nghiệm trước đó rằng hàm kích hoạt tốt nhất không nhạy cảm với độ sâu của mô hình. Hoặc, bạn sẵn sàng giới hạn kết luận về số lượng lớp ẩn để bao phủ hàm kích hoạt này. Ngoài ra, đó có thể là một siêu thông số gây phiền toái nếu bạn chuẩn bị tinh chỉnh riêng thông số này cho mỗi số lớp ẩn.
Một siêu thông số cụ thể có thể là siêu thông số khoa học, siêu thông báo gây phiền toái hoặc siêu thông số cố định; thiết kế của siêu thông số thay đổi tùy thuộc vào mục tiêu thử nghiệm. Ví dụ: hàm kích hoạt có thể là bất kỳ loại nào sau đây:
- Siêu thông số khoa học: ReLU hay tanh là lựa chọn tốt hơn cho vấn đề của chúng ta?
- Siêu tham số: Mô hình năm lớp tốt nhất có tốt hơn mô hình sáu lớp tốt nhất khi bạn cho phép một số hàm kích hoạt khác nhau không?
- Khắc phục lỗi siêu thông số: Đối với mạng ReLU, việc thêm chuẩn hoá hàng loạt trong một vị trí cụ thể có giúp ích không?
Khi thiết kế vòng thử nghiệm mới:
- Xác định các siêu thông số khoa học cho mục tiêu thử nghiệm. (Ở giai đoạn này, bạn có thể coi tất cả các siêu thông số khác là siêu thông số gây phiền toái.)
- Chuyển một số thông số gây phiền toái thành siêu thông số cố định.
Với tài nguyên không giới hạn, bạn sẽ để tất cả các siêu thông số không khoa học dưới dạng siêu thông số gây phiền toái để kết luận bạn rút ra được từ các thử nghiệm của mình không có bất kỳ thông báo nào về các giá trị siêu thông số cố định. Tuy nhiên, bạn càng cố gắng điều chỉnh càng nhiều thông tin chi tiết, thì bạn càng có nhiều khả năng không điều chỉnh các thông số đủ tốt cho từng chế độ cài đặt của thông số khoa học và cuối cùng là đưa ra kết luận sai từ các thử nghiệm. Như mô tả trong phần sau, bạn có thể ngăn chặn nguy cơ này bằng cách tăng ngân sách tính toán. Tuy nhiên, ngân sách tài nguyên tối đa của bạn thường sẽ ít hơn mức cần thiết để điều chỉnh tất cả các siêu thông số không khoa học.
Bạn nên chuyển đổi một siêu thông số gây phiền toái thành siêu thông số cố định khi có thông tin cảnh báo, bằng cách sửa thông báo đó ít gây phiền toái hơn chi phí đưa thông số đó vào dưới dạng siêu thông số gây phiền toái. Siêu tham số càng tương tác nhiều hơn với các siêu thông số khoa học, thì việc khắc phục giá trị của tham số đó càng trở ngại. Ví dụ: giá trị tốt nhất của độ mạnh giảm cân thường phụ thuộc vào kích thước mô hình.
Một số thông số của trình tối ưu hóa
Theo quy tắc chung, một số thông số tối ưu hoá (ví dụ: tốc độ học, động lượng, thông số lịch trình tốc độ học, bản beta của Adam, v.v.) là những thông số gây phiền toái vì chúng có xu hướng tương tác nhiều nhất với những thay đổi khác. Những thông số tối ưu hoá này hiếm khi là siêu thông số khoa học vì mục tiêu như "tốc độ học tập tốt nhất cho quy trình hiện tại là bao nhiêu?" không cung cấp nhiều thông tin chi tiết. Rốt cuộc, cài đặt tốt nhất vẫn có thể thay đổi với thay đổi quy trình tiếp theo.
Đôi khi, bạn có thể khắc phục một số thông số tối ưu hoá của trình tối ưu hoá do các hạn chế về tài nguyên hoặc bằng chứng đặc biệt rõ ràng rằng các thông số đó không tương tác với các thông số khoa học. Tuy nhiên, thông thường, bạn nên giả định rằng bạn phải tinh chỉnh riêng các siêu thông số của trình tối ưu hoá để so sánh công bằng giữa các chế độ cài đặt khác nhau của siêu thông số khoa học, do đó bạn không nên sửa. Hơn nữa, không có lý do ưu tiên nào để ưu tiên một giá trị siêu thông số của trình tối ưu hoá hơn giá trị khác; ví dụ: giá trị siêu thông số của trình tối ưu hoá thường không ảnh hưởng đến chi phí tính toán của chuyển tiếp hoặc gradient theo bất kỳ cách nào.
Lựa chọn trình tối ưu hóa
Lựa chọn của trình tối ưu hóa thường là:
- siêu thông số khoa học
- một thông số siêu cố định
Trình tối ưu hoá là siêu thông số khoa học nếu mục tiêu thử nghiệm của bạn liên quan đến việc so sánh công bằng giữa hai hoặc nhiều trình tối ưu hoá. Ví dụ:
Xác định trình tối ưu hoá nào tạo ra lỗi xác thực thấp nhất trong một số bước nhất định.
Ngoài ra, bạn có thể đặt trình tối ưu hoá làm siêu thông số cố định vì nhiều lý do, bao gồm:
- Các thử nghiệm trước đây cho thấy trình tối ưu hóa tốt nhất cho vấn đề điều chỉnh của bạn không nhạy cảm với các thông số khoa học hiện tại.
- Bạn muốn so sánh giá trị của các siêu thông số khoa học bằng cách sử dụng trình tối ưu hoá này vì các đường cong huấn luyện của trình xử lý đó dễ hiểu hơn.
- Bạn thích sử dụng trình tối ưu hoá này vì trình này sử dụng ít bộ nhớ hơn so với trình thay thế.
Thông số siêu chính quy
Các siêu tham số do kỹ thuật chuẩn hoá đưa vào thường là các siêu tham số gây phiền toái. Tuy nhiên, việc có nên áp dụng kỹ thuật chuẩn hoá hay không là thực tế tăng cường.
Ví dụ: quy trình bỏ học theo quy trình sẽ làm tăng độ phức tạp của mã. Do đó, khi quyết định bao gồm quy trình bỏ học, bạn có thể đặt "không bỏ học" so với "bỏ học" thành thông số siêu khoa học nhưng tỷ lệ bỏ học trở thành thông số gây phiền toái. Nếu bạn quyết định thêm quy trình bỏ học vào quy trình dựa trên thử nghiệm này, thì tỷ lệ bỏ ngang sẽ là một siêu thông số gây phiền toái trong các thử nghiệm trong tương lai.
Siêu tham số kiến trúc
Siêu thông số kiến trúc thường là siêu liên kết khoa học hoặc cố định vì các thay đổi về kiến trúc có thể ảnh hưởng đến chi phí phân phát và huấn luyện, độ trễ và yêu cầu về bộ nhớ. Ví dụ: số lượng lớp thường là một siêu thông số cố định hoặc mang tính khoa học vì nó có xu hướng gây ra những hậu quả nghiêm trọng đối với việc sử dụng tốc độ và bộ nhớ.
Phụ thuộc vào siêu thông số khoa học
Trong một số trường hợp, tập hợp các thông số phiền toái và cố định phụ thuộc vào giá trị của siêu thông số khoa học. Ví dụ: giả sử bạn đang cố gắng xác định trình tối ưu hoá nào trong động lượng Nesterov và Adam tạo ra lỗi xác thực thấp nhất. Trong trường hợp này:
- Siêu thông số khoa học là trình tối ưu hóa, nhận các giá trị
{"Nesterov_momentum", "Adam"}
- Giá trị
optimizer="Nesterov_momentum"
giới thiệu các siêu tham số{learning_rate, momentum}
, có thể gây phiền toái hoặc siêu tham số cố định. - Giá trị
optimizer="Adam"
giới thiệu các siêu tham số{learning_rate, beta1, beta2, epsilon}
, có thể gây phiền toái hoặc siêu cố định.
Các siêu tham số chỉ hiển thị cho một số giá trị nhất định của siêu dữ liệu khoa học được gọi là siêu tham số có điều kiện.
Đừng giả định hai thông số có điều kiện là giống nhau chỉ vì chúng có cùng tên! Trong ví dụ trước, siêu thông số có điều kiện có tên là learning_rate
là một siêu thông số cho optimizer="Nesterov_momentum"
khác với optimizer="Adam"
. Vai trò của hàm này tương tự nhau (mặc dù không giống nhau) trong hai thuật toán, nhưng phạm vi giá trị hoạt động tốt trong mỗi trình tối ưu hoá thường khác nhau theo một số cấp độ.
Tạo một bộ nghiên cứu
Sau khi xác định được các siêu thông số khoa học và phiền toái, bạn nên thiết kế một nghiên cứu hoặc một chuỗi nghiên cứu để tiếp tục hướng tới mục tiêu thử nghiệm. Một nghiên cứu chỉ định một tập hợp các cấu hình siêu thông số để chạy cho các lần phân tích tiếp theo. Mỗi cấu hình được gọi là bản dùng thử. Việc tạo nghiên cứu thường bao gồm lựa chọn những nội dung sau:
- Các siêu tham số khác nhau giữa các lần thử.
- Giá trị mà các siêu thông số đó có thể nhận (không gian tìm kiếm).
- Số lần thử.
- Một thuật toán tìm kiếm tự động để lấy mẫu nhiều lượt thử từ không gian tìm kiếm.
Ngoài ra, bạn có thể tạo một nghiên cứu bằng cách chỉ định tập hợp các cấu hình siêu thông số theo cách thủ công.
Mục đích của nghiên cứu là để đồng thời:
- Chạy quy trình với nhiều giá trị siêu dữ liệu khoa học.
- "Tối ưu hoá từ xa" (hoặc "tối ưu hoá cho") các thông số siêu phiền phức để so sánh giữa các giá trị khác nhau của siêu thông số khoa học một cách công bằng nhất có thể.
Trong trường hợp đơn giản nhất, bạn sẽ tiến hành một nghiên cứu riêng cho từng cấu hình của thông số khoa học, theo đó mỗi nghiên cứu sẽ điều chỉnh các thông số siêu phiền. Ví dụ: nếu mục tiêu của bạn là chọn trình tối ưu hóa tốt nhất từ động lượng Nesterov và Adam, bạn có thể tạo hai nghiên cứu:
- Một nghiên cứu trong đó
optimizer="Nesterov_momentum"
và các sắc thái nhiễu là{learning_rate, momentum}
- Một nghiên cứu khác, trong đó
optimizer="Adam"
và các siêu liên kết gây phiền toái là{learning_rate, beta1, beta2, epsilon}
.
Bạn sẽ so sánh hai trình tối ưu hóa bằng cách chọn bản dùng thử hoạt động tốt nhất từ mỗi nghiên cứu.
Bạn có thể sử dụng bất kỳ thuật toán tối ưu hoá nào không có hiệu ứng chuyển màu (bao gồm cả các phương thức như tối ưu hoá Bayes hoặc các thuật toán tiến hoá) để tối ưu hoá các siêu dữ liệu gây phiền toái. Tuy nhiên, chúng tôi muốn sử dụng tính năng tìm kiếm gần như ngẫu nhiên trong giai đoạn điều chỉnh vì có nhiều ưu điểm trong chế độ cài đặt này. Sau khi kết thúc quá trình khám phá, bạn nên sử dụng phần mềm tối ưu hóa Bayes hiện đại (nếu có).
Hãy cân nhắc một trường hợp phức tạp hơn khi bạn muốn so sánh một số lượng lớn giá trị của siêu thông số khoa học nhưng việc thực hiện nhiều nghiên cứu độc lập là không thực tế. Trong trường hợp này, bạn có thể làm như sau:
- Đưa các thông số khoa học vào cùng một không gian tìm kiếm với siêu thông số gây phiền toái.
- Sử dụng một thuật toán tìm kiếm để lấy mẫu các giá trị của cả siêu dữ liệu khoa học và phiền toái trong một nghiên cứu.
Khi thực hiện phương pháp này, siêu thông số có điều kiện có thể gây ra vấn đề. Xét cho cùng, rất khó để chỉ định một không gian tìm kiếm trừ khi tập hợp các siêu thông số gây phiền nhiễu là như nhau cho tất cả các giá trị của siêu dữ liệu khoa học. Trong trường hợp này, chúng tôi ưu tiên sử dụng công cụ tìm kiếm gần như ngẫu nhiên hơn các công cụ tối ưu hoá hộp đen tuyệt vời hơn, vì công nghệ này đảm bảo các giá trị khác nhau của siêu thông số khoa học sẽ được lấy mẫu thống nhất. Bất kể thuật toán tìm kiếm là gì, hãy đảm bảo rằng thuật toán đó tìm kiếm các thông số khoa học một cách đồng nhất.
Tạo sự cân bằng giữa thử nghiệm thông tin với giá cả phải chăng
Khi thiết kế một nghiên cứu hoặc một chuỗi các nghiên cứu, hãy phân bổ ngân sách hạn chế để đạt được ba mục tiêu sau:
- So sánh đủ các giá trị khác nhau của siêu dữ liệu khoa học.
- Điều chỉnh các thông số siêu phiền trên một không gian tìm kiếm đủ lớn.
- Lấy mẫu không gian tìm kiếm của các siêu thông số gây phiền toái đủ lâu.
Bạn có thể đạt được 3 mục tiêu này càng tốt, thì bạn có thể trích xuất càng nhiều thông tin chi tiết từ thử nghiệm. Hãy so sánh càng nhiều giá trị của siêu thông số khoa học càng tốt để mở rộng phạm vi thông tin chi tiết mà bạn thu được từ thử nghiệm.
Việc đưa vào càng nhiều thông số gây phiền toái càng tốt và cho phép mỗi siêu thông số gây phiền toái trong phạm vi càng rộng càng tốt để làm tăng độ tin cậy rằng giá trị "tốt" của các thông số siêu phiền đang tồn tại trong không gian tìm kiếm cho từng cấu hình của siêu dữ liệu khoa học. Nếu không, bạn có thể so sánh không công bằng giữa các giá trị của siêu thông số khoa học bằng cách không tìm kiếm các vùng có thể có của không gian siêu thông số gây phiền toái, nơi các giá trị tốt hơn có thể nằm ở một số giá trị của thông số khoa học.
Lấy mẫu không gian tìm kiếm của siêu liên kết gây phiền toái càng nhiều càng tốt. Việc này làm tăng mức độ tin tưởng rằng quy trình tìm kiếm sẽ tìm thấy mọi chế độ cài đặt phù hợp cho các siêu liên kết gây phiền toái xảy ra trong không gian tìm kiếm của bạn. Nếu không, bạn có thể so sánh không công bằng giữa các giá trị của thông số khoa học do một số giá trị may mắn hơn khi lấy mẫu các siêu thông số gây phiền toái.
Rất tiếc, các cải tiến ở bất kỳ thứ nguyên nào trong ba thứ nguyên này yêu cầu một trong hai thứ sau:
- Tăng số lần thử và do đó tăng chi phí tài nguyên.
- Tìm cách lưu tài nguyên ở một trong các thứ nguyên khác.
Mỗi vấn đề đều có những đặc điểm riêng và ràng buộc về tính toán riêng, vì vậy, việc phân bổ tài nguyên cho 3 mục tiêu này đòi hỏi kiến thức miền. Sau khi chạy một nghiên cứu, hãy luôn cố gắng tìm hiểu xem nghiên cứu đó có điều chỉnh các thông số gây phiền toái đủ tốt hay không. Có nghĩa là nghiên cứu đã tìm kiếm một không gian đủ lớn, đủ rộng để so sánh công bằng các thông số khoa học (như mô tả chi tiết hơn trong phần tiếp theo).
Tìm hiểu từ kết quả thử nghiệm
Đề xuất: Ngoài việc cố gắng đạt được mục tiêu khoa học ban đầu của từng nhóm thử nghiệm, hãy xem qua danh sách kiểm tra gồm các câu hỏi bổ sung. Nếu bạn phát hiện vấn đề, hãy sửa đổi và chạy lại thử nghiệm.
Cuối cùng, mỗi nhóm thử nghiệm có một mục tiêu cụ thể. Bạn nên đánh giá bằng chứng mà các thử nghiệm cung cấp để đạt được mục tiêu đó. Tuy nhiên, nếu đặt đúng câu hỏi, bạn thường có thể tìm thấy vấn đề cần khắc phục trước khi một nhóm thử nghiệm nhất định có thể đạt được mục tiêu ban đầu. Nếu không đặt những câu hỏi này, bạn có thể đưa ra kết luận không chính xác.
Vì việc chạy thử nghiệm có thể tốn kém, bạn cũng nên trích xuất các thông tin chi tiết hữu ích khác từ mỗi nhóm thử nghiệm, ngay cả khi những thông tin chi tiết này không liên quan trực tiếp đến mục tiêu hiện tại.
Trước khi phân tích một tập hợp thử nghiệm nhất định để đạt được mục tiêu ban đầu, hãy tự hỏi mình các câu hỏi bổ sung sau:
- Không gian tìm kiếm có đủ lớn không? Nếu điểm tối ưu từ một nghiên cứu nằm gần ranh giới của không gian tìm kiếm trong một hoặc nhiều kích thước, thì kết quả tìm kiếm có thể không đủ rộng. Trong trường hợp này, hãy chạy một nghiên cứu khác với không gian tìm kiếm mở rộng.
- Bạn đã lấy đủ số điểm từ không gian tìm kiếm chưa? Nếu không, hãy chạy nhiều điểm hơn hoặc ít tham vọng hơn vào các mục tiêu điều chỉnh.
- Phần nào của số lần thử trong mỗi nghiên cứu là không khả thi? Điều đó có nghĩa là những thử nghiệm nào phân kỳ, nhận giá trị tổn thất thực sự không hợp lệ hoặc hoàn toàn không chạy được do vi phạm một số quy tắc ràng buộc ngầm định? Khi một phân đoạn điểm rất lớn trong một nghiên cứu không khả thi, hãy điều chỉnh không gian tìm kiếm để tránh lấy mẫu các điểm như vậy, mà đôi khi cần phải xác định lại không gian tìm kiếm. Trong một số trường hợp, một số lượng lớn các điểm không khả thi có thể chỉ ra lỗi trong mã huấn luyện.
- Mô hình này có thể hiện các vấn đề tối ưu hóa không?
- Bạn có thể học được điều gì từ đường cong huấn luyện của những thử nghiệm hiệu quả nhất? Chẳng hạn, các bản thử nghiệm tốt nhất có đường cong đào tạo phù hợp với việc trang bị thêm vấn đề không?
Nếu cần thiết, dựa trên câu trả lời cho các câu hỏi trước, hãy tinh chỉnh nghiên cứu hoặc nhóm nghiên cứu gần đây nhất để cải thiện không gian tìm kiếm và/hoặc lấy mẫu nhiều bản dùng thử hơn hoặc thực hiện một số hành động khắc phục khác.
Sau khi đã trả lời các câu hỏi trước, bạn có thể đánh giá bằng chứng mà thử nghiệm cung cấp về mục tiêu ban đầu của mình; ví dụ: đánh giá liệu thay đổi có hữu ích hay không.
Xác định ranh giới không gian tìm kiếm kém
Một không gian tìm kiếm đáng ngờ nếu điểm tốt nhất được lấy mẫu từ không gian đó là gần ranh giới của không gian đó. Bạn có thể tìm thấy một điểm tốt hơn nữa nếu mở rộng phạm vi tìm kiếm theo hướng đó.
Để kiểm tra ranh giới của không gian tìm kiếm, bạn nên vẽ các bản thử nghiệm đã hoàn thành dựa trên sơ đồ trục cơ bản siêu tham số. Trong các ví dụ này, chúng tôi so sánh giá trị mục tiêu xác thực so với một trong các thông số siêu tốc (ví dụ: tỷ lệ học). Mỗi điểm trên biểu đồ tương ứng với một lượt thử.
Giá trị mục tiêu xác thực cho mỗi lượt thử thường là giá trị tốt nhất đạt được trong quá trình huấn luyện.
Hình 1: Ví dụ về ranh giới không gian tìm kiếm không hợp lệ và ranh giới không gian tìm kiếm được chấp nhận.
Các ô trong Hình 1 cho thấy tỷ lệ lỗi (thấp hơn sẽ tốt hơn) so với tốc độ học ban đầu. Nếu các điểm tốt nhất tập hợp về phía cạnh của không gian tìm kiếm (ở một số kích thước) thì bạn có thể cần mở rộng ranh giới của không gian tìm kiếm cho đến khi điểm quan sát tốt nhất không còn ở gần ranh giới.
Thông thường, một nghiên cứu bao gồm các thử nghiệm "không khả thi" phân kỳ hoặc nhận được kết quả rất không hợp lệ (được đánh dấu bằng dấu X màu đỏ trong Hình 1). Nếu tất cả các phiên bản thử đều không thể đạt được tốc độ học lớn hơn một số giá trị ngưỡng nhất định và nếu các phiên bản thử có hiệu suất cao nhất có tỷ lệ học ở cạnh của khu vực đó, thì mô hình có thể gặp vấn đề về độ ổn định khiến không thể tiếp cận được tốc độ học cao hơn.
Chưa lấy mẫu đủ điểm trong không gian tìm kiếm
Nhìn chung, khó biết liệu không gian tìm kiếm có được lấy mẫu đủ mật độ hay không. 🤖 Chạy nhiều lượt thử hơn là chạy ít lượt thử hơn, nhưng nhiều lượt thử hơn sẽ làm phát sinh thêm chi phí.
Vì khó có thể biết khi nào bạn đã lấy mẫu đủ, chúng tôi khuyên bạn nên:
- Lấy mẫu nội dung bạn có thể chi trả.
- Hiệu chỉnh sự tự tin trực quan của bạn bằng cách liên tục xem xét nhiều biểu đồ trục siêu thông số và cố gắng biết được số điểm nằm trong vùng "tốt" của không gian tìm kiếm.
Kiểm tra đường cong đào tạo
Tóm tắt: Kiểm tra đường cong tổn thất là một cách dễ dàng để xác định các chế độ lỗi phổ biến và có thể giúp bạn sắp xếp mức độ ưu tiên cho các hành động tiềm năng tiếp theo.
Trong nhiều trường hợp, mục tiêu chính của các thử nghiệm chỉ yêu cầu xem xét lỗi xác thực của mỗi thử nghiệm. Tuy nhiên, hãy cẩn thận khi giảm mỗi lần thử xuống một số duy nhất vì tiêu điểm đó có thể ẩn các chi tiết quan trọng về những gì đang diễn ra bên dưới giao diện. Đối với mỗi nghiên cứu, bạn nên xem xét đường cong của ít nhất một vài thử nghiệm tốt nhất. Ngay cả khi điều này không cần thiết để giải quyết mục tiêu thử nghiệm chính, việc kiểm tra các đường cong tổn thất (bao gồm cả mất mát khi đào tạo và mất xác thực) là một cách hay để xác định các chế độ lỗi phổ biến và có thể giúp bạn ưu tiên hành động tiếp theo.
Khi kiểm tra đường cong tổn thất, hãy tập trung vào các câu hỏi sau:
Có bất kỳ thử nghiệm nào cho thấy việc trang bị quá nhiều vấn đề không? Quá nhiều lỗi có vấn đề xảy ra khi lỗi xác thực bắt đầu tăng lên trong quá trình huấn luyện. Trong các chế độ cài đặt thử nghiệm, trong đó bạn tối ưu hoá siêu dữ liệu không gây phiền toái bằng cách chọn lượt thử "tốt nhất" cho mỗi chế độ cài đặt của siêu thông số khoa học, hãy kiểm tra để tìm vấn đề cung cấp thông tin chi tiết về vấn đề vượt quá mức ít nhất tương ứng với chế độ cài đặt của siêu thông số khoa học mà bạn đang so sánh. Nếu có bất kỳ thử nghiệm tốt nhất nào có vấn đề về việc cung cấp dịch vụ vượt trội, hãy làm theo một trong hai cách sau:
- Chạy lại thử nghiệm bằng các kỹ thuật chính quy bổ sung
- Điều chỉnh các tham số chính quy hiện có trước khi so sánh giá trị của siêu tham số khoa học. Điều này có thể không áp dụng nếu siêu thông số khoa học bao gồm các thông số thông thường, vì sau đó sẽ không có gì đáng ngạc nhiên nếu cài đặt cường độ thấp của các thông số thông thường đó dẫn đến sự cố quá mức.
Việc giảm cân quá mức thường đơn giản bằng cách sử dụng các kỹ thuật thông thường hoá phổ biến giúp giảm thiểu độ phức tạp của mã hoặc quá trình tính toán bổ sung tối thiểu (ví dụ: quy trình bỏ quy trình, làm mịn nhãn, giảm trọng lượng). Do đó, việc thêm một hoặc nhiều tùy chọn này vào vòng thử nghiệm tiếp theo thường không quan trọng. Ví dụ: nếu siêu thông số khoa học là "số lớp ẩn" và thử nghiệm tốt nhất sử dụng số lượng lớp ẩn lớn nhất cho thấy có vấn đề trang bị quá mức, thì bạn nên thử lại với quy trình chuẩn hóa bổ sung thay vì chọn ngay số lượng lớp ẩn nhỏ hơn.
Ngay cả khi các thử nghiệm "tốt nhất" nào không thể hiện tình trạng trang bị quá mức, thì vẫn có thể có vấn đề nếu tình trạng này xảy ra trong bất kỳ thử nghiệm nào. Việc chọn phương pháp thử tốt nhất sẽ ngăn chặn các cấu hình có vấn đề về cung cấp quá mức và ưu tiên những cấu hình không được cung cấp. Nói cách khác, việc lựa chọn thử nghiệm tốt nhất sẽ ưu tiên các cấu hình có quy trình đều đặn hơn. Tuy nhiên, bất cứ điều gì khiến việc đào tạo trở nên tồi tệ hơn đều có thể hoạt động như một trình điều chỉnh, kể cả nếu mục đích của bạn không phải như vậy. Ví dụ: việc lựa chọn tốc độ học nhỏ hơn có thể thường xuyên đào tạo bằng cách tập trung vào quá trình tối ưu hoá. Tuy nhiên, chúng tôi thường không muốn chọn tốc độ học theo cách này. Xin lưu ý rằng thử nghiệm "tốt nhất" cho mỗi chế độ cài đặt của siêu thông số khoa học có thể được chọn sao cho phù hợp với các giá trị "không hợp lệ" của một số thông số siêu khoa học hoặc phiền toái.
Có sự chênh lệch cao độ từng bước trong quá trình đào tạo hoặc lỗi xác thực trong quá trình đào tạo không? Nếu vậy, điều này có thể ảnh hưởng đến cả hai điều sau:
- Khả năng so sánh các giá trị khác nhau của siêu dữ liệu khoa học. Đó là vì mỗi lần thử ngẫu nhiên kết thúc ở một bước "may mắn" hoặc "không may mắn".
- Khả năng sao chép kết quả của phiên bản thử tốt nhất khi sản xuất. Đó là vì mô hình sản xuất có thể không kết thúc ở cùng một bước may mắn như trong nghiên cứu.
Các nguyên nhân có thể nhất gây ra phương sai từng bước là:
- Phương sai lô do các ví dụ lấy mẫu ngẫu nhiên từ tập huấn luyện cho từng lô.
- Nhóm xác thực nhỏ
- Sử dụng tốc độ học quá cao trong khi đào tạo.
Các biện pháp khắc phục có thể bao gồm:
- Tăng kích thước lô.
- Nhận thêm dữ liệu xác thực.
- Sử dụng mô hình giảm tốc độ học.
- Sử dụng trung bình Polyak.
Các thử nghiệm có còn cải thiện khi kết thúc chương trình đào tạo không? Nếu có, bạn đang ở chế độ "giới hạn điện toán" và có thể hưởng lợi từ việc tăng số lượng bước đào tạo hoặc thay đổi lịch học.
Hiệu suất trong các tập huấn luyện và xác thực có ổn định từ lâu trước khi bước đào tạo cuối cùng không? Nếu vậy, điều này cho thấy bạn đang ở chế độ "không bị tính toán liên kết" và bạn có thể giảm số bước huấn luyện.
Ngoài danh sách này, nhiều hành vi khác có thể trở nên rõ ràng khi kiểm tra các đường cong suy hao. Ví dụ: tổn thất đào tạo tăng lên trong quá trình huấn luyện thường chỉ ra một lỗi trong quy trình huấn luyện.
Phát hiện xem thay đổi có hữu ích hay không với các biểu đồ tách biệt
Hình 2: Biểu đồ phân tách điều tra giá trị tốt nhất của mức giảm cân đối với ResNet-50 được đào tạo trên ImageNet.
Thông thường, mục tiêu của một tập hợp thử nghiệm là so sánh các giá trị khác nhau của một siêu thông số khoa học. Ví dụ: giả sử bạn muốn xác định giá trị của quá trình giảm cân dẫn đến lỗi xác thực tốt nhất. Biểu đồ cách ly là trường hợp đặc biệt của biểu đồ trục siêu thông số cơ bản. Mỗi điểm trên biểu đồ phân tách tương ứng với hiệu suất của thử nghiệm tốt nhất trên một số (hoặc tất cả) siêu liên kết gây phiền toái. Nói cách khác, hãy vẽ biểu đồ hiệu suất của mô hình sau khi "tối ưu hoá" các siêu thông số gây phiền toái.
Biểu đồ cách ly đơn giản hoá việc so sánh tương quan giữa các giá trị khác nhau của siêu thông số khoa học. Ví dụ: biểu đồ cách ly trong Hình 2 cho thấy giá trị của việc giảm trọng lượng tạo ra hiệu suất xác thực tốt nhất cho một cấu hình cụ thể của ResNet-50 được đào tạo trên ImageNet.
Nếu mục tiêu là xác định xem có bao gồm việc giảm cân hay không, thì hãy so sánh điểm tốt nhất từ biểu đồ này với đường cơ sở của sự không phân rã trọng lượng. Để so sánh một cách công bằng, đường cơ sở cũng phải có tốc độ học không kém.
Khi bạn có dữ liệu được tạo bởi tìm kiếm ngẫu nhiên (quasi) và đang xem xét một siêu thông số liên tục cho một biểu đồ cách ly, bạn có thể ước tính biểu đồ cách ly bằng cách nhóm các giá trị trục x của biểu đồ trục siêu thông số cơ bản và thực hiện thử nghiệm tốt nhất trong mỗi lát dọc được xác định bởi các bộ chứa.
Tự động hoá các cốt truyện nói chung hữu ích
Càng cố gắng tạo ra nhiều cốt truyện, bạn càng ít có khả năng xem những cốt truyện trong kết quả. Do đó, bạn nên thiết lập cơ sở hạ tầng để tự động tạo ra nhiều mảnh đất nhất có thể. Bạn nên tự động tạo biểu đồ trục siêu thông số cơ bản cho tất cả các siêu thông số mà bạn thay đổi trong một thử nghiệm.
Ngoài ra, bạn nên tự động tạo đường cong tổn thất cho tất cả bản dùng thử. Hơn nữa, bạn nên dễ dàng nhất có thể để tìm thấy một vài thử nghiệm tốt nhất của mỗi nghiên cứu và kiểm tra đường cong tổn thất.
Bạn có thể thêm nhiều biểu đồ và hình ảnh tiềm năng hữu ích khác. Cách diễn giải Geoffrey Hinton:
Mỗi khi có nội dung mới, bạn sẽ học được những điều mới.
Xác định xem có áp dụng thay đổi ứng viên hay không
Tóm tắt: Khi quyết định có nên thay đổi mô hình hay quy trình đào tạo hoặc áp dụng cấu hình siêu thông số mới hay không, hãy lưu ý các nguồn biến thể khác nhau trong kết quả.
Khi cố gắng cải thiện một mô hình, một thay đổi cụ thể về ứng viên ban đầu có thể có được lỗi xác thực tốt hơn so với cấu hình hiện tại. Tuy nhiên, việc lặp lại thử nghiệm có thể không chứng tỏ được lợi thế nhất quán. Thông thường, các nguồn kết quả không nhất quán quan trọng nhất có thể được nhóm thành các danh mục rộng sau đây:
- Phương sai của quy trình huấn luyện, phương sai của khoá đào tạo lại hoặc phương sai của phiên bản dùng thử: sự khác biệt giữa các lần chạy huấn luyện sử dụng cùng một tham số nhưng nhiều hạt giống ngẫu nhiên khác nhau. Ví dụ: nhiều lần khởi chạy ngẫu nhiên, trộn dữ liệu đào tạo, mặt nạ bỏ qua, các mẫu thao tác tăng cường dữ liệu và thứ tự của các phép tính số học song song đều là các nguồn có thể sử dụng phương sai thử nghiệm.
- Phương sai tìm kiếm siêu tham số, hoặc phương sai nghiên cứu: biến thể trong kết quả do quy trình của chúng tôi lựa chọn siêu tham số gây ra. Ví dụ: bạn có thể chạy cùng một thử nghiệm với một không gian tìm kiếm cụ thể nhưng với hai loại hạt giống khác nhau cho tìm kiếm gần như ngẫu nhiên và cuối cùng chọn các giá trị siêu thông số khác nhau.
- Phương sai thu thập và lấy mẫu dữ liệu: phương sai từ bất kỳ loại phân tách ngẫu nhiên nào thành dữ liệu huấn luyện, xác thực và kiểm thử hoặc phương sai do quá trình tạo dữ liệu huấn luyện nói chung.
Đúng, bạn có thể so sánh tỷ lệ lỗi xác thực được ước tính trên một tập hợp xác thực hữu hạn bằng cách sử dụng các thử nghiệm thống kê khó tính. Tuy nhiên, thường thì phương sai thử nghiệm chỉ có thể tạo ra sự khác biệt có ý nghĩa thống kê giữa hai mô hình đã huấn luyện khác nhau sử dụng cùng một chế độ cài đặt siêu thông số.
Chúng tôi quan tâm nhất đến phương sai nghiên cứu khi cố gắng đưa ra kết luận vượt ra ngoài phạm vi của một điểm riêng lẻ trong không gian siêu tham số. Phương sai nghiên cứu phụ thuộc vào số lần thử nghiệm và không gian tìm kiếm. Chúng tôi đã thấy các trường hợp phương sai nghiên cứu lớn hơn phương sai thử nghiệm và các trường hợp phương sai nhỏ hơn nhiều. Do đó, trước khi áp dụng một thay đổi ứng viên, hãy cân nhắc chạy thời gian thử nghiệm phù hợp nhất để mô tả phương sai thử nghiệm khi chạy. Thông thường, bạn có thể tránh được việc chỉ mô tả lại phương sai thử nghiệm sau các thay đổi lớn đối với quy trình, nhưng trong một số trường hợp, bạn có thể cần ước tính mới hơn. Trong các ứng dụng khác, việc mô tả phương sai thử nghiệm là quá tốn kém nên không đáng có.
Mặc dù bạn chỉ muốn áp dụng các thay đổi (bao gồm các cấu hình siêu thông số mới) tạo ra các cải tiến thực sự, nhưng việc đòi hỏi một sự chắc chắn hoàn toàn rằng thay đổi nhất định cũng không phải là câu trả lời đúng. Do đó, nếu điểm siêu thông số mới (hoặc thay đổi khác) nhận được kết quả tốt hơn so với đường cơ sở (có tính đến phương sai đào tạo lại của cả điểm mới và đường cơ sở tốt nhất có thể), thì bạn có thể nên sử dụng điểm này làm đường cơ sở mới để so sánh trong tương lai. Tuy nhiên, bạn chỉ nên áp dụng các thay đổi tạo ra những cải tiến sâu hơn bất kỳ độ phức tạp nào mà chúng thêm vào.
Sau khi kết thúc quá trình khám phá
Tóm tắt: Các công cụ tối ưu hoá Bayes là một lựa chọn hấp dẫn khi bạn hoàn tất việc tìm kiếm không gian tìm kiếm phù hợp và đã quyết định nên điều chỉnh siêu tham số nào.
Cuối cùng, các ưu tiên của bạn sẽ chuyển từ việc tìm hiểu thêm về vấn đề điều chỉnh sang tạo một cấu hình tốt nhất để khởi chạy hoặc sử dụng theo cách khác. Tại thời điểm đó, cần có một không gian tìm kiếm được tinh chỉnh để chứa khu vực địa phương một cách thoải mái xung quanh bản dùng thử được ghi nhận tốt nhất và được lấy mẫu đầy đủ. Công việc khám phá của bạn phải cung cấp các tham số cần thiết nhất để tinh chỉnh và phạm vi hợp lý để bạn có thể sử dụng nhằm xây dựng không gian tìm kiếm cho nghiên cứu điều chỉnh tự động cuối cùng bằng cách sử dụng càng nhiều ngân sách điều chỉnh càng tốt.
Vì bạn không còn quan tâm đến việc tối đa hoá thông tin chi tiết cho bài toán điều chỉnh, nên nhiều lợi thế của tính năng tìm kiếm ngẫu nhiên không còn áp dụng nữa. Do đó, bạn nên sử dụng công cụ tối ưu hoá Bayesian để tự động tìm cấu hình siêu thông số tốt nhất. Open-Vizier triển khai nhiều thuật toán phức tạp để điều chỉnh các mô hình máy học, bao gồm cả thuật toán Tối ưu hoá Bayes.
Giả sử không gian tìm kiếm chứa một lượng điểm khác biệt không nhỏ, có nghĩa là các điểm sẽ bị giảm khả năng huấn luyện NaN hoặc thậm chí nhiều bài tập bị sai lệch so với mức trung bình. Trong trường hợp này, bạn nên sử dụng các công cụ tối ưu hoá hộp đen để xử lý đúng cách các phiên bản phân kỳ. (Xem bài viết Tối ưu hoá Bayesian với các quy tắc ràng buộc không xác định để biết thêm cách giải quyết vấn đề này.) Open-Source Vizier đã hỗ trợ việc đánh dấu các điểm khác biệt bằng cách đánh dấu các lượt thử là không khả thi, mặc dù tuỳ chọn này có thể không sử dụng phương pháp ưa thích của chúng tôi từ Gelbart và cộng sự, tuỳ thuộc vào cách định cấu hình.
Sau khi kết thúc quá trình khám phá, hãy cân nhắc kiểm tra hiệu suất của nhóm thử nghiệm. Về nguyên tắc, bạn thậm chí có thể gập nhóm xác thực vào tập huấn luyện và đào tạo lại cấu hình tốt nhất có thể với tính năng tối ưu hoá Bayesian. Tuy nhiên, cách này chỉ thích hợp nếu không có các lần khởi chạy trong tương lai với khối lượng công việc cụ thể này (ví dụ: cuộc thi Kaggle một lần).