cross-entropy method

13
Cơ sở thuật toán trong Trí tuệ nhân tạo Phương pháp cross-entropy Phân loại Là một phương pháp tối ưu xác suất (probabilistic optimization) thuộc lĩnh vực tối ưu ngẫu nhiên (stochastic optimization). Nó tương tự như các phương pháp tối ưu ngẫu nhiên khác và các thuật toán như Luyện thép và giống các thuật toán ước lượng phân bố như Probabilistic Incremental Learning Algorithm. Cảm hứng Cross-entropy method (CEM) không có nguồn cảm hứng nào mà được phát triển như là một kỹ thuật ước lượng hiệu quả cho xác suất các sự kiện hiếm. Tên của nó bắt nguồn từ phương pháp cross-entropy của Kullback- Leibler để đo lượng thông tin (bits) cần thiết để xác định một sự kiện từ một tập các xác suất. Chiến lược Chiến lược của giải thuật là lấy mẫu không gian bài toán và xấp xỉ phân phối của các lời giải tốt. Có thể đạt được điều này bằng các giả sử không gian thuật toán có một phân phối (chẳng hạn Gaussian), lấy mẫu miền bài toán bằng cách tạo ra các lời giải ứng cử viên sử dụng phân phối và cập nhật phân phối dựa vào các lời giải ứng cử viên tốt nhất được tìm thấy. Nội dung Để hiểu đầy đủ và chính xác nội dung của phương pháp cross-entropy, phần này đi ngược về quá khứ để tìm hiểu cách cross-entropy được áp dụng trong xác suất thống kê rồi sau đó được chuyển sang áp dụng cho tối ưu tổ hợp như thế nào.

Upload: minh-le

Post on 30-Nov-2014

915 views

Category:

Documents


0 download

DESCRIPTION

Brief introduction of cross-entropy method

TRANSCRIPT

Page 1: Cross-entropy method

Cơ sở thu tậ toán trong Trí tuệ nhân t oạ

Phương pháp cross-entropy

Phân loại

Là một phương pháp tối ưu xác suất (probabilistic optimization) thuộc lĩnh vực tối ưu ngẫu nhiên (stochastic optimization). Nó tương tự như các phương pháp tối ưu ngẫu nhiên khác và các thuật toán như Luyện thép và giống các thuật toán ước lượng phân bố như Probabilistic Incremental Learning Algorithm.

Cảm hứng

Cross-entropy method (CEM) không có nguồn cảm hứng nào mà được phát triển như là một kỹ thuật ước lượng hiệu quả cho xác suất các sự kiện hiếm. Tên của nó bắt nguồn từ phương pháp cross-entropy của Kullback-Leibler để đo lượng thông tin (bits) cần thiết để xác định một sự kiện từ một tập các xác suất.

Chiến lược

Chiến lược của giải thuật là lấy mẫu không gian bài toán và xấp xỉ phân phối của các lời giải tốt. Có thể đạt được điều này bằng các giả sử không gian thuật toán có một phân phối (chẳng hạn Gaussian), lấy mẫu miền bài toán bằng cách tạo ra các lời giải ứng cử viên sử dụng phân phối và cập nhật phân phối dựa vào các lời giải ứng cử viên tốt nhất được tìm thấy.

Nội dung

Để hiểu đầy đủ và chính xác nội dung của phương pháp cross-entropy, phần này đi ngược về quá khứ để tìm hiểu cách cross-entropy được áp dụng trong xác suất thống kê rồi sau đó được chuyển sang áp dụng cho tối ưu tổ hợp như thế nào.

Ví dụ đầu tiên

Chúng ta hãy cùng bắt đầu với một ví dụ nhỏ. Xem xét đồ thị ở Hình 1 với các biến ngẫu nhiên X1,..., X5. Giả sử trọng số trên các cạnh độc lập với nhau và có phân phối hàm mũ với giá trị trung bình u1,..., u5 tương ứng. Gọi X = (X1,..., X5) và u = (u1,... u5). Từ đây trở đi X in đậm là ký hiệu vec-tơ biến ngẫu nhiên còn Xi in thường là ký hiệu thành phần của nó. Ký hiệu hàm mật độ xác suất của X là f( ∙ ; u), ta có:

Gọi S(X) là tổng chiều dài của đường đi ngắn nhất từ nút A đến nút B. Chúng ta cần ước lượng bằng cách mô phỏng

Page 2: Cross-entropy method

nghĩa là xác suất độ dài đường đi S(X) vượt quá số γ cho trước.

Các đơn giản nhất để ước lượng l là sử dụng mô phỏng Monte Carlo thô (Crude Monte Carlo - CMC). Nghĩa là chúng ta tạo ra một bộ mẫu ngẫu nhiên X1,…, XN từ phân phối của X và sử dụng

như một ước lượng không lệch của l. Tuy nhiên với γ lớn, xác suất l thường rất nhỏ và CMC cần khối lượng công việc lớn mới có thể mô phỏng được, nghĩa là N cần phải tăng lên rất lớn để ước lượng chính xác l. Một cách tốt hơn để mô phỏng là sử dụng lấy mẫu quan trọng (importance sampling - IS).

Giả sử g là một hàm mật độ xác suất khác sao cho g(x) = 0 => , ta có:

trong đó chỉ số dưới g có nghĩa kì vọng được tính theo g, được gọi là mật độ lấy mẫu quan trọng. Một ước lượng không chệch của l là

trong đó l được gọi là ước lượng lấy mẫu quan trọng (importance sampling estimator) hoặc ước lượng tỉ lệ khả năng (likelihood ratio estimator),

W(x) = f(x)/g(x)

được gọi là tỉ lệ khả năng (likelihood ratio – LR) và X1,…, XN là các mẫu ngẫu nhiên từ g hay nói cách khác X1,…, XN là các vec-tơ ngẫu nhiên độc lập đồng phân phối với mật độ g. Trường hợp đặc biệt khi không có “sự thay đổi phép đo”, nghĩa là g = f, ta có W = 1 và ước lượng LR rút về ước lượng CMC.

Nếu chọn g sao cho X1,…, X5 là độc lập và phân phối mũ với trung bình v1,…, v5 thì:

Trong trường hợp này “sư thay đổi phép đo” được xác định bởi vec-tơ tham số v = (v1,…, v5). Vấn đề chính là chọn v như thế nào để cho kết quả chính xác nhất với ít công sức tính toán. Một trong những mặt mạnh của CE trong ước lượng sự kiện hiếm là nó xác định/ước lượng tham số tối ưu một cách

Hình 1: Đường đi ngắn nhất từ A đến B

Page 3: Cross-entropy method

nhanh chóng. Không đi sâu vào chi tiết, ta có thể đưa ra một khung thuật toán CE tương đối tổng quát cho ước lượng sự kiện hiếm như sau:

1. Gán v0≔u , t≔1.

2. Sinh mẫu ngẫu nhiên X1,…, XN theo mật độ phân phối f( ∙ ; vt-1). Tính các giá trị S(Xi) cho mọi i và sắp xếp chúng từ nhỏ đến lớn, S(1) ≤ S(2) ≤ … ≤ S(N). Gọi γ t là điểm phân vị mẫu (1-ρ) của các giá trị: γ t=S¿¿ nếu nó nhỏ hơn γ. Ngược lại, đặt γ t= γ.

3. Sử dụng cùng bộ mẫu để tính với j = 1,…, n (=5),

4. Nếu γ t= γ thì chuyển sang bước 5; nếu không đặt t = t+1 và chuyển sang bước 2.

5. Gọi T là bước lặp cuối cùng. Sinh mẫu X1,…, XN1 tương ứng với mật độ phân phối xác suất f( ∙ ; vT) và ước lượng l qua phép ước lượng lấy mẫu quan trọng

Bảng 1 cho thấy hiệu quả của phương pháp CE, sử dụng N = 1.000 và ρ = 0,1. Thời gian tính ra bảng này chỉ dưới một giây.

Bảng 1 Sự hội tụ của chuỗi {( γ t , v t ) }.

Sử dụng các tham số ước lượng tối ưu v5=(1,692 ;1,901 ;0,129 ;0,712;0,564 ), bước cuối cùng với N1

= 105 cho ta ước lượng 1,34 . 10-5 với sai sô tương đối ước lượng bằng 0,03. Quá trình mô phỏng chạy trong 3 giây cài đặt trên Matlab với bộ xử lý Pentium III 500 MHz. Ngược lại, phương pháp CMC với 107 mẫu chạy trong xấp xỉ 630 giây và 108 mẫu chạy trong khoảng 6350 giây với sai số không tốt hơn.

