Simulated annealing ( Mô phỏng kiểu luyện kim – Google Translate)

1200px-Folding_funnel_schematic.svg
Nguồn: https://en.wikipedia.org/wiki/Folding_funnel

Bài này nhằm mục đích ghi chú lại, tự giải thích cho chính bản thân mình sau này đọc lại có thể dễ hiểu hơn.

Trong mô phỏng, kiến thức nền tảng là vật lý thống kê, ta cần lấy mẫu đầy đủ các trạng thái ( xác định tính chất của hệ ở tất cả các trạng thái khả dĩ của hệ để tính tổng thống kê -partition function, từ đó tính được năng lượng tự do F= -k_B ln Q, tuy nhiên ở những barrier, rất khó để tìm thấy các trạng thái trong quá trình mô phỏng mà hệ ở đó, nên dù thời gian mô phỏng có dài đi chăng nữa thì mẫu ở những vùng như vậy là rất ít, lẫy mẫu sẽ dẫn đến sai số, không chính xác.

Để giải quyết vấn đề này ta có một số hướng như sau:

  • “bias” sampling
    • Umbrella sampling
    • Metadynamic ( đây là một loại lấy mẫu chứ không phải dynamic như molecular dynamic như tên gọi của nó)
  • simulated annealing

Trong các loại bias sampling, ý tưởng chính là cấp cho hệ một năng lượng nào đó ( theo collective variable) để hệ có thể vượt qua các hàng rào thế -barrier để có thể khảo sát đầy đủ không gian mẫu, sau đó trừ đi thế đã thêm vào ( cái này xác định vì ta chọn nên ta biết là gì) thì được năng lượng tự do đúng của hệ.

Theo simulated annealing, khi hệ bị tắc ở local minimum ( của free energy) thì ta cung cấp cho hệ năng lượng ( nâng nhiệt độ) để hệ có thể vượt ra khỏi local minimum, sau đó ta lại hạ nhiệt độ về trạng thái thực của hệ, như vậy hệ có thể thoát được local minimum ( có thể).

Tùy từng hệ, theo kinh nghiệm mà ta nên annealing 1 lần hay nhiều lần. ví dụ như sau ( từ manual của gromacs)

; simulated annealing

annealing = single periodic

annealing-npoints = 3 4

annealing-time = 0 3 6 0 2 4 6

annealing-temp = 298 280 270 298 320 320 298

Chẳng hạn ta mô phỏng 1ns ở annealing:

Giả sử hệ ta có 2 nhóm cần temperature coupling ( protein và non-protein)

Với protein, ta chỉ sử dụng annealing 1 lần, còn với non-protein thì lặp tuần hoàn.

số điểm của quá trình annealing của nhóm 1(protein) là 3, của non-protein là 4

Với nhóm protein: tại thời điểm t=0ps, hệ được mô phỏng ở 298K, và sẽ giảm tuyến tính đến 280K tại thời điểm t=3ps, sau đó tiếp tục giảm tuyến tính đến 270K ở 6(ps) và được giữ ở 270K cho đến hết thời gian mô phỏng annealing(1ns) ( ý nghĩa của single- là 1 chu trình)

với nhóm non-protein: tại t=0ps, được mô phỏng ở 298K, sau đó tăng tuyến tính lên 320K ở 2ps, rồi giữ ở 320K đến 4ps, rồi giảm tuyến tính xuống còn 298K ở 6(ps), periodic nghĩa là lại tiếp tục từ 6-8ps, hệ lại được nâng từ 298 lên 320K, tiếp tục quy trình như vậy

Ở nhóm protein, giảm nhiệt độ đi kèm với thuật toán md hoặc sd(stochoatic dynamic chứ không phải steepest decent nhé), tương đương với quá trình steepest decent(steep), còn với nhóm non-protein, tăng nhiệt độ để hi vọng hệ chạy khỏi local minimum, sau đó lại giảm- nếu hệ có rơi vào local minimum nào thì lại tăng tiếp rồi giảm về, điều này tùy thuộc vào kinh nghiệm.

Ngoài ra, nếu ta có hệ cực kỳ nhạy cảm ( membrane protein) thì phương pháp tốt nhất để đưa hệ đến trạng thái cân bằng một cách an toàn đó là dùng simulated annealing, ta sẽ đưa hệ lên nhiệt độ ta cần mô phỏng bằng cách tăng từ từ nhiệt độ theo thời gian, từ 0-5-10-15…300 chẳng hạn, đây là một cách rất an toàn nhưng đổi lại rất kỳ công.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

Up ↑

mlcvGru

Random thoughts on Machine Learning, Deep Learning and (sometimes) Computer Vision

LazyT

Góc nhỏ của Quyền

phanlan

we get what we give, sống là cho đi

Codeaholicguy

software engineer, team lead at #kobiton, blogger at @codeaholicguy

Maths 4 Physics & more...

Blog Toán Cao Cấp (M4Ps)

Vatlyvietnam's Blog

Thế Giới Song Song

Darren Wilkinson's research blog

Statistics, computing, data science, Bayes, stochastic modelling, systems biology and bioinformatics

Ông Xuân Hồng

Chia sẻ kiến thức và thông tin về Machine learning

Từ coder đến developer - Tôi đi code dạo

Lập trình viên giỏi không phải chỉ biết code

Computational Biology and Molecular Modelling

An interface between biology, chemistry and computer science

Moriator - I can do it!

Linux dễ dàng hơn bạn nghĩ!

VinaCode

Lập trình & Cuộc sống

Blog của Chiến

Học. Thực hành. Sáng tạo

Bespoke Blog

Science! Culture! Computational Engines!

Vuhavan's Blog

Just another WordPress.com weblog

%d bloggers like this: