Kích thước bước xuống dốc thích ứng khi bạn không thể thực hiện tìm kiếm dòng


9

Tôi có hàm mục tiêu phụ thuộc vào một giá trị , trong đó là giải pháp cho PDE. Tôi đang tối ưu hóa bằng cách giảm độ dốc theo điều kiện ban đầu của PDE: . Tức là tôi cập nhật và sau đó phải tích hợp PDE để tính toán số dư của tôi. Điều đó có nghĩa là, nếu tôi thực hiện tìm kiếm dòng cho kích thước bước giảm dần (gọi nó là ), với mỗi giá trị tiềm năng của tôi sẽ phải tích hợp lại PDE.ϕ ( x , t = 1.0 ) ϕ ( x , t ) EEϕ(x,t=1.0)ϕ(x,t)Eφ ( x , t = 0,0 )ϕ(x,t=0.0)ϕ(x,t=0.0)αα

Trong trường hợp của tôi đó sẽ là đắt đỏ. Có một tùy chọn khác cho kích thước bước xuống dốc thích ứng?

Tôi không chỉ tìm kiếm các sơ đồ nguyên lý toán học ở đây (mặc dù tất nhiên điều đó tốt hơn nếu có gì đó tồn tại), nhưng sẽ hài lòng với bất cứ điều gì thường tốt hơn kích thước bước tĩnh.

Cảm ơn!


Tôi không nghĩ rằng tôi muốn sửa đổi cách tôi tích hợp PDE vào lúc này, vì đối với tôi đó sẽ là một mã viết lại chính. Ngoài ra, PDE không phải là một vấn đề khó khăn, vì tôi phải giải quyết nó trên một mạng lưới rất dày đặc trong không thời gian vì tôi yêu cầu độ chính xác về số rất cao.
NLi10Me

Mặt khác, phương pháp BB (mà tôi không quen thuộc) có vẻ khá tốt; tất cả những gì tôi phải làm là theo dõi trạng thái và độ dốc của lần lặp trước đó và tôi có được xấp xỉ bậc hai ... điều đó có vẻ rất hay. Tuy nhiên, đạo hàm giả định một bậc hai lồi và vấn đề của tôi gần như chắc chắn là không. Mặc dù vậy, tôi cũng chắc chắn tìm thấy (và hài lòng với) địa phương hơn là cực tiểu toàn cầu. Bạn có biết BB đã thực hiện tốt như thế nào đối với các vấn đề rất cao không?
NLi10Me

Tôi đoán những gì tôi muốn nói về cực tiểu địa phương là, trong vùng lân cận tối thiểu cục bộ, không có bất kỳ chức năng nào xấp xỉ bậc hai? Tôi nghĩ trạng thái ban đầu của tôi đủ gần với mức tối thiểu, vì trong nhiều trường hợp tôi có được sự hội tụ mượt mà ngay cả với kích thước bước tĩnh. Vì vậy, mặc dù chiều rất cao và nói chung nếu bạn xem xét toàn bộ không gian tìm kiếm thì vấn đề không phải là lồi / không bậc hai, BB vẫn có thể là một lựa chọn tốt khi tìm kiếm theo dòng? ϕ(0)(x,t=0.0)
NLi10Me

Các "thành phần" khác của là dữ liệu hình ảnh thử nghiệm. cố gắng làm cong một hình ảnh để "khớp" hình ảnh kia (được đo bằng một số chức năng phù hợp như tiêu chuẩn L2 được tích hợp trên voxels). Đối với một số cặp hình ảnh, tôi có được sự hội tụ mượt mà với (lựa chọn hiện tại của tôi) kích thước bước tĩnh. Đối với các cặp hình ảnh khác, tôi nhận được rất nhiều dao động. Hệ thống phải hoàn toàn tự động, vì vậy tôi không thể quay lại và chỉnh sửa kích thước bước cho các cặp hình ảnh rắc rối. φ ( x , t = 1,0 )Eϕ(x,t=1.0)
NLi10Me

Đúng vậy, tôi phải giải quyết hệ thống liên kết để có được độ dốc (là một hệ thống khó khăn hơn và mất nhiều thời gian hơn). Ok, tôi nghĩ rằng tôi sẽ thử BB với tìm kiếm đường lui. Cảm ơn bạn rất nhiều vì lời khuyên; các cố vấn của tôi thường rất khó hiểu và nhiều người trong số họ không quan tâm đến việc triển khai nhiều như chỉ là mô hình. Tôi đang tìm các phương thức số là thành phần quan trọng để chứng minh liệu một mô hình có tốt hay không ngay từ đầu, vì vậy cảm ơn một lần nữa tôi thực sự đánh giá cao nó.
NLi10Me

Câu trả lời:


15