Cross-entropy dùng trong ước lượng xác suất sự kiện hiếm

Ví dụ vừa trình bày cho phép ta hình dung về phương pháp cross-entropy, trong phần này chúng ta sẽ tìm hiểu sâu hơn phương pháp entropy là gì ở dạng tổng quát của nó.

Gọi X = (X1,…, Xn) là một vec-tơ ngẫu nhiên nhận giá trị trong không gian X . Gọi {f ( ∙ ; v)} là một họ các hàm mật độ xác suất trên X tuân theo độ đo ν. Ở đây v là (vec-tơ) tham số giá trị thực. Ta có:

với mọi hàm (đo được) H. Trong hầu hết (nếu không phải tất cả) các ứng dụng, ν là một độ đo đếm

Page 4: Cross-entropy method

hoặc Lebesgue. Trong phần sau để đơn giản chúng ta viết ν (d x )=d x.

Gọi S là một hàm thực trên X . Giả sử chúng ta quan tâm đến xác suất S(x) lớn hơn hoặc bằng một số nguyên γ, theo f ( ∙ ; u). Xác suất này được viết như sau

Nếu xác suất này rất nhỏ, chẳng hạn nhỏ hơn 10-5, ta gọi {S(X) ≥ γ} là một sự kiện hiếm.

Một cách đơn giản để ước lượng l là sử dụng ước lượng Monte Carlo thô. Tuy nhiên khi {S(X) ≥ γ} là một sự kiện hiếm cần mất rất nhiều công mô phỏng để ước lượng được l chính xác, nghĩa là với lỗi tương đối nhỏ và khoảng tin cậy hẹp.

Một cách làm khác dựa trên lấy mẫu quan trọng: lấy một mẫu ngẫu nhiên X1,…, XN từ một hàm mật độ mẫu quan trọng g trên X và đánh giá l bằng ước lượng LR:

Dễ thấy rằng cách tốt nhất để ước lượng l là thay đổi phép đo với mật độ

Cụ thể, sử dụng phép biến đổi này ta có

với mọi i. Nói cách khác, ước lượng trên có độ lệch bằng không và chúng ta chỉ cần tạo ra N = 1 mẫu.

Rõ ràng khó khăn gặp phải là g* phụ thuộc vào tham số chưa biết l. Hơn nữa, thông thường chọn g trong họ mật độ {f ( ∙ ; v)} thuận tiện hơn các cách khác. Ý tưởng là chọn vec-tơ tham số, gọi là tham số tham chiếu (đôi khi gọi là tham số nghiêng) v sao cho khoảng cách giữa g* và f ( ∙ ; v) là nhỏ nhất. Một phép đo khoảng cách thuận tiện giữa hai mật độ g và h là khoảng cách Kullback-Leibler, cũng được gọi là cross-entropy giữa g và h. Khoảng cách Kullback-Leibler được định nghĩa như sau:

Lưu ý rằng D không phải “khoảng cách” theo nghĩa thông thường, chẳng hạn, D không đối xứng.

Tối thiểu hoá khoảng cách Kullback-Leibler giữa g* và f ( ∙ ; v) tương đương với việc giải bài toán cực đại hoá:

Áp dụng một số phép biến đổi và phép lấy mẫu quan trọng một lần nữa với sự thay đổi phép đo f ( ∙ ; w) ta có:

Page 5: Cross-entropy method

với D được định nghĩa ngầm như ở trên và

là tỷ lệ khả năng tại x giữa f ( ∙ ; u) và f ( ∙ ; w). Lời giải cho bài toán trên là hệ phương trình sau:

với đạo hàm được lấy theo v.

Ý nghĩa của phương pháp này là lời giải của phương trình có thể được tính một cách giải tích.

Một chú ý quan trọng là phương pháp trên chỉ sử dụng được trong trường hợp xác suất của “sự kiện đích” {S(X) ≥ γ} không qua nhỏ, chẳng hạn l ≥10−5. Với xác suất của các sự kiện hiếm, hầu hết các giá trị chỉ thị I {S (X i)≥γ }, i=1 , …, N sẽ bằng không với N trung bình.

Thuật toán đa mức được sử dụng để vượt qua rào cản này. Ý tưởng là dựng một chuỗi các tham số tham chiếu {vt, t ≥ 0} và một chuỗi mức {γt, t ≥ 1} và lặp với cả γt và vt.

