본문 바로가기
과학/재료공학

Convolutional Neural Network를 활용한 재료의 3차원 구조 묘사

by NC_ 2022. 6. 23.

기계학습 포텐셜을 구성하는 두 가지 요소, 변환 함수 및 기계학습 알고리즘 중 개선의 여지가 있는 부분은 기존에는 고정된 함수의 형태로 사용했던 변환 함수 부분이다. 변환 함수는 재료 내의 원자 하나와 그 원자 주변에 위치한 원자들의 3차원 좌표에 대한 정보를 추출하여 벡터로 만드는데, 이 과정에서 비슷한 구조는 가깝게, 서로 많이 다른 구조는 멀게 위치하도록 벡터를 구성해야 그 이후 기계학습 알고리즘에서 적절한 근사 함수를 찾기 용이해진다. 따라서, 이 과정 역시 기계학습을 이용하여 개선하려는 연구가 많이 출판되었는데, 이번 포스팅부터는 그중에서 몇 가지를 뽑아 살펴보도록 하겠다.


그 중 첫 번째로, 이번 포스팅에서는 재료의 3차원 구조를 일종의 3차원 그림처럼 인식하고, 이를 처리하기 용이한 기계학습 알고리즘을 사용하는 방식에 대해 알아보도록 하겠다. 이를 위해 먼저 기계학습에서 2차원의 그림이나 동영상을 어떻게 처리하는지 알아보도록 하자. 최근에는 다른 알고리즘을 사용하는 경우도 많지만, 기계학습 분야에서 이미지를 처리하는 가장 대표적인 방법은 바로 Convolutional Neural Network(CNN)이다. 이 방법은 이미지 위에 작은 창(Window)을 놓고, 그 창을 통해 보이는 이미지의 일부에 대해서만 특징을 추출하는 방법이다. 예를 들어, 강아지 이미지를 보았을 때 우리가 작은 창을 통해 특정 부분만을 보면 강아지의 머리 부분에서는 눈의 곡선을 볼 수 있을 것이고, 강아지의 몸통 부분에서는 털들이 그리는 직선을, 강아지의 발바닥 부분에서는 발바닥의 일부인 잘린 원을 볼 수 있을 것이다. 이렇게 추출한 정보를 다음 레이어로 넘긴 뒤 동일한 작업을 수행하면 어떤 창에서는 눈 모양을, 다른 창에서는 발바닥 모양을 볼 수 있게 된다. 이러한 과정을 반복해서 최종적으로 강아지 이미지의 각 부분의 특성들을 알게 되고, 이를 종합하여 이 이미지의 전체적 특성까지 알 수 있게 된다. 이러한 과정을 3차원에도 동일하게 적용할 수 있는데, 창의 차원 역시 3차원으로 바꾸면 된다. 이렇게 해서 우리는 CNN을 통해 재료의 3차원 구조를 벡터로 변환하는 것이 가능하다. 하지만, 아무래도 이 방법은 재료의 3차원 구조를 3차원 이미지화 시키는 것이다 보니 이 과정에서 원자를 어떻게 표현할지에 대한 고민이 생기게 된다. 가장 먼저 생각할 수 있는 방법은 우리의 직관대로 원자를 3차원 구체로 표현하는 것인데, 이렇게 할 경우 서로 다른 원자를 어떻게 구분할 것인지 애매해진다. 구체의 반지름을 다르게 할까? 하지만 반지름의 미묘한 차이를 CNN이 얼마나 잘 인식할 수 있을지 애매하다. 그나마 합당해 보이는 방법은 각 원자에 대해 특정 벡터를 할당하는 방법이다. 2차원 이미지에 대해서도 우리는 크기 3인 벡터를 RGB 색에 할당해 색을 표현하므로, 3차원 이미지에 대해서도 이와 비슷하게 일정 크기의 벡터를 할당하여 이 벡터를 기준으로 원자를 구분한다면 적절한 분류법이 될 것이다. 그 외의 방법으로는, 재료의 전하 밀도(Charge Density)를 계산한 뒤 이를 3차원 공간에 이미지처럼 배치하는 방법이 있다. 실제로 전하 밀도는 제일원리 계산에서도 활용하는 값인 만큼 이를 사용하는 데 대한 물리적으로 합당한 이유가 있다. 필자가 아는 범위 내에서는 이 두 가지 방법을 통해 재료의 원자 구조를 3차원 이미지로 표현한다. 하지만, 이러한 방법을 실제로 사용하기는 어렵다. 그 이유로는 크게 두 가지가 있는데, 먼저 첫 번째는 이런 방식으로 얻은 3차원 이미지가 상당히 밋밋하다는 점이다. 실제로 위 방법의 하나를 선택해서 실제로 3차원 공간상에 이미지를 만들어 보면, 넓은 3차원 공간상에 구체가 몇 개 떠 있는 그림이 될 것이다. 3차원 전하 밀도를 사용하더라도 이 점은 크게 바뀌지 않는다. 따라서, CNN이 뽑아낼 만한 특성을 찾기가 다소 어렵다. 두 번째는 데이터 및 모델의 크기가 매우 커진다는 점이다. 우리가 컴퓨터에서 이미지를 볼 때, 이미지가 더 많은 픽셀로 구성되어 있을수록 더 해상도가 높아진다는 사실을 알고 있다면, 재료의 3차원 이미지 역시 컴퓨터로 처리하기 위해서는 3차원 공간을 격자 모양으로 나누어서 각 조각별로 처리해야 한다는 사실을 쉽게 짐작할 수 있을 것이다. 그리고 우리가 이미지를 더 자세하게 표현하려면 격자를 더 세밀하게 나누어야 한다는 사실 역시 알 수 있을 것이다. 이렇게 3차원 격자를 자세히 표현하다 보면 재료 하나당 차지하는 용량이 커지고, 이를 처리하기 위한 모델의 크기 역시 커지게 된다. 이 때문에 계산량 역시 늘어나게 된다. 그런데 이러한 희생에도 불구하고, 애초에 재료의 3차원 이미지는 변화가 크지 않기 때문에 해상도를 높인 만큼 결과가 더 좋아지기를 기대하기 어렵다. 결과적으로, 데이터의 효율이 낮다고 생각할 수 있다.


이러한 단점 때문에 기계학습 포텐셜이 처음 주목받기 시작할 무렵에는 이러한 연구가 종종 보였지만, 최근에는 거의 찾아보기 어렵다. 그 대신, 그래프(Graph) 모델을 이용하여 재료를 표현하는 방법이 많이 쓰인다. 이 모델은 데이터를 Node와 이를 연결하는 Edge로 표현하는 방식으로, 보통 사회관계망이나 제품 추천 알고리즘 등에 주로 사용된다. 그러나 그 특성상 Node를 원자에, Edge를 원자 간 결합에 대응시키면 재료에도 적용하기 용이하고 이번에 살펴본 3차원 이미지 기반의 방법에 비해 장점이 많다. 다음 포스팅에서는 이 그래프 기반 모델에 대해 좀 더 자세히 알아보도록 하겠다. 

댓글