HyperOpt làm sáng tỏ

Cách tự động điều chỉnh mô hình với HyperOpt

Bạn có thích mô hình điều chỉnh? Nếu câu trả lời của bạn là “có” thì bài đăng này là không cho bạn.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Một phim hoạt hình của ông tôi - trang mạng.

Trong blog này, chúng tôi sẽ đề cập đến thuật toán điều chỉnh siêu tham số tự động cực kỳ phổ biến được gọi là Công cụ ước tính Parzen dựa trên cây (TPE). TPE được hỗ trợ bởi gói nguồn mở HyperOpt. Bằng cách tận dụng HyperOpt và TPE, các kỹ sư máy học có thể nhanh chóng phát triển các mô hình được tối ưu hóa cao mà không cần điều chỉnh thủ công.

Nếu không có thêm lời khuyên, chúng ta hãy đi sâu vào!

HyperOpt là gói python mã nguồn mở sử dụng thuật toán có tên là Công cụ mô phỏng Parzen dựa trên cây (TPE) để chọn các siêu tham số mô hình nhằm tối ưu hóa hàm mục tiêu do người dùng xác định. Bằng cách chỉ cần xác định dạng chức năng và giới hạn của từng siêu tham số, TPE tìm kiếm một cách triệt để nhưng hiệu quả thông qua siêu không gian phức tạp để đạt được mức tối ưu.

TPE là một thuật toán tuần tự tận dụng cập nhật bayesian và tuân theo trình tự bên dưới.

  1. Huấn luyện một mô hình với một số bộ siêu tham số được chọn ngẫu nhiên, trả về các giá trị hàm mục tiêu.
  2. Chia các giá trị hàm mục tiêu được quan sát của chúng tôi thành các nhóm “tốt” và “xấu”, theo một số ngưỡng gamma (γ).
  3. Hãy tính điểm “có triển vọng”, đó chỉ là P(x|tốt) / P(x|xấu).
  4. Xác định các siêu tham số giúp tối đa hóa triển vọng thông qua các mô hình hỗn hợp.
  5. Điều chỉnh mô hình của chúng tôi bằng cách sử dụng siêu tham số từ bước 4.
  6. Lặp lại các bước 2–5 cho đến khi đạt được tiêu chí dừng.

Dưới đây là một ví dụ về mã nhanh.

Ok đó là rất nhiều từ lớn. Hãy sống chậm lại và thực sự hiểu chuyện gì đang xảy ra.

1.1 — Mục tiêu của chúng tôi

Các nhà khoa học dữ liệu đang bận rộn. Chúng tôi muốn tạo ra những mô hình thực sự tốt nhưng làm như vậy một cách hiệu quả và lý tưởng.

Tuy nhiên, một số bước nhất định trong vòng đời lập mô hình ML rất khó tự động hóa. Ví dụ: phân tích dữ liệu khám phá (EDA) và kỹ thuật tính năng thường mang tính chuyên biệt theo chủ đề và đòi hỏi trực giác của con người. Mặt khác, điều chỉnh mô hình là một quá trình lặp đi lặp lại trong đó máy tính có thể vượt trội.

Mục tiêu của chúng tôi trong suốt bài đăng này là hiểu cách tận dụng các thuật toán để tự động hóa quá trình điều chỉnh mô hình.

Để giúp chúng ta suy nghĩ về mục tiêu đó, hãy sử dụng một phép loại suy: chúng ta là những tên cướp biển đang tìm kiếm kho báu bị chôn giấu. Điều quan trọng cần lưu ý là chúng tôi là những tên cướp biển rất hiệu quả đang tìm cách giảm thiểu thời gian tìm kiếm kho báu bị chôn giấu. Vậy chúng ta nên làm thế nào để giảm thiểu thời gian tìm kiếm? Câu trả lời là sử dụng bản đồ!

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 1: ví dụ về không gian tìm kiếm siêu tham số 3D. Vị trí của rương kho báu là vị trí tối ưu toàn cầu. Hình ảnh của tác giả.

