- Date : 2022-02-21
- Last modified date : 2022-06-25
Prologue
이번 포스팅에서 소개하고자 하는 첫번째 프로젝트는 내가 학부시절 졸업논문을 작성하기 위해 수행했던 연구이다. 이론물리에 관심이 많았던 나는 학부연구생으로 3학년 2학기부터 이론물리 연구실에 들어가 활동하게 되었다. 우연히도 내가 학부생으로 들어갔을 때는 알파고의 영향으로 물리학계에 인공지능 관련 논문이 자주 발표되던 시기였다. 그래서 당시의 지도교수님께서는 나에게 프로그래밍(!?)을 배워서 물리학과 머신러닝 기술을 함께 활용하는 연구주제를 할 것을 제안하셨다.
구체적으로는 당시 Nature에서 발표된 통계물리학 모델과 머신러닝의 응용연구를 학부 수준에서 다시 구현해보라는 것이었는데, 학부연구생인 나는 거부권이 없었으므로(..) 태어나서 처음 프로그래밍을 공부하게 되었다.
지금 생각해보면 내 인생에서 매우 중요한 사건이었던 것 같다. 그 이후로 나는 완전히 인공지능에 매료되었고, 프로그래밍의 세계에 깊게 빠지게 되었기 때문이다.
Machine Learning Implementation of Two Dimensional Ising Model
이번 글에서는 최근 부각되고 있는 기계학습(Machine Learning) 알고리즘을 이용하여 주어진 물리적 상태에 대해 이론적으로 확립된 지식 또는 Hamiltonian에 관한 정보 없이도 물리적인 상태(Phase) 및 상태변화(Phase Transition)를 감지하는 인공신경망의 구현을 소개하고자 한다. 그리고 이를 통해 물리적 시스템의 배열에 관여하는 주요한 변수인 Order Parameter를 예측할 수 있다는 것을 보일 것이다.
Introduction
요즘 급격하게 발전하고 있는 머신러닝 분야의 3가지 카테고리 중 하나인 지도학습(Supervised Machine Learning)은 비선형 패턴을 가진 데이터의 튜플 (X, Y) 사이의 관계를 잘 학습하는 것으로 알려져 있다. 여기서는 그러한 지도학습을 통해 응집물질 시스템에서의 Phase 및 Phase Transition을 분류하는데 인공 신경망이 활용될 수 있음을 설명할 것이다.
일반적으로 인공지능 관련 작업을 밑바닥부터 스스로 프로그래밍하는 것은 쉽지 않은 일이다. 특히 자동적인 Back Propagation을 통해 모델 내부의 여러 레이어의 가중치 파라미터를 제대로 학습시키도록 하는 것은 상당히 머리 아픈 일이다.
그러나 Tensorflow, Keras 등의 여러 머신러닝 라이브러리들을 이용하여 효율적인 프로그래밍을 하는 방식으로, 표준적인 순전파(Feed Forward) 방식의 인공신경망이 다양한 형태의 Order Parameter들을 예측하기 위해 훈련되도록 할 수 있다.
이 때 학습의 기반은 Montecarlo Sampling에서 얻어진 특정한 상태 배열로부터 시작된다. 이러한 신경망은 예를 들면 Coulomb Phase와 같은 Non-trivial한 물리적 상태를 감지할 수 있다. 또한 Convolutional Neural Network와 같은 뛰어난 특성추출 성능을 갖는 모델이 활용된다면, Topological Phase에 대해서도 Order Parameter의 도움없이 분류가 수행될 수 있다.
이러한 머신러닝 모델의 분류작업이 물리적 상호작용에 대한 일반적인 Locality 없이, 또는 Hamiltonian에 관한 정보 없이도 인공신경망 내부에서 가중치 파라미터의 학습과정을 통해 일어날 수 있음을 보이고자 한다.
Ising Model and Metropolis-Hastings Algorithm
강자성체의 자성 변화를 설명하기 위하여 도입된 Ising Model은 특정한 방식으로 입자의 Spin 상호작용을 정의하고, 이로부터 Hamiltonian을 유도하는 것에서 시작된다. 여기서 Hamiltonian은 고전물리학의 범주에서 단순히 계의 에너지를 정의하는 함수 정도로 생각하면 된다.
기본적으로 서로 인접한(Adjacent) 위치의 입자들 사이의 상호작용만을 허용하며, 유한한 계의 모서리(Edge)에 위치한 입자들의 경우는 주기적 경계조건(Periodic Boundary Condition, PBC)이 적용되어 모든 입자는 주변 입자들과의 동일한 상호작용을 하도록 설계하는 것이 2차원 Ising Model의 기본적인 모형이다.
이러한 계가 주어진 상황에서 특정한 알고리즘을 적용하면, 특정한 온도 조건에 대응하여 모델이 예측하고자 하는 자연스러운 상태 배열이 얻어질 수 있음이 이미 알려져 있다.
Metropolis-Hastings Algorithm으로 불리는 이 방법은 배열 상에 존재하는 임의의 입자들에 대하여 Flip이라고 하는 해당 입자의 스핀을 바꾸는 작용을 시도하고, 이러한 변화의 전후의 에너지 차이를 비교하여 낮은 에너지를 찾아가는 방식으로 작동한다.
배열상의 입자들에 대하여 Flip을 한 주기만큼 실행한 것을 Sweep이라고 하며, 이러한 Sweep을 적절한 횟수만큼 반복 시행함으로써 최종적으로 특정한 온도 조건에 대응하는 자연스러운 입자 배열을 얻을 수 있다. 보통 Metropolis 알고리즘을 $N$번 수행한다고 하면, 이 Sweep을 $N$번 수행한다는 것을 의미한다.
Convolutional Neural Network
Convolutional Neural Network(CNN)는 주로 Computer Vision 분야에서 쓰이는 신경망 기반 알고리즘의 한 형태이다. ILSVRC (ImageNet Large Scale Visual Recognition Challenge) 에서 캐나다 토론토 대학의 Geoffrey Hinton이 이끄는 SuperVision 팀이 우승한 이후로 CV 분야의 지배적인 알고리즘이 되었다.
CNN은 이미지를 구성하는 2차원 Pixel 배열에 내재된 특정한 시각적 특성을 국소적인(Local) 단위에서 학습하여 점차 그 영역을 넓혀나가는 방식으로 작동한다.
Experimental Method
Metropolis-Hastings 알고리즘을 이용하여 2차원 정방형 격자구조를 지닌 Ising 배열에 관한 시뮬레이션을 실행하고, 이로부터 주요 물리량의 변화 양상을 관측하였다. 중간과정에서 차원축소를 이용한 데이터의 군집정보 또한 확인하였다.
이후 Convolutional Neural Network를 Tensorflow, Keras 등의 라이브러리를 이용하여 구축한 뒤, 이러한 신경망에 Ising 배열을 입력 데이터로 훈련시켜 이로부터 얻은 Phase Recognition의 결과를 이전에 얻었던 Order Parameter 그래프와 비교하였다.
Experimental Results
Ising Simulation
Ising Model을 연구함에 있어서 머신러닝 이전 단계에서 통계적 알고리즘을 이용하여 여러 물리량의 온도에 따른 양상을 확인할 필요가 있었다.
Square Lattice를 가정하고, Periodic Boundary Condition (PBC)을 고려한 Metropolis-Hastings 알고리즘을 이용하여 온도변화에 따른 입자배열의 변화 양상 및 4가지의 주요 물리량을 시뮬레이션하였다. 4개의 주요 물리량은 계의 입자 하나에 평균적으로 부여되는 Energy, Magnetization을 기반으로 한다.
왼쪽 위에서부터 차례대로 Energy, Magnetization, Specific Heat, Susceptability를 의미한다. 온도가 증가함에 따라 임계온도(Curie Temperature) 근처에서 Phase Transition이 일어나 물리량의 급격한 변화가 이루어짐을 알 수 있다.
Figure 3에서 검정색 영역은 입자의 Spin Up을, 흰색 영역은 Spin Down을 의미한다. 온도 증가에 따라 점차 편향(Polarization)이 사라지며 무질서해짐을 알 수 있다.
위와 같이 Ising model에 대한 통계적 알고리즘을 통해 기본적인 변화의 양상을 파악할 수 있었다. 이 과정에서 얻은 상태배열의 데이터는 다음 단계의 신경망에 훈련 데이터로 투입되었고, 토이모델이 잘 작동되는가를 확인하는 과정에서의 주요한 지표로 활용될 수 있었다.
특히 자화(Magnetization)의 변화 양상은 이후 시스템의 배열 인식에 관여하는 주요한 변수로 작용하였다. 따라서 두 결과의 비교를 통해 신경망의 Phase Recognition 효과를 보일 수 있었다.
Convolutional Neural Network - Toy Model
위 그림에서 왼쪽 위부터 차례대로 Ising model에 대한 신경망 도식, 입력된 상태배열 $X$에 대한 자화밀도의 함수에 대응하는 은닉층(Hidden layer) 요소들, 토이모델 데이터에 대한 차원축소 시각화 및 검증 데이터에 대한 출력층의 평균값 그래프를 나타낸다.
Dimensionality Reduction
신경망 모델이 얼마나 잘 작동하는가에 대한 직관을 얻을 수 있는 대표적인 방법은 훈련에 사용된 데이터의 저차원 시각화(Low-dimensional Visualization)를 구현해보는 것이다. 여기서는 PCA (Principal Component Analysis, 주성분 분석) 및 TSNE (T-distributed Stochastic Neighboring Embedding) 알고리즘을 고려한다.
차원축소 과정에서 고차원 특성공간(Feature space)에 존재하던 데이터들은 3차원 이하의 공간에서 재구성된다. 본래의 특성공간에서 서로 근접해 분포하던 데이터 포인트들은 저차원 공간에서도 서로 인접하여 클러스터(Cluster)를 형성한다. 이러한 시각화를 통해 신경망에 사용되는 데이터의 군집이 어떻게 이루어져 있는가를 확인할 수 있다.
원리를 간단히 설명하자면, PCA는 주어진 데이터의 분산(Variance)을 최소화하는 특정한 축을 찾아내어, 그 축을 기준으로 데이터를 다시 표현한다. 일반적으로 PCA의 계산과정은 선형대수학에 기반하고 있는데, 위 예시에서는 2차원 데이터를 1차원에서 표현하는 것을 설명하였지만, 실제로는 보다 고차원 공간에서 3차원 이하로 데이터의 차원을 낮추기 위해 사용된다.
TSNE 알고리즘은 고차원 공간에 존재하던 데이터 포인트들 사이의 거리를 측정하고, 그 거리를 특정한 기준 확률분포(Student’s T-distribution)에 대입하여, 확률적으로 데이터를 Mapping하는 알고리즘이다. 고차원 공간에서 서로 가까운 거리를 유지하던 데이터 포인트들은 높은 확률을 할당받아, 저차원 공간에서도 서로 비슷한 곳에 위치할 확률이 높아진다. 이 과정은 확률적(Stochastic)으로 작동하기 때문에, 고정된 데이터에 대해서도 매번 다른 시각화 결과가 나오지만, 우리가 보고자 하는 것은 데이터의 대략적인 분포이기 때문에 분포에 큰 변화가 없다면 데이터가 문제가 없음을 확인하고 넘어갈 수 있다.
위 그림에서 왼쪽 그림은 PCA에 의한 차원축소 결과를 보여준다. 그림에서 양 끝의 짙은 초록색 점의 군집은 Ferromagnetic State, 중앙 부분의 옅은 초록색 점의 군집은 Paramagnetic State를 의미한다.
오른쪽 그림은 TSNE에 의한 차원축소 결과를 보여준다. 마찬가지로 양 끝의 자주색 점의 군집은 Ferromagnetic State, 중앙 부분의 노랑색 점의 군집은 Paramagnetic State를 의미한다.
여기서 다음과 같은 의문을 제기할 수도 있다.
물리적 상태는 Ferromagnetic/Paramagnetic State의 2가지만이 존재하는데, 왜 하나의 색상을 갖는 군집(Ferromagnetic)이 서로 다른 위치에 2개의 클러스터로 존재할까?
이는 Ferromagnetic State가 +1 또는 -1의 두 종류의 Spin으로 정렬될 수 있기 때문이다. 물론 실제로 Ferromagnetic State를 Magnetization의 값으로 판정할 경우에는 절대값(Absolute Value)으로 처리하기 때문에 1이 되지만, 실제로는 부호가 나눠질 수 있다. 이러한 특성이 차원축소의 결과에 반영된 것이다.
Implementation of Convolutional Neural Network
CNN은 크게 2단계로 구성된다.
첫번째 단계는 주어진 이미지의 특성을 추출하는 Feature Extraction 과정이다. Convolutional Layer를 통과하는 이 단계에서는 여러 종류의 기하학적 특징을 추출할 수 있는 국소적인 다중 필터(Filter)가 상대적으로 넓은 이미지맵에 적용되어 해당 이미지의 특성을 파라미터화하게 된다.
각각의 이미지 데이터는 단순한 2차원의 Pixel 배열에서 특성값의 모임이라고 하는, 보다 의미있는 데이터로 변환된다. Convolution Layer의 층 수를 깊게 할수록, 기존에 추출된 국소적인 특성들을 조합하여 보다 구체적인 특징을 추출할 수 있게 된다.
이미지의 특성을 추출하는 Convolution 연산 이외에도, Pooling 또는 Sub-Sampling이라는 연산이 존재한다. Pooling 연산은 합성곱 연산의 결과들을 특정한 Scale에서 압축하여 하나의 대표값을 사용하도록 해준다.
예를 들면 위의 오른쪽 그림은 $4 \times 4$ 사이즈의 Feature Map에서 $2 \times 2$ Max Pooling을 실행하여 각 영역의 최대값을 추출하는 과정을 보여준다.
이러한 변환 과정을 거친 데이터는 다음 단계인 신경망에 입력 데이터로 투입되어 Feed-Forward Propagation에 의한 연산이 진행된다. 즉, 각각의 뉴런(Neuron)에 값이 할당되고, 이러한 값들은 은닉층(Hidden Layer)을 통과하면서 각각의 연산과정에서 매번 가중치화(Weighted)되고, 활성화 함수(Activation Function)의 영향을 받아 비선형화된다.
최종적으로 출력층에 도달하여 Sigmoid 함수의 영향을 받아 신뢰할 만한 수준의 출력값을 얻을 때까지 가중치 업데이트(Weight Update)가 이루어지는 방식으로 동작한다. 머신러닝에 익숙한 사람들이라면 Sigmoid 함수가 출력층에서 사용된다는 점에서, 이 신경망 모델이 이진분류(Binary Classification)을 하고 있다는 것을 알 수 있을 것이다.
가중치 업데이트에 쓰이는 역전파 알고리즘(Back-Propagation)에 의해 각 연산과정에서의 가중치 오류가 자동으로 수정되며, 모델의 분류 정확도가 충분히 수렴할 때까지 학습이 진행되었다.
Conclusion
설명이 길었는데, 결국 간단히 말하자면 "CNN의 탁월한 이미지 분류능력을 물리적인 배열의 분류문제에 대해서도 적용할 수 있을까?" 라는 의문을 실제로 확인해본 것이다.
즉, 다음 그림과 같다.
딥러닝을 처음 공부하는 사람들이 가장 먼저 보게 되는 MNIST 데이터셋 대신, Ising 모델의 입자배열과 그에 대응되는 물성 데이터를 넣고, 이미지를 분류하는 것처럼 물리적 상(Phase)의 분류를 수행한 것이다.
당연히 잘 될 것이라 생각하는 사람도 있을 수 있겠지만, 실제로 이러한 자기적 분류과정은 열통계물리학의 여러가지 귀찮은 계산 단계를 모두 통과한 이후에 판정될 수 있는 것이다. 그러한 번거로운 과정을 물리를 전혀 모르는 상태의 신경망이 분류가능하게 되었다는 것이 놀라운 점이라고 할 수 있다.
참고로 다음 그림은 이상적인 상황에서 자화밀도의 그래프와, 인공신경망이 예측하게 될 온도에 따른 자성 변화의 그림이다.
이상적인 자화의 양상은, 임계온도를 넘어서는 시점에서 0으로 급격히 감소되어야 한다. 그리고 그러한 극적인 변화의 경계를 제대로 훈련된 인공신경망 모델이라면 분류해낼 수 있어야 한다.
물론 실제로 이렇게 깨끗한 결과가 나오기는 힘들다. 왜냐하면 데이터를 생성하는 통계적 알고리즘 단계에서 상당한 시간이 소요되기 때문이다.
물리학에서 대부분의 수치연산 알고리즘들은 상당히 많은 연산량을 요구하기 때문에 보통 Fortran, C와 같은 Low-level 언어로 구현되는 경우가 많은데, 당시에 내가 작성한 C 코드는 약간의 사소한 버그가 지속적으로 발생하는 문제가 있었다. 버그가 발생하는 부분을 제외하고 나머지 데이터를 사용할 수도 있었지만 도저히 나의 양심상 그렇게 할수는 없었기 때문에, 결국 생성되는 데이터의 양을 줄이더라도 버그가 없는 온전한 코드로 데이터를 다시 생성하기로 했다. 새로운 코드는 Python으로 작성되었다.
참고로 동일한 논리의 코드임에도, C 코드에 비해 Python 코드는 체감상 100배 이상 느렸다. 결국 계산에 관여하는 여러 변수를 단순하게 조정해서 3일 동안의 데이터 생성을 하고 다음 단계로 넘어가게 되었다.
위 그림에서 파랑색과 빨강색의 그래프는 신경망이 Curie Temperature를 경계로 하여 Ferromagnetic State, Paramagnetic State를 인식함을 보여준다. 초록색 삼각형으로 표시된 점들은 Metropolis-Hastings Algorithm을 통해 얻었던 시스템의 Order Parameter에 해당하는 Magnetization이다.
위 그래프의 의미는 다음과 같다.
고전적인 통계 알고리즘으로 얻어진 Magnetization의 그래프(초록색 삼각형)은 이상적으로는 하나의 Magnetization 값이 특정온도에서의 Ising 배열의 상태를 판정할 수 있기 때문에, 결국 Binary Classification 상황에서 카테고리를 판단하는 확률처럼 표현된다.
그러나 이러한 과정을 정밀한 수준으로 구현하려면, 앞서 말했듯이 굉장히 많은 연산량이 요구되는 것이다. 반면, 이 과정을 딥러닝 모델을 이용하여 학습시키면 그 예측결과는 상당히 정확하게 나오기 때문에 복잡한 수치해석 과정을 이용한 계산과정을 대체할 수 있다는 것이 연구의 의의이다.
결국 Order Parameter에 대한 선험적인 정보 또는 Hamiltonian에 관한 지식 없이 특정한 Spin 배열의 자성 상태를 분류하는 딥러닝 모델이 효과적으로 작동함을 알 수 있었다.
Epilogue
프로그래밍을 하나도 모르던 시절부터 공부를 시작해서 연구 프로젝트가 완전히 구현될 때까지 거의 8개월에 가까운 시간이 걸렸다. 당시에는 처음 경험하게 된 연구에 깊이 빠져서 4학년 1학기 내내 강의를 제외한 대부분의 시간을 연구에 쏟아부었던 것 같다. 그 결과 4학년 1학기 때의 성적이 가장 처참했다.
4학년 1학기에 형식적인 학부졸업논문 심사발표를 학과에서 한 이후, 결국 성적만 떨어지고 고생은 고생대로 했는데 아무것도 남지 않은 것 같은 느낌이 들어서 연구를 괜히 열심히 했다고 생각했었다. 이 당시에는 더 이상 내가 연구를 할 일은 없을 것이라 생각했다.
그러다가 그 해 12월에 자연과학대학에서 열리는 졸업논문 발표대회가 있어서, 어쩌다보니 물리학과 대표로 참가하게 되었다.
물리학과 대표로 나갈 수 있던 것은 내가 뛰어난 학생이라서는 절대 아니고, 그 당시에 연구를 끝마친 4학년 학부생들은 대부분 취업을 준비하느라 바쁜 시기였기 때문에 미래 생각을 하지 않던(..) 나를 제외하면 아무도 참가신청을 하지 않았기 때문으로 기억한다.
결국 대회에 참가하게 되었는데 문제는 내가 졸업논문 발표대회를 대단하지 않은 대회로 인식하고 있었다는 것이다. 학과에서 졸업논문 심사발표를 했을 때도 그냥 평범하게 티셔츠에 편한 바지를 입고 갔었기 때문에, 비슷한 복장에 두꺼운 외투만 입고 대회발표장으로 향했다.
대회 당일 발표장소에 들어갔는데 놀랍게도 주변에 다른 학과의 대표팀 학생들이 외투를 벗으니 안에 정장을 입고 있었다. 나는 정장을 입고 와야 할 정도로 격식을 차려야 하는 대회인 줄은 전혀 모르고 있었는데 (아무도 말을 안해줬다..) 나를 제외한 발표자 전원이 양복이나 여성용 정장을 입고 있었고 나는 후줄근하게 입고 왔으므로 뭔가 부끄러워서 대회발표를 그만둬야하나 생각하고 있었다.
정장 이외에도 대회에서 불리하다고 느꼈던 점은 각 학과의 대표들이 모두 팀으로 참가했다는 것이었다. 적게는 3명에서 많게는 6명으로 구성된 팀이 각 학과에서 대표로 참가해서 발표를 준비하고 있었다. 그에 비해 나는 1인팀으로 참가했기 때문에, 이래저래 시작부터 불리함을 느꼈다. ㅎㅎ
결국 자포자기한 상태로 발표를 하게 되었고, 발표가 끝난 후 뒷자리에 앉아서 언제 끝나나.. 하고 창가를 바라보며 졸고 있었는데, 놀랍게도 최우수학술논문상(Best Award)으로 물리학과의 이름이 불려서 상을 타게 되었다!
수상한 것은 그 해 12월이었는데 그 동안 내 마음속에 있던 연구에 대한 미움(?)이 모두 사라졌다. ㅎㅎ
이때 대회에 나가지 못했다면 연구에 대한 회의감이 든 상태에서 긍정적인 피드백이 전혀 없었으므로, 내가 연구를 지속하는 일은 없었을지도 모르겠다. 그렇게 생각하면 굉장히 의미있는 경험이었다.
졸업연구를 하는 동안 이론적인 피드백을 주셨던 Lee 교수님, 프로그래밍 관련 조언을 주셨던 Lee 교수님, 여러가지 질문으로 아이디어를 풍성하게 해주셨던 이론물리 연구실의 석사과정 P씨에게 감사의 말씀을 드린다.
참고로 이 글은 나의 첫 블로그 포스팅인데, 확실히 내가 아는 것을 밑바닥까지 일일이 설명하는 것이 어렵다는 것을 느꼈다. 밑바닥까지 일일이 다 설명하려다보니 양이 너무 많아져서 결국 글을 요약했더니 다시 설명이 부족해진 느낌이다. 그리고 다 쓴 글을 보니 너무 논문형식으로 딱딱하게 쓴 것 같다. 계속 쓰다보면 언젠가 다른 블로그 주인들처럼 재밌는 필체로 글을 쓸 수 있을 것 같다.
Reference
- Juan Carrasquillal and Roger G. Melko, Nature
Nature Physics volume 13, pages 431–434 (2017)
'01. 프로젝트 기록' 카테고리의 다른 글
Graph Neural Network and Its Application for Computational Physics (0) | 2025.01.01 |
---|---|
강원대학교 융합보안사업단 주관 2020 빅데이터 인공지능 교육과정 후기 (0) | 2025.01.01 |
2021 교차로 자동차 카운팅 인공지능 해커톤 후기 (1) | 2025.01.01 |
Iterative Peak-Fitting of Frequency-Domain Data via Deep Convolution Neural Networks (0) | 2025.01.01 |
Deep Learning Applied to Peak Fitting of Spectroscopic Data in Frequency Domain (0) | 2025.01.01 |