지금까지 기계학습 포텐셜에 대한 전반적인 내용들을 살펴보았다. 기계학습 포텐셜은 기계학습 알고리즘을 사용하여 기존 Classical Force Field를 개선하는 방법으로, 제일원리 계산을 통해 데이터를 구성하여 포텐셜의 정확도를 높이는 방법으로 Classical Force Field의 단점을 보완하였다. 하지만, 정확도가 늘어나는 만큼 어쩔 수 없이 계산 속도는 떨어지게 된다. 따라서, 기존 Classical Force Field로는 계산할 수 있는 스케일의 시뮬레이션도 기계학습 포텐셜을 사용하는 경우 계산 불가능해지는 경우가 있다. 이러한 상황에서 계산 속도를 더욱 끌어 올리기 위해 사용하는 방법들이 있는데, 그중 하나가 Monte Carlo 방법이다. 이 방법은 기계학습 포텐셜에서만 사용하는 것은 아니고, Classical Force Field를 사용하는 경우에도 계산 스케일을 키우기 위해 사용되는 방법이나, 포스팅의 순서상 기계학습 포텐셜을 설명한 뒤에 제시하는 것임을 알아두기를 바란다. 이번 포스팅에서는 Monte Carlo 방법론에 대해 알아보고, 이를 어떻게 분자동역학 시뮬레이션에 적용하는지 알아보도록 하겠다.
Monte Carlo 방법론이란, 수치적인 결과를 얻기 위해 반복적으로 Random Sampling(결과가 무작위로 나오는 확률적 시도)을 수행하는 것을 말한다. 아마 이렇게 말하면 이해가 쉽지 않을 테니, 예를 들어 알아보기로 하자. 간단하게 동전 던지기로 생각하면, 동전을 반복적으로 많이 던질 경우 우리는 동전의 앞면과 뒷면이 나올 확률을 수치적으로 알 수 있게 된다. 우리가 알고 있는 대로 앞면과 뒷면이 나올 확률이 1/2로 나올 것이다. 또 다른 예로는, 원주율을 Monte Carlo 방법론을 사용해서 구하는 것을 생각해볼 수 있다. 좌표평면상에 0 < x, y < 1인 평면을 정의하고, 좌표평면상에 중심이 0이고 반지름이 1인 사분원을 그려 보자. 그리고, Random Sampling의 경우 시도마다 x, y 각각의 값이 Uniform distribution(모든 숫자가 나올 확률이 동일한 확률분포)을 기반으로 산출된다고 해 보자. 이 경우, 우리가 Random Sampling을 하면 어떤 점은 사분원 안쪽에, 어떤 점은 사분원 바깥에 위치하게 될 것이다. 그렇다면 우리가 Random Sampling을 많이 수행한 다음, 전체 점의 수 대비 사분원의 안쪽에 위치한 점의 수를 비교했을 때, 그 비율은 한 변의 길이가 1인 정사각형의 넓이 대비 반지름의 길이가 1인 원의 넓이의 1/4배가 되어야 할 것이다. 이를 통해 원주율 값을 알 수 있다. 이렇게, Monte Carlo 방법은 반복적인 Random Sampling을 통해 우리가 알고 싶은 값을 추산하는 방법이다. 그렇다면 이 방법을 분자동역학에서는 어떻게 사용할까? 분자동역학에서는 매시간(timestep) 그 시점에서 재료의 에너지 및 힘을 계산해서 다음 시간의 위치를 계산하는 방법을 사용한다. 하지만 이 방법은 매시간 재료의 에너지 및 힘을 계산해야 한다. 여기에 Monte Carlo 방법을 적용하는 경우, 현재 시점의 원자가 다음 시간에 움직일 수 있는 위치들에 대한 확률을 사전에 정해둔 다음 시도마다 난수(Random Number)를 Sampling 하여 그 난수를 기준으로 다음 움직임을 결정하는 방법을 사용하게 된다. 이를 Kinetic Monte Carlo(KMC)라고 한다. 이 경우 에너지 및 힘을 계산하지 않아도 되기 때문에 계산 속도가 훨씬 빨라지게 된다. 하지만, 이전 포스팅을 잘 이해한 사람이라면 여기서 이상한 점을 느낄 것이다. 에너지와 힘을 계산하지 않는다면 Classical Force Field나, 기계학습 포텐셜이나 차이가 없어지는 것이 아닌가? 하고. 맞다. 따라서, 실제로 KMC를 사용하는 경우에는 물리적으로 중요한 부분(반응이 일어나는 부분 등 우리가 관찰하고 분석할 필요가 있는 부분)은 Classical Force Field나 기계학습 포텐셜을 사용하여 시뮬레이션하고, 중요도가 떨어지고 급격한 변화가 없는 부분은 KMC를 사용하여 시뮬레이션하는 방식으로 계산 시간을 줄이는 경우가 많다. 그리고, 이러한 방법을 사용하지 않더라도 KMC에서 Classical Force Field나 기계학습 포텐셜을 사용할 수 있는 방법이 있다. 특정 상황의 원자가 다음 시점에 어떻게 움직일지를 나타내는 확률을 미리 Classical Force Field나 기계학습 포텐셜을 이용하여 계산해두는 것이다. 이런 경우 미리 준비해 둔 케이스는 KMC로 시뮬레이션하고, 그리고 기존에 준비해 두지 않은 예외적인 상황에서는 기존 분자동역학 방법을 사용하면 된다.
이렇게 Monte Carlo 방법론, 특히 분자 동역학에서 사용하는 KMC에 대해 알아보았다. 이제 기계학습 포텐셜과 관련하여 설명해야 할 부분이 단 하나 남았다. 바로 데이터다. 기계학습 알고리즘의 성능은 훈련에 사용한 데이터가 얼마나 잘 분포되어 있는지에 크게 영향을 받기 때문에, 우리가 아무리 좋은 알고리즘을 쓰더라도 데이터가 부적절하거나 불충분하다면 좋은 결과를 얻을 수 없다. 따라서, 다음 포스팅에서는 기계학습 포텐셜 개발에 있어 가장 중요한 요소인, '데이터'를 어떻게 하면 더 잘 만들 수 있는지 알아보도록 하겠다.
'과학 > 재료공학' 카테고리의 다른 글
밀도범함수이론(Density Functional Theory) 상세 설명 (0) | 2022.07.05 |
---|---|
기계학습 포텐셜에 사용하는 데이터를 준비하는 방법 (0) | 2022.06.27 |
Graph Model을 활용한 재료의 3차원 구조 묘사 (0) | 2022.06.24 |
Convolutional Neural Network를 활용한 재료의 3차원 구조 묘사 (0) | 2022.06.23 |
기계학습 포텐셜에서 변환 함수의 역할 및 그 개선안 소개 (0) | 2022.06.23 |
댓글