Trong hình 1, chúng ta có một bản đồ hư cấu cho biết kho báu của chúng ta nằm ở đâu. Sau nhiều lần leo trèo và đào bới, sẽ không quá khó để đến được kho báu đó vì chúng ta biết chính xác nó nằm ở đâu.

Nhưng điều gì sẽ xảy ra khi chúng ta không có bản đồ?

Khi được giao nhiệm vụ điều chỉnh một mô hình, rất tiếc chúng tôi không được cung cấp bản đồ. Địa hình của chúng tôi, tương ứng với không gian tìm kiếm siêu chuẩn, vẫn chưa được xác định. Hơn nữa, vị trí kho báu của chúng ta, tương ứng với tập hợp siêu tham số tối ưu, cũng chưa được xác định.

Với thiết lập đó, hãy nói về một số cách tiềm năng để khám phá không gian này một cách hiệu quả và tìm thấy kho báu!

1.2 — Giải pháp tiềm năng

Phương pháp ban đầu để điều chỉnh mô hình là “thủ công” - kỹ sư sẽ thực sự kiểm tra thủ công nhiều cấu hình khác nhau và xem sự kết hợp siêu tham số nào tạo ra mô hình tốt nhất. Mặc dù mang tính thông tin nhưng quá trình này không hiệu quả. Phải có cách tốt hơn…

1.2.1 — Tìm kiếm lưới (tệ nhất)

Thuật toán tối ưu hóa đầu tiên của chúng tôi là tìm kiếm dạng lưới. Tìm kiếm lưới kiểm tra lặp đi lặp lại tất cả các kết hợp siêu tham số có thể có trong lưới do người dùng chỉ định.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 2: ví dụ về bố cục tìm kiếm dạng lưới. Hình ảnh của tác giả

Ví dụ: trong hình 2, bất cứ nơi nào bạn nhìn thấy dấu chấm màu đỏ là nơi chúng tôi sẽ đào tạo lại và đánh giá mô hình của mình. Khung này không hiệu quả vì nó tái sử dụng các siêu tham số xấu. Ví dụ: nếu siêu tham số 2 ít ảnh hưởng đến hàm mục tiêu của chúng tôi, chúng tôi vẫn sẽ kiểm tra tất cả các kết hợp giá trị của nó, do đó tăng số lần lặp cần thiết lên gấp 10 lần (trong ví dụ này).

Nhưng trước khi tiếp tục, điều quan trọng cần lưu ý là tìm kiếm lưới vẫn khá phổ biến vì nó đảm bảo tìm ra giá trị tối ưu cho một lưới được chỉ định chính xác. Nếu bạn quyết định sử dụng phương pháp này, hãy đảm bảo bạn chuyển đổi lưới của mình để phản ánh dạng chức năng của siêu tham số. Ví dụ: max_deep cho một phân loại rừng ngẫu nhiên là một số nguyên - đừng để nó tìm kiếm trong một không gian liên tục. Cũng khó có khả năng nó có sự phân bố đồng đều — nếu bạn biết dạng hàm của siêu tham số, hãy chuyển đổi lưới để phản ánh nó.

Tóm tắt, Tìm kiếm lưới chịu sự hạn chế về chiều và tính toán lại thông tin giữa các lần đánh giá, nhưng vẫn được sử dụng rộng rãi.

1.2.2 — Tìm kiếm ngẫu nhiên (tốt)

Thuật toán thứ hai của chúng tôi là tìm kiếm ngẫu nhiên. Tìm kiếm ngẫu nhiên thử các giá trị ngẫu nhiên trong lưới do người dùng chỉ định. Không giống như tìm kiếm dạng lưới, chúng tôi không bắt buộc phải thử nghiệm mọi tổ hợp siêu tham số có thể có, điều này làm tăng hiệu quả.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 3: ví dụ về tìm kiếm ngẫu nhiên. Hình ảnh của tác giả.