Tôi sẽ bắt đầu với một nhận xét chung: thông tin thứ tự đầu tiên (nghĩa là chỉ sử dụng độ dốc, mã hóa độ dốc) chỉ có thể cung cấp cho bạn thông tin định hướng: Nó có thể cho bạn biết rằng giá trị hàm giảm theo hướng tìm kiếm, nhưng không trong bao lâu . Để quyết định đi bao xa theo hướng tìm kiếm, bạn cần thêm thông tin (độ dốc giảm dần với độ dài bước không đổi có thể thất bại ngay cả đối với các vấn đề bậc hai lồi). Đối với điều này, về cơ bản, bạn có hai lựa chọn:

  1. Sử dụng thông tin bậc hai (mã hóa độ cong), ví dụ bằng cách sử dụng phương pháp của Newton thay vì giảm độ dốc (mà bạn luôn có thể sử dụng bước dài đủ gần với bộ giảm thiểu).1
  2. Thử và sai (tất nhiên ý tôi là sử dụng tìm kiếm dòng thích hợp như Armijo).

Nếu, khi bạn viết, bạn không có quyền truy cập vào các công cụ phái sinh thứ hai và việc đánh giá hàm obejctive rất tốn kém, hy vọng duy nhất của bạn là thỏa hiệp: sử dụng đủ thông tin thứ hai gần đúng để có độ dài bước ứng cử viên tốt sao cho một dòng tìm kiếm chỉ cần các đánh giá (nghĩa là, nhiều nhất là một bội số (nhỏ) không đổi của nỗ lực bạn cần để đánh giá độ dốc của bạn).O(1)

Một khả năng là sử dụng độ dài bước Barzilai - Borwein (xem, ví dụ: Fletcher: Trên phương pháp Barzilai-Borwein . Tối ưu hóa và kiểm soát với các ứng dụng, 235 Từ256, Appl. Optim., 96, Springer, New York, 2005 ). Ý tưởng là sử dụng một xấp xỉ sai phân hữu hạn của độ cong dọc theo hướng tìm kiếm để có được ước tính kích thước bước. Cụ thể, chọn tùy ý, đặt và sau đó cho :g 0 : = f ( x 0 ) k = 0 , . . .α0>0g0:=f(x0)k=0,...

  1. Đặt vàx k + 1 = x k + s ksk=αk1gkxk+1=xk+sk
  2. Đánh giá và đặtgk+1=f(xk+1)yk=gk+1gk
  3. Đặtαk+1=(yk)Tyk(yk)Tsk

Lựa chọn này có thể được hiển thị để hội tụ (trong thực tế rất nhanh) cho các hàm bậc hai, nhưng độ hội tụ không đơn điệu (nghĩa là giá trị hàm có thể lớn hơn , nhưng chỉ thỉnh thoảng thôi, xem cốt truyện trên trang 10 trong bài viết của Fletcher). Đối với các hàm không bậc hai, bạn cần kết hợp điều này với tìm kiếm dòng, cần phải sửa đổi để đối phó với tính không đơn điệu. Một khả năng là chọn (ví dụ: bằng cách quay lui) sao cho trong đó là tham số Armijo điển hình vàf(xk+1)f(xk)σk(0,αk1)

f(xkσkgk)maxmax(kM,1)jkf(xj)γσk(gk)Tgk,
γ(0,1)Mkiểm soát mức độ đơn điệu (ví dụ: ). Ngoài ra còn có một biến thể sử dụng giá trị độ dốc thay vì giá trị hàm, nhưng trong trường hợp của bạn, độ dốc thậm chí còn đắt hơn để đánh giá so với hàm, do đó không có ý nghĩa ở đây. (Lưu ý: Tất nhiên bạn có thể cố gắng mù quáng chấp nhận độ dài bước BB và tin vào vận may của mình, nhưng nếu bạn cần bất kỳ loại mạnh mẽ nào - như bạn đã viết trong nhận xét của mình - đó sẽ là một ý tưởng thực sự tồi tệ.)M=10

Một cách tiếp cận khác (và, theo tôi, tốt hơn nhiều) sẽ là sử dụng xấp xỉ sai phân hữu hạn này đã có trong tính toán của hướng tìm kiếm; đây được gọi là phương pháp quasi-Newton . Ý tưởng là tăng dần mức độ gần đúng của Hessian bằng cách sử dụng sự khác biệt của độ dốc. Ví dụ: bạn có thể lấy (ma trận danh tính) và với giải và đặt với như trên và . (Đây được gọi là cập nhật Broyden2f(xk)H0=Idk=0,

(1)Hksk=gk,
Hk+1=Hk+(ykHksk)T(sk)T(sk)Tsk
ykxk+1=xk+skvà hiếm khi được sử dụng trong thực tế; một bản cập nhật tốt hơn nhưng phức tạp hơn một chút là bản cập nhật BFGS , trong đó - và nhiều thông tin hơn - tôi đề cập đến cuốn sách Tối ưu hóa số của Nocedal và Wright .) Nhược điểm là a) điều này đòi hỏi phải giải quyết một hệ thống tuyến tính trong mỗi bước (nhưng chỉ có kích thước không xác định trong trường hợp của bạn là điều kiện ban đầu, do đó nỗ lực nên được chi phối bằng cách giải PDE để lấy gradient, ngoài ra, còn tồn tại các quy tắc cập nhật cho xấp xỉ Hessian nghịch đảo , chỉ yêu cầu tính toán một ma trận đơn sản phẩm -vector) và b) bạn vẫn cần tìm kiếm dòng để đảm bảo hội tụ ...