Để khởi tạo ta chọn một số ρ không quá nhỏ, chẳng hạn ρ = 10-2 và gán v0 = u. Tiếp theo chọn γ1 (γ1 < γ) sau cho với mật độ ban đầu f (x; u), xác suất l1=Eu I {S( X )≥γ } ít nhất là ρ. Sau đó coi v1 là tham số tham chiếu tối ưu để ước lượng l1 và lặp lại hai bước trên lần lượt. Thuật toán được chia làm hai pha:

1. Cập nhật γt. Với một vt-1, gọi γt là một (1-ρ)-phân vị của S(X), nghĩa là:

với X ~ f ( ∙ ; vt-1).

Một ước lượng đơn giản γ t của γ t có thể tính được bằng cách sinh một mẫu ngẫu nhiên X1,…, XN từ f ( ∙ ; vt-1), tính hiệu năng S(Xi) cho mọi i, sắp xếp từ nhỏ nhất đến lớn nhất: S(1) ≤ S(2) ≤ … ≤ S(N) và cuối cùng đánh giá phân vị mẫu bằng

2. Cập nhật vt. Với γ t và vt-1 cố định, tìm vt từ lời giải của

Bài toán ngẫu nhiên tương đương như sau: với γ t và v t−1 cố định, tính v t từ lời giải của

Tại bước lặp đầu tiên, bắt đầu với v0=u, để có một ước lượng tốt của v1, ta làm cho sự kiện đích bớt

Page 6: Cross-entropy method

hiếm bằng cách (tạm thời) sử dụng một mức γ 1 nhỏ hơn γ. Giá trị của v1 đạt được bằng cách này (hy vọng là) làm cho sự kiện {S(X) ≥ γ} bớt hiếm trong lần lặp tiếp theo, nhờ đó γ 1 có thể tiến gần hơn đến γ. Thuật toán kết thúc khi tại một bước lặp t nào đó mức đạt đến ít nhất là γ vì thế giá trị ban đầu γ có thể được sử dụng mà không dẫn đến số mẫu quá ít.

Ta có giải thuật sau:

1. Gán v0=u , t=1.

2. Sinh một mẫu X1,…, XN từ mật độ f ( ∙ ; vt-1) và tính điểm (1-ρ)-phân vị γ t với điều kiện γ t nhỏ hơn γ. Ngược lại đặt γ t=γ .

3. Sử dụng cũng mẫu X1,…, XN để giải bài toán ngẫu nhiên sau, ký hiệu lời giải là v t.

4. Nếu γ t<γ , đặt t = t+1 và quay lại bước 2. Nếu không đi tiếp đến bước 5.

5. Ước lượng xác suất sự kiện hiếm l sử dụng ước lượng LR:

với T là bước lặp cuối cùng (= số mức đã sử dụng).

Cross-entropy dùng trong tối ưu tổ hợp

Xem xét bài toán cực đại hoá tổng quá sau. Gọi X là một tập hữu hạn các trạng thái và S là một hàm hiệu năng giá trị thực trên X . Ta muốn tìm giá trị lớn nhất của S trên X và (các) trạng thái đạt cực đại. Ký hiệu giá trị cực đại là γ*,

Phương pháp luận của cross-entropy là gắn một bài toán ước lượng với một bài toán tối ưu. Để làm được điều này ta định nghĩa nhóm các hàm chỉ thị {I {S ( x ) ≥γ }} trên tập X với các ngưỡng γ ∈R khác nhau. Gọi {f ( ∙; v ) , v∈V } là họ của các mật độ phân phối xác suất (rời rạc) trên X , tham số hoá bởi vec-tơ tham số giá trị thực v.

Với một u∈V nhất định ta gắn bài toán trên với bài toán ước lượng số

Trong đó Pu là độ đo xác suất dưới trạng thái ngẫu nhiên X có mật độ phân phối f ( ∙ ;u ) và Eu ký hiệu toán tử kỳ vọng tương ứng. Ta gọi bài toán này là bài toán ngẫu nhiên liên kết (associated stochastic problem – ASP). Để chỉ ra sự liên kết này, giả sử γ bằng γ* và f ( ∙ ;u ) là phân phối đều trên X . Để ý rằng l (γ ¿)=f ( x¿ ;u )=1/¿ X∨¿ - trong đó |X∨¿ ký hiệu số phần tử trong X – là một số nhỏ. Vì thế với γ = γ*, một cách tự nhiên để ước lượng l (γ ) là sử dụng ước lượng LR với tham số tham chiếu v* cho bởi