Đây là một sự thật thú vị: tìm kiếm ngẫu nhiên sẽ tìm thấy (trung bình) cấu hình siêu tham số 5% hàng đầu trong 60 lần lặp. Điều đó có nghĩa là, giống như tìm kiếm dạng lưới, bạn phải chuyển đổi không gian tìm kiếm của mình để phản ánh dạng chức năng của từng siêu tham số.

Tìm kiếm ngẫu nhiên là cơ sở tốt để tối ưu hóa siêu tham số.

1.2.3 — Tối ưu hóa Bayes (tốt hơn)

Ứng cử viên thứ ba của chúng tôi là thuật toán Tối ưu hóa dựa trên mô hình tuần tự (SMBO) đầu tiên của chúng tôi. Sự khác biệt chính về mặt khái niệm so với các kỹ thuật trước đó là chúng tôi sử dụng lặp đi lặp lại các lần chạy trước để xác định các điểm khám phá trong tương lai.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 4: ví dụ về tối ưu hóa Bayes — src. Hình ảnh của tác giả.

Tối ưu hóa siêu tham số Bayes có vẻ sẽ phát triển phân phối xác suất của không gian tìm kiếm siêu tham số của chúng tôi. Từ đó, nó sử dụng chức năng thu thập, chẳng hạn như cải tiến dự kiến, để biến siêu không gian của chúng ta thành “dễ tìm kiếm hơn”. Cuối cùng, nó sử dụng một thuật toán tối ưu hóa, chẳng hạn như giảm độ dốc ngẫu nhiên, để tìm ra các siêu tham số giúp tối đa hóa chức năng thu thập của chúng tôi. Những siêu tham số đó được sử dụng để phù hợp với mô hình của chúng tôi và quá trình này được lặp lại cho đến khi hội tụ.

Tối ưu hóa Bayes thường hoạt động tốt hơn tìm kiếm ngẫu nhiên, tuy nhiên nó có một số hạn chế cốt lõi như yêu cầu siêu tham số số.

1.2.4 — Công cụ ước tính Parzen dựa trên cây (tốt nhất)

Cuối cùng, hãy nói về ngôi sao của chương trình: Công cụ ước tính Parzen dựa trên cây (TPE). TPE là một thuật toán SMBO khác thường hoạt động tốt hơn tối ưu hóa Bayes cơ bản, nhưng ưu điểm chính là nó xử lý các mối quan hệ siêu tham số phức tạp thông qua cấu trúc cây.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 5: ví dụ về cấu trúc phân cấp cho TPE — src. Hình ảnh của tác giả.

Hãy sử dụng hình 5 để hiểu điều này cấu trúc cây. Ở đây chúng tôi đang đào tạo bộ phân loại Máy vectơ hỗ trợ (SVM). Chúng tôi sẽ kiểm tra hai hạt nhân: linearRBF. Một linear kernel không lấy tham số chiều rộng nhưng RBF đúng như vậy, vì vậy bằng cách sử dụng từ điển lồng nhau, chúng tôi có thể mã hóa cấu trúc này và do đó giới hạn không gian tìm kiếm.

TPE cũng hỗ trợ các biến phân loại mà tối ưu hóa Bayes truyền thống không có.

Tuyên bố từ chối trách nhiệm nhanh trước khi tiếp tục, có nhiều gói điều chỉnh siêu tham số khác. Mỗi hỗ trợ nhiều thuật toán khác nhau, một số trong đó bao gồm rừng ngẫu nhiên, quy trình gaussian và thuật toán di truyền. TPE là một thuật toán rất phổ biến và có mục đích chung, nhưng không nhất thiết phải là thuật toán tốt nhất.

Nhìn chung, TPE là một giải pháp tối ưu hóa siêu tham số thực sự mạnh mẽ và hiệu quả.

Bây giờ chúng ta đã hiểu chung về một số thuật toán tối ưu hóa siêu tham số phổ biến, hãy cùng tìm hiểu sâu hơn về cách hoạt động của TPE.

Trở lại với phép loại suy, chúng ta là những tên cướp biển đang tìm kiếm kho báu bị chôn giấu nhưng không có bản đồ. Thuyền trưởng của chúng tôi cần kho báu càng sớm càng tốt, vì vậy chúng tôi cần đào ở những vị trí chiến lược có khả năng tìm thấy kho báu cao, sử dụng các lần đào trước để xác định vị trí của các cuộc đào trong tương lai.

2.1 — Khởi tạo

Để bắt đầu, chúng tôi xác định các ràng buộc trên không gian của chúng tôi. Như đã lưu ý ở trên, siêu tham số của chúng tôi thường có dạng hàm, giá trị tối đa/tối thiểu và mối quan hệ phân cấp với các siêu tham số khác. Sử dụng kiến ​​thức về thuật toán ML và dữ liệu của chúng tôi, chúng tôi có thể xác định không gian tìm kiếm của mình.

Tiếp theo, chúng ta phải xác định hàm mục tiêu của chúng tôi, được sử dụng để đánh giá mức độ “tốt” của sự kết hợp siêu tham số của chúng tôi. Một số ví dụ bao gồm các hàm mất ML cổ điển, chẳng hạn như RMSE hoặc AUC.

Tuyệt vời! Bây giờ chúng ta đã có không gian tìm kiếm giới hạn và cách đo lường mức độ thành công, chúng ta đã sẵn sàng bắt đầu tìm kiếm…

2.2 — Tối ưu hóa Bayes lặp

Tối ưu hóa Bayes là một thuật toán tuần tự tìm kiếm các điểm trong siêu không gian có xác suất “thành công” cao theo một hàm mục tiêu. TPE tận dụng tối ưu hóa bayes nhưng sử dụng một số thủ thuật thông minh để cải thiện hiệu suất và xử lý độ phức tạp của không gian tìm kiếm…

2.2.0 — Thiết lập khái niệm

Bí quyết đầu tiên là làm mẫu P(x|y) thay vì P(y|x)…

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 6: xác suất có điều kiện mà TPE tìm cách giải quyết. Hình ảnh của tác giả.

Tối ưu hóa Bayes thường dựa vào mô hình P(y|x), đó là xác suất của một giá trị hàm mục tiêu (y), cho trước các siêu tham số (x). TPE làm ngược lại - nó trông giống như mô hình P(x|y), đó là xác suất của các siêu tham số (x), cho trước giá trị hàm mục tiêu (y).

Nói tóm lại, TPE cố gắng tìm các giá trị hàm mục tiêu tốt nhất, sau đó xác định các siêu tham số liên quan.

Với thiết lập rất quan trọng đó, hãy đi vào thuật toán thực tế.

2.2.1 — Chia dữ liệu của chúng tôi thành các nhóm “Tốt” và “Xấu”

Hãy nhớ rằng, mục tiêu của chúng ta là tìm ra các giá trị siêu tham số tốt nhất theo một số hàm mục tiêu. Vì vậy, làm thế nào chúng ta có thể tận dụng P(x|y) Để làm việc đó?

Đầu tiên, TPE chia các điểm dữ liệu được quan sát của chúng tôi thành hai nhóm: tốt, biểu thị g (x), xấu, biểu thị l(x). Ranh giới giữa tốt và xấu được xác định bởi tham số gamma (γ) do người dùng xác định, tương ứng với phần trăm hàm mục tiêu phân chia các quan sát của chúng tôi (y*).

Vì vậy, với γ = 0.5, giá trị hàm mục tiêu phân chia các quan sát của chúng tôi (y*) sẽ là điểm trung bình của các điểm quan sát được của chúng tôi.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 7: chia p(x|y) thành hai tập hợp. Hình ảnh của tác giả.

Như thể hiện trong hình 7, chúng ta có thể chính thức hóa p(x|y) sử dụng khung trên. Và, để so sánh với cướp biển…

Góc nhìn cướp biển: nhìn vào những địa điểm chúng ta đã khám phá, l(x) liệt kê những địa điểm có rất ít kho báu và g(x) liệt kê những địa điểm có nhiều kho báu.