May mắn thay, trong bối cảnh này tồn tại một cách tiếp cận khác sử dụng mọi đánh giá chức năng. Ý tưởng là đối với đối xứng và xác định dương (được đảm bảo cho bản cập nhật BFGS), giải quyết tương đương với việc giảm thiểu mô hình bậc hai Trong phương thức vùng tin cậy , bạn sẽ làm như vậy với ràng buộc bổ sung rằng , trong đó là bán kính vùng tin cậy được chọn phù hợp (đóng vai trò của độ dài bước ). Ý tưởng chính bây giờ là chọn bán kính này một cách thích ứng, dựa trên bước tính toán. Cụ thể, bạn nhìn vào tỷ lệ Hk(1)

qk(s)=12sTHks+sTgk.
sΔkΔkσk
ρk:=f(xk)f(xk+sk)f(xk)qk(sk)
về việc giảm giá trị hàm thực tế và dự đoán. Nếu rất nhỏ, mô hình của bạn rất tệ và bạn loại bỏ và thử lại với . Nếu gần bằng , mô hình của bạn tốt và bạn đặt và tăng . Nếu không, bạn chỉ cần đặt và để một mình. Để tính toán bộ giảm thiểu thực tế củaρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskminsΔkqk(s), tồn tại một số chiến lược để tránh phải giải quyết vấn đề tối ưu hóa bị ràng buộc đầy đủ; yêu thích của tôi là phương pháp cắt ngắn CG của Steihaug . Để biết thêm chi tiết, tôi lại nhắc đến Nocedal và Wright.

Bây giờ tôi chỉ nhìn vào điều này một lần nữa và nhận ra tôi có một câu hỏi. Trong bước ba cho phương thức BB, bạn có ; trong đó và . Tử số và mẫu số trong biểu thức cho trông giống như các sản phẩm bên trong. Trong trường hợp của tôi, , trong đó là một không gian vectơ với số liệu Riemannian không tầm thường: K. Đó là, . Điều đó có ảnh hưởng đến định nghĩa của không? αk+1=(yk)Tyk(yk)Tskyk=gk+1gksk=αk1gkαk+1gkVVgk,gkV=gk,KgkL2αk+1
NLi10Me

Có, nếu bạn có một cấu trúc không gian vectơ không tầm thường, bạn nên tôn trọng điều đó trong các thuật toán. Cụ thể, bạn nên phân biệt giữa các sản phẩm bên trong của hai chức năng trong cùng một không gian (ví dụ: và ) và các sản phẩm đối ngẫu giữa một chức năng trong không gian và một trong không gian kép (ví dụ: và ) - đối với cái sau, bạn cần bao gồm ánh xạ Riesz để biến nó thành sản phẩm bên trong trước. (Điều này có thể được hiểu là điều kiện tiên quyết.)ykykskyk
Christian Clason

Tiến sĩ Clason, tôi sẽ gửi một bài báo cho ISBI 2017 chi tiết một số thí nghiệm tôi đã thực hiện bằng phương pháp tìm kiếm dòng BB + cho một nhiệm vụ đăng ký hình ảnh khác biệt. Bạn có muốn được đưa vào như một tác giả trên bản thảo? Tôi chưa viết nó, nhưng tôi có hầu hết các thí nghiệm hoặc hoàn thành hoặc đang tiến hành. Làm ơn cho tôi biết.
NLi10Me

@ NLi10Me Cảm ơn bạn đã cung cấp loại này, nhưng tôi chưa làm bất cứ điều gì có thể hợp tác - tất cả mọi thứ tôi viết là tài liệu sách giáo khoa tiêu chuẩn. Nếu bạn cảm thấy mạnh mẽ về điều đó, bạn có thể cảm ơn tôi vì "những nhận xét hữu ích về (bất cứ điều gì có ích)", nhưng thậm chí không cần thiết. Biết rằng những gì tôi viết là hữu ích là đủ!
Christian Clason

1
Xin lỗi, bạn nói đúng, đó là một lỗi đánh máy - đã sửa! (Điều kiện Armijo thường được viết là , trong đó là hướng tìm kiếm - không nhất thiết là âm độ dốc - và kích thước bước, sẽ làm rõ hơn những gì đang diễn ra.)f(x+σs)f(x)γf(x)T(σs)sσ
Christian Clason
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.