Page 7: Cross-entropy method

Tham số này có thể được ước lượng bằng

trong đó Xi được sinh từ mật độ f ( ∙ ;u ) .

Nếu γ gần đến γ* thì f (∙ ;v¿ ) gán hầu hết mật độ xác suất của nó cho x* vì thế có thể dùng nó để sinh một lời giải gần đúng cho bài toán ban đầu. Tuy nhiên cần chú ý rằng ước lượng v¿ chỉ thực tế khi I {S (X )≥γ }=1 với đủ nhiều mẫu.

Ở đây ta thấy sự tương đồng rất rõ ràng với bài toán mô phỏng sự kiện hiếm. ý tưởng một lần nữa là sử dụng phương pháp hai pha, nhiều mức trong đó đồng thời xây dựng chuỗi mức γ 1 , γ2 , …, γT và các (vec-tơ) tham số v1 , v2 ,…, vT sao cho γ T gần với giá trị tối ưu γ* và vT sao cho mật độ xác suất tương ứng gán vào tập các trạng thái có hiệu năng cao.

Ta có thuật toán sau:

1. Gọi v0=u. Đặt t = 1

2. Sinh mẫu X1,…, XN từ hàm mật độ xác suất f ( ∙ ; vt-1) và tính (1-ρ)-phân vị mẫu γ t của hiệu năng.

3. Sử dụng cùng một mẫu X1,…, XN và giải phương trình ngẫu nhiên sau với W = 1. Ký hiệu lời giải là v t.

4. Nếu với một số t ≥ d, chẳng hạn d = 5,

thì dừng (gọi T là lần lặp cuối cùng); ngược lại đặt t = t + 1 và quay lại bước 2

Trong thuật toán này điều kiện dừng, vec-tơ khởi đầu v0, kích thước mẫu N và số ρ cần biết trước còn lại được “tự điều chỉnh”.

Công thức được sử dụng ở bước 3 chính là công thức trong phương pháp ước lượng sự kiện hiếm nhưng bài toán tối ưu không đòi hỏi một vec-tơ tham số u cho trước nào nên ta có thể bỏ qua tỷ lệ khả năng bằng cách gán W = 1.

Cross-entropy và ước lượng phân phối

Xét trường hợp đặc biệt khi X = (X1, X2,…, Xn) là vec-tơ các thành phần độc lập cùng phân phối chuẩn. Nghĩa là

f (X ¿¿ j)= 1

√2 π σ j2

exp(−( X j−μ j )2

σ j2 ) ,¿

f ( X i; μ , σ )=∏j=1

n

f ( X ij)

Page 8: Cross-entropy method

Thay vào công thức ở bước 3 và cho đạo hàm từng phần theo µ, σ bằng không ta có công thức cập nhật tham số như sau:

μt=E selected ( X ) ,

σ r=√V selected (X ) .

Trong đó E selected ,V selected lần lượt là kỳ vọng và phương sai của tập các mẫu thoả mãn điều kiện S( X)≥ γ .

Nếu thay vì chọn giá trị γ xác định cho mỗi bước lặp ta chọn các giá trị tốt nhất của X bằng cách nào đó (chẳng hạn sắp xếp và chọn 10% đứng đầu) thì thuật toán cross-entropy trùng khớp với thuật toán ước lượng đa biến chuẩn (Estimation of Multivariate Normal Algorithm – EMNA), một trường hợp riêng của thuật toán ước lượng phân phối.

Luật cập nhật mịn

Thay vì cập nhật trực tiếp, người ta thường sử dụng luật cập nhật có dạng

trong đó w t là vec-tơ tìm được từ công thức ở bước 3. Cách làm này đặc biệt phù hợp với các bài toán tối ưu trên biến ngẫu nhiên rời rạc. Lý do chính thủ tục cập nhật mịn này làm việc tốt hơn là nó ngăn cản các giá trị 0 và 1 trong vec-tơ tham số. Khi một phần tử đạt 0 hay 1, nó thường giữ nguyên giá trị mãi mãi, đó là điều không được mong đợi. Bằng thực nghiệm người ta chỉ ra rằng α nằm trong khoảng [0,4; 0,9] cho kết quả tốt nhất.