2.2.32— Tính điểm “Có triển vọng”

Thứ hai, TPE xác định cách chúng ta nên đánh giá sự kết hợp siêu tham số không quan sát được thông qua Điểm “có triển vọng”.

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 8: định nghĩa điểm triển vọng. Hình ảnh của tác giả.

Hình 8 xác định điểm hứa hẹn của chúng tôi (P), đây chỉ là tỷ lệ với các thành phần sau…

  • Tử số: xác suất quan sát được một tập hợp các siêu tham số (x), với giá trị hàm mục tiêu tương ứng là “tốt".
  • Mẫu số: xác suất quan sát được một tập hợp các siêu tham số (x), với giá trị hàm mục tiêu tương ứng là “xấu".

Giá trị “hứa hẹn” càng lớn thì khả năng siêu tham số của chúng ta càng cao x sẽ tạo ra một hàm mục tiêu “tốt”.

Quan điểm của cướp biển: sự hứa hẹn cho thấy khả năng một vị trí nhất định trên địa hình của chúng ta sẽ có nhiều kho báu.

Nói nhanh sang một bên trước khi tiếp tục, nếu bạn đã quen với tối ưu hóa Bayes, phương trình này hoạt động như một hàm thu thập và tỷ lệ thuận với Cải thiện dự kiến ​​(EI).

2.2.3— Tạo ước tính mật độ xác suất

Thứ ba, TPE tìm cách đánh giá điểm “có triển vọng” thông qua mô hình hỗn hợp. Ý tưởng của các mô hình hỗn hợp là lấy nhiều phân bố xác suất và kết hợp chúng lại với nhau bằng cách sử dụng tổ hợp tuyến tính - src. Những phân bố xác suất kết hợp này sau đó được sử dụng để phát triển các ước tính mật độ xác suất.

Nói chung, quá trình mô hình hóa hỗn hợp là…

  1. Xác định loại phân phối điểm của chúng tôi. Trong trường hợp của chúng tôi, nếu biến của chúng tôi là phân loại, chúng tôi sử dụng phân phối phân loại có trọng số lại và nếu biến đó là số, chúng tôi sử dụng phân phối gaussian (tức là bình thường) hoặc phân phối đồng đều.
  2. Lặp lại từng điểm và chèn phân phối tại điểm đó.
  3. Tổng khối lượng của tất cả các phân phối để có được ước tính mật độ xác suất.

Lưu ý rằng quá trình này được chạy riêng lẻ cho cả hai bộ l(x)g(x).

Hãy xem qua một ví dụ trong hình 9…

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 9: ví dụ về phân bố gaussian rút gọn phù hợp với 3 quan sát siêu tham số. Hình ảnh của tác giả.

Đối với mỗi quan sát (các chấm màu xanh trên trục x), chúng tôi tạo phân phối chuẩn ~N(μ, σ), trong đó…

  • μ (mu) là giá trị trung bình của phân phối chuẩn của chúng tôi. Giá trị của nó là vị trí của điểm của chúng ta dọc theo trục x.
  • σ (sigma) là độ lệch chuẩn của phân phối chuẩn của chúng tôi. Giá trị của nó là khoảng cách đến điểm lân cận gần nhất.

Nếu các điểm gần nhau thì độ lệch chuẩn sẽ nhỏ và do đó phân bố sẽ rất cao và ngược lại, nếu các điểm cách xa nhau thì phân bố sẽ phẳng (hình 10)…

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 10: ví dụ về tác động của độ lệch chuẩn lên hình dạng của phân bố chuẩn. Hình ảnh của tác giả.

Quan điểm của cướp biển: NA - cướp biển không giỏi với các mô hình hỗn hợp.

Một điều khác nhanh chóng sang một bên trước khi tiếp tục: nếu bạn đang đọc tài liệu, bạn sẽ nhận thấy rằng TPE sử dụng các gaussian “cắt ngắn”, điều này đơn giản có nghĩa là các gaussian được giới hạn bởi phạm vi mà chúng tôi chỉ định trong cấu hình siêu tham số thay vì mở rộng đến +/- vô cùng .

