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

Neural Network 소개 및 장단점(Gaussian Process와 비교하여)

by NC_ 2022. 6. 21.

기계학습 포텐셜 중 가장 유명한 두 알고리즘, GAP 및 NNP는 각각 사용하는 기계학습 알고리즘이 다르다. GAP에 사용되는 Gaussian Process는 우리가 알고 있는 데이터를 전부 사용해서, 우리가 함숫값을 알고 싶은 임의의 점이 기존 데이터와 얼마나 가까이 있는지를 바탕으로 예측값 및 신뢰도를 예측하는 방식이다. Gaussian Process에서는 예측값의 신뢰도가 바로 측정된다는 점이 장점이지만, 데이터 수가 늘어날 경우 예측값을 구하는 데 필요한 계산량이 늘어난다는 단점 또한 지니고 있다. 그렇다면 NNP에 사용되는 인공신경망(Neural Network)은 어떨까? 인공신경망의 경우 2010년대 중후반 이후 황금기를 맞은 기계학습 열풍의 핵심 알고리즘으로, 기계학습과 관련된 여러 가지 대회에서 다른 모든 알고리즘을 압도한 성능을 낸 것으로 유명하다. 또한, 한국뿐 아니라 세계가 주목했던 이세돌 대 알파고의 대결에서 사용된 알고리즘이기도 하다. 이 인공신경망 알고리즘에는 기본형인 Feed forward network 외에도 사용 목적에 맞게 개선된 수많은 변종이 존재하는데, 기본적으로 NNP에서 사용하는 알고리즘은 Feed forward network이다. 이제부터 이에 대해 간단히 알아보도록 하자.

 


인공신경망의 구조는 그 이름에서 짐작할 수 있듯 우리 몸속 신경망, 특히 우리 뇌 속의 신경망을 모방하여 만들어졌다. 우리 몸 안에 있는 신경계는 여러 신경 다발이 서로 연결되어 있는데, 이를 모방하여 행렬 형태로 만든 것이 인공신경망이다. 우리가 인공신경망에 입력값(벡터 형태로 이루어져 있는)을 넣으면, 인공신경망 내에서는 이 입력값과 신경망 내 행렬을 곱해 새로운 벡터를 만드는 것이다. 수식으로 나타내면 y = xW와 같다. 여기서 W는 가중치(Weight)의 약자로, x가 1*M의 차원을 갖는다면 W는 M*N의 차원을 갖게 되고, 결괏값으로 나온 y는 1*N의 차원이 된다. 여기에 일반적으로는 bias라고 불리는 추가 가중치를 더해 주어 y = xW + b와 같은 수식으로 나타낸다(b의 차원은 1*N이 된다). 이 함수가 바로 Feed forward network의 Layer가 되는데, 실제로 사용하는 Feed forward network의 경우 이러한 Layer를 여러 층 겹쳐서 만든 네트워크를 이용한다. 이제 인공신경망의 구조에 대하여 알았으니, 우리가 원하는 함수를 만들기 위해서는 어떤 과정을 거쳐야 하는지 알아보도록 하겠다. 앞에서 살펴보았던 것처럼, 인공신경망 함수는 여러 개의 가중치로 구성되어 있는데 이 가중치 값은 가변적인 값들이다. 따라서, Gaussian Process에서 가중치를 계산했던 것처럼 인공신경망에서도 가중치를 주어진 데이터에 맞게 최적화해야 한다. 필자가 두 알고리즘에 대하여 용어를 다르게 쓴 것을 눈치챘는가? Gaussian Process와는 달리, 인공신경망의 경우 해석적으로 해를 구하지 않는다. 대신, 수치적인 방법을 통해 가중치를 최적화한다. 이를 위해서는 먼저 손실 함수(Loss Function)라는, 최적화를 위한 함수를 정의해야 하는데, 이때 일반적으로 평균 제곱 오차(Mean Squared Error)를 사용한다(이는 재료 시뮬레이션을 위한 모델에서는 회귀(Regression)모델을 사용하기 때문으로, 분류(Classification) 모델에서는 다른 형태의 손실 함수를 사용한다). 이때 평균 제곱 오차는 데이터로부터 구한, 우리가 원하는 함숫값과 모델이 예측한 예측값 사이의 오차에 대한 것으로, 이 평균 제곱 오차가 작을수록 함수가 정확하다는 의미라고 이해할 수 있다. 따라서 우리는 평균 제곱 오차를 줄이는 방향으로 인공신경망 모델을 최적화하면 된다. 이때 쓰이는 것이 Gradient Descent라는 방법인데, 이는 손실 함수를 미분한 다음, 그 미분값(함수의 기울기에 해당한다)의 반대 방향으로 조금씩 이동해 나가면서 함수의 최솟값이 위치한 지점(기울기가 0인 지점)을 향해 가는 것이다. 손실 함수는 제곱 형태로 되어 있기 때문에 우리가 손실 함수의 최솟값을 잘 찾았다면, 이때 손실 함수의 값은 0이 될 것이다. 

 


이렇게 인공신경망을 최적화하는 방법을 알아보았는데, 이를 고려하면 인공신경망을 이용한 NNP의 장단점을 알 수 있을 것이다. 먼저 장점은, Gaussian Process와는 달리 데이터의 양과 함수의 계산량이 무관하기 때문에 대규모의 데이터를 활용할 수 있다는 점이다. 반면, 단점은 가중치를 수치적으로 구하는 방법이다 보니 최적의 가중치 값을 구하는 데 시간이 걸리고, 때때로 최적의 가중치 값을 구하지 못할 수도 있다는 점이다(Global minimum을 찾지 못하고 Local minimum에 빠졌다고 한다). 또한, 예측값의 신뢰도를 확인할 수 없다. 물론 인공신경망의 경우 연구가 워낙 많이 되어 있기 때문에 인공신경망을 이용하여 예측값의 신뢰도까지 얻어내는 방법 역시 이미 연구되었지만, 이러한 방법들은 인공신경망의 계산량을 증가시키며, 엄밀한 신뢰도를 구하는 것이 아니고 신뢰도의 근사치를 구하는 것이기 때문에 신뢰도 자체에도 신뢰도 문제가 있을 수 있다. 하지만, 이러한 단점에도 불구하고 인공신경망의 경우 대규모의 데이터를 활용할 수 있고, 개선의 여지가 많기 때문에 필자가 아는 범위 내에서는 인공신경망을 활용한 NNP에 대한 연구가 GAP에 비해 더 많다. 따라서 필자도 NNP에 대해 더 많은 포스팅을 할애할 예정이며, 다음 포스팅에서는 NNP에서 사용하는 Atomic Symmetry Function에 대하여 알아보도록 하겠다.

댓글