Giả mã

Algorithm 5.6.1: Pseudocode for the Cross-Entropy Method.

Input: Problemsize , Samplesnum , UdateSamplesnum , Learnrate ,

Variancemin

Output: Sbest

1 Means ← InitializeMeans();

2 Variances ← InitializeVariances();

3 Sbest ← ∅;

4 while Max(Variances) ≤ Variancemin d

5 Samples ← 0;

6 for i = 0 to Samplesnum do

7 Samples ← GenerateSample(Means, Variances);

8 end

9 EvaluateSamples(Samples);

10 SortSamplesByQuality(Samples);

11 if Cost(Sample s0) ≤ Cost(Sbest ) then

Page 9: Cross-entropy method

12 Sbest ← Sample s0;

13 end

14 Samplesselected ←SelectBestSamples(Samples, UpdateSamplesnum );

15 for i = 0 to Problemsize do

16 Mean si ← Learnrate × Mean si + (1 - Learnrate) × Mean(Samplesselected, i);

17 Variance si ← Learnrate × Variance si + (1 - Learnrate) × Variance(Samplesselected, i);

18 end

19 end

20 return Sbest;

Heuristic

Phương pháp cross-entropy được sửa đổi cho phù hợp với các bài toán tối ưu tổ hợp mặc dù đã được ứng dụng vào tối ưu hoá hàm liên tục cũng như các bài toán mô phỏng nhiễu.

Một tham số alpha (α) hay tốc độ học thuộc [0; 1] thường được đặt giá trị cao, chẳng hạn 0,7.

Một hàm làm mịn có thể được sử dụng để điều khiển việc cập nhật tổng hợp các phân phối các mẫu trong không gian bài toán. Ví dụ, trong tối ưu hàm liên tục, một tham số β có thể thay thế α để cập nhật độ lệch chuẩn, tại thời điểm t nhận giá trị βt = β - β x (1- 1/t)q. trong đó β ban đầu có giá trị cao tầm [0,8; 0,9] và q là một số nguyên nhỏ thuộc [5; 10].

Tham khảo

Các nguồn chính

Phương pháp cross-entropy được đề xuất bởi Rubinstein năm 1997 [2] dùng cho tối ưu các hệ thống mô phỏng sự kiện rời rạc. Sau đó nó được tổng quát hoá bởi Rubinstein và để xuất như một phương pháp tối ưu hoá cho tối ưu hàm tổ hợp năm 1999 [3]. Công trình này sau đó được phát triển thêm bởi Rubinstein làm sáng tỏ những chi tiết về việc sử dụng phương pháp cross-entropy cho bài toán tối ưu tổ hợp.

Tìm hiểu thêm

De Boer và các đồng nghiệp trình bày chi tiết về phương pháp cross-entropy bao gồm ứng dụng trong mô phỏng sự kiện hiếm, sự sửa đổi cho phù hợp với tối ưu tổ hợp và ứng dụng ví dụ cho bài toán max-cut, người du lịch và một ví dụ tối ưu số học cụm (clustering numeric optimization) [1]. Rubinstein và Kroese trình bày kĩ càng về cách tiếp cận này trong quyển sách của họ, tóm tắt những lý thuyết phù hợp và tình hình nghiên cứu mới nhất [5].

Mục lục tài liệu

[1] P. T. De Boer, D. P. Kroese, S. Mannor, and R. Y. Rubinstein. A tutorial on the cross-entropy method. Annals of Operations Research, 134(1):19–67, 2005.

[2] R. Y. Rubinstein. Optimization of computer simulation models with rare events. European Journal of Operations Research, 99:89–112, 1997.

Page 10: Cross-entropy method

[3] R. Y. Rubinstein. The simulated entropy method for combinatorial and continuous optimization. Methodology and Computing in Applied Probability, 1(2):127–190, 1999.

[4] R. Y. Rubinstein. Stochastic optimization: algorithms and applications, chapter Combinatorial optimization, cross-entropy, ants and rare events, pages 303–364. Springer, 2001.

[5] R. Y. Rubinstein and D. P. Kroese. The Cross-Entropy Method: A Unified Approach to Combinatorial Optimization. Springer, 2004.