2.2.4 — Xác định điểm tiếp theo để khám phá!

Hãy mang những mảnh này lại với nhau. Cho đến nay, chúng tôi đã 1) thu được các quan sát hàm mục tiêu, 2) xác định công thức “có triển vọng” và 3) tạo ước tính mật độ xác suất thông qua các mô hình hỗn hợp dựa trên các giá trị trước đó. Chúng tôi có tất cả các phần để đánh giá một điểm nhất định!

Bước đầu tiên của chúng tôi là tạo hàm mật độ xác suất trung bình (PDF) cho cả hai g (x) l(x).

Siêu tham số siêu tham số mô hình điều chỉnh máy điều chỉnh dữ liệu học tập khoa học mô hình sklearn mô hình mllib spark hyperopt cây công cụ ước tính parzen công cụ ước tính parzen dựa trên cây tpe mlflow databricks
Hình 11: Lớp phủ mật độ xác suất trung bình cho 3 điểm quan sát. Hình ảnh của tác giả.

Một quy trình ví dụ được hiển thị trong hình 11 - đường màu đỏ là PDF trung bình của chúng tôi và chỉ đơn giản là tổng của tất cả các tệp PDF chia cho số lượng tệp PDF.

Sử dụng PDF trung bình, chúng ta có thể nhận được xác suất của bất kỳ giá trị siêu tham số nào (x) đang ở trong g (x) or l(x).

Ví dụ: giả sử các giá trị quan sát được trong hình 11 thuộc về tập hợp “tốt”, g (x). Dựa trên PDF trung bình của chúng tôi, không chắc giá trị siêu tham số 3.9 hoặc 0.05 thuộc về tập hợp “tốt”. Ngược lại, giá trị siêu tham số ~1.2 dường như rất có thể thuộc về tập hợp “tốt”.

Bây giờ đây chỉ là một nửa của bức tranh. Chúng tôi áp dụng phương pháp tương tự cho tập hợp “xấu”, l(x). Vì chúng tôi đang tìm cách tối đa hóa g(x) / l(x), những điểm hứa hẹn nên được đặt ở đâu g (x) cao và l(x) chậm.

Khá tuyệt phải không?

Với các phân bố xác suất này, chúng ta có thể lấy mẫu từ các siêu tham số có cấu trúc cây và tìm ra tập hợp các siêu tham số giúp tối đa hóa “tính hứa hẹn” và do đó đáng để khám phá.

Góc nhìn cướp biển: vị trí tiếp theo chúng ta đào là vị trí tối đa hóa (xác suất có nhiều kho báu)/(xác suất có ít kho báu).

Bây giờ bạn đã biết cách hoạt động, đây là một số mẹo thiết thực để triển khai TPE thông qua gói nguồn mở, HyperOpt.

3.1 — Cấu trúc của ứng dụng HyperOpt

Nói chung, có ba bước chính khi tận dụng HyperOpt…

  1. Xác định không gian tìm kiếm đó chỉ là phạm vi và dạng chức năng của siêu tham số mà bạn đang muốn tối ưu hóa.
  2. Xác định chức năng phù hợp, cái gọi của bạn model.fit() hoạt động trên một phần tách tàu/kiểm tra nhất định.
  3. Xác định hàm mục tiêu đó là bất kỳ số liệu chính xác cổ điển nào, chẳng hạn như RMSE hoặc AUC.

Thật không may, các phương pháp điều chỉnh tự động này vẫn yêu cầu đầu vào thiết kế từ nhà khoa học dữ liệu - đây không phải là bữa trưa hoàn toàn miễn phí. Tuy nhiên, theo giai thoại, TPE khá mạnh đối với việc xác định sai siêu tham số (trong lý do).

3.2— Mẹo và thủ thuật

  • HyperOpt có thể song song hóa thông qua cả hai Apache SparkMongoDB. Nếu bạn đang làm việc với nhiều lõi, dù ở trên đám mây hay trên máy cục bộ của bạn, điều này có thể làm giảm đáng kể thời gian chạy.
  • Nếu bạn đang song song hóa quá trình điều chỉnh thông qua Apache Spark, hãy sử dụng SparkTrialsđối tượng cho các mô hình ML nút đơn (sklearn) và Trails đối tượng cho các mô hình ML song song (MLlib). Mã ở bên dưới.
  • Dòng chảy ML là một phương pháp nguồn mở để theo dõi quá trình chạy mô hình của bạn. Nó dễ dàng tích hợp với HyperOpt.
  • Đừng thu hẹp không gian tìm kiếm quá sớm. Một số sự kết hợp của siêu tham số có thể mang lại hiệu quả đáng ngạc nhiên.
  • Việc xác định không gian tìm kiếm có thể khó khăn, đặc biệt nếu bạn không biết dạng chức năng của siêu tham số của bạn. Tuy nhiên, theo kinh nghiệm cá nhân, TPE khá chắc chắn đối với việc xác định sai các dạng chức năng đó.
  • Việc chọn một hàm mục tiêu tốt sẽ mất một chặng đường dài. Trong hầu hết các trường hợp, lỗi không được tạo ra như nhau. Nếu một loại lỗi nhất định có vấn đề hơn, hãy đảm bảo đưa logic đó vào hàm của bạn.

3.3— Ví dụ về mã

Đây là một số mã để chạy HyperOpt theo cách phân tán. Nó được chuyển thể từ mật mã trong cuốn sách, Kỹ thuật học máy đang hoạt động - đây là kho lưu trữ git.

Một số tính năng hay của đoạn mã này bao gồm song song hóa thông qua Apache Spark và ghi nhật ký mô hình thông qua Dòng chảy ML. Cũng lưu ý rằng đoạn mã này tối ưu hóa RandomForestRegressor sklearn - bạn sẽ phải thay đổi mô hình và chức năng phù hợp để phù hợp với nhu cầu của mình.

Và bạn đã có nó — HyperOpt thật vinh quang!

Để hy vọng những điểm chính, chúng ta hãy tóm tắt nhanh.

Điều chỉnh siêu tham số là một phần cần thiết trong vòng đời của mô hình ML nhưng tốn thời gian. Thuật toán Tối ưu hóa dựa trên mô hình tuần tự (SMBO) vượt trội trong việc tìm kiếm các siêu không gian phức tạp để tìm mức tối ưu và chúng có thể được áp dụng để điều chỉnh siêu tham số. Công cụ ước tính Parzen dựa trên cây (TPE) là một SMBO rất hiệu quả và hoạt động tốt hơn cả Tối ưu hóa Bayesian và Tìm kiếm ngẫu nhiên.

TPE lặp lại các bước dưới đây cho đến khi đạt tiêu chí dừng:

  1. Chia các điểm quan sát thành các tập hợp “tốt” và “xấu”, theo một số siêu tham số, gamma.
  2. Điều chỉnh mô hình hỗn hợp cho cả tập hợp “tốt” và “xấu” để phát triển ước tính mật độ xác suất trung bình.
  3. Chọn điểm tối ưu hóa điểm “có triển vọng”, điểm này tận dụng bước 2 để ước tính xác suất nằm trong nhóm “tốt” và “xấu”.

Cuối cùng, chúng tôi có một đoạn mã thực sự thú vị cho biết cách song song hóa HyperOpt thông qua SparkTrials. Nó cũng ghi lại tất cả các lần lặp của chúng tôi vào MLflow.

HyperOpt được làm sáng tỏ được xuất bản lại từ nguồn https://towardsdatascience.com/hyperopt-demystified-3e14006eb6fa?source=rss—-7f60cf5620c9—4 qua https://towardsdatascience.com/feed

<!–

->

Dấu thời gian:

Thêm từ Tư vấn chuỗi khối