인공신경망(Artificial Neural Network)은 머신러닝 알고리즘의 기본 매커니즘입니다. 처음 인공신경망을 접할 때, 알고리즘과 용어들이 혼동 됐었는데, 직관적인 이해를 하는 데 도움이 되었던 내용을 정리해보고자 합니다. 다른 용어 정리와 같이 공부하시는 분들에게 참고가 되길 바라며, 용어는 굵은 글씨로 표시해두었습니다.
신경망이란, 인간의 뇌가 학습하는 과정을 착안한 것입니다다. 의학적인 정보를 모르기에 실제로 얼마나 비슷한 지 모르겠으나, 인공신경망의 핵심은 "뉴런"들이 상호작용을 통해 학습해 간다는 공통점이 있다고 합니다.
인공신경망은 입력과 출력이 있는 하나의 거대한 함수라고 볼 수 있습니다. 인공신경망이 학습한다는 것은 인풋에 대해 우리가 원하는 아웃풋을 내도록 함수를 만들어 가는 과정이라고 볼 수 있습니다.
예로, MNIST 손글씨 이미지를 맞추도록 하는 인공신경망(함수)를 만든다고 해보겠습니다. 이 경우, 28x28 크기의 이미지를 입력으로 넣어서, 이미지 0~9 중 가장 가까운 수를 출력값으로 내놓는 함수가 될 것입니다. 좀 더 구체적으로는 아래와 같은 함수를 만들 것입니다.(이미지의 각 픽셀은 0~1까지의 숫자를 나타내고, 이는 어두운 정도를 표현함)
INPUT | 28x28 크기의 흑백 이미지 = 784 pixels |
OUTPUT | 0~9 중 각각의 숫자가 정답일 확률 |
컴퓨터는 이미지, 즉, 784개의 숫자를 받아 0~9 중 어느 숫자에 해당하는 지 정답을 맞추기 위해, 뉴런을 통과하며 학습하게 됩니다. 아래 그림에서 원 하나가 뉴런이며 숫자를 담는 역할을 합니다. 이 예시에서는 16개의 뉴런으로 이루어진 두개의 레이어로 인공신경망을 구성하였습니다.
인간은 이 이미지를 보고 원형 한개(위)와 직선 한개(아래)의 조합이니, 숫자 9라고 인식하게 될 것입니다. "이상적으로는" 인공신경망이 이미지의 수많은 조각들을 보고 특정 패턴을 인식하기를 바라고, 마지막 레이어에서는 어떤 조각의 조합이 어떤 숫자를 가리키는 지 인지하기를 바랬을 수도 있습니다. 첫번째 레이어에서는 조각들의 모양을 인식--> 그 다음 레이어에서는 원형과 직선을 인식 --> 이 조합은 9다! 라는 식으로 말이죠. 즉, 컴퓨터가 추상적인 것들의 조합이 가지는 의미를 파악하도록 하고 싶었을 것입니다.
맨 첫번째 레이어는 인풋 784개의 픽셀로 이루어져 있고, 마지막 레이어는 0~9까지 정답일 확률이 들어가게 됩니다. 그렇다면, 다른 레이어에 있는 뉴런은 어떤 숫자가 채워지는 지 알아도록 하겠습니다. 각 뉴런은 이전 레이어의 모든 뉴런과 선으로 연결되어 있습니다(fully connected). 즉, 두번째 레이어의 뉴런 하나는 784개의 뉴런과 연결됩니다.
인풋 레이어 다음의 레이어 중 첫 번째 뉴런 값을 결정하는 과정을 그려보았습니다. 뉴런은 이전 레이어의 784개 뉴런과 연결되어 있지만 모든 정보를 동등하게 가져오지 않고, 각각 다른 가중치(weight)로 가져와서 정보를 종합합니다. 그렇게 되면, 이 뉴런의 값은 일차적으로는 오른쪽 수식(1)과 같아집니다.
이 식을 활성화 함수에 넣어 뉴런의 값을 얼마나 중요하게 볼 것인 지를 결정합니다(수식 (2)). 시그모이드 함수는 활성화 함수의 한 예시로, 위 그래프에서는 활성화 함수에 넣은 값이 0.5 이상일 경우 뉴런이 활성화 되고, 미만일 경우 비활성화 되도록 되어 있습니다.
이 뉴런의 중요도를 낮추거나 높이고자 하는 의지를 편향(bias)으로 나타낼 수 있습니다. 편향값은 활성화 함수를 통과하기 전에 더합니다(수식 (3)).
위 그림의 붉은 그래프는 양수(+2) 의 편향을 주었을 때, 녹색은 음수(-2)의 편향을 주었을 때의 시그모이드 함수 그래프입니다. 양수인 경우 활성화되는 x가 많아지고, 음수인 경우 활성화되는 x가 적어짐을 볼 수 있습니다.
즉, 인공신경망이란 입력값이 주어졌을 때 원하는 출력을 만들어내는 커다란 함수이고, 이에 적절한 변수를 찾아가는 과정이 인공신경망의 학습이라고 이해할 수 있습니다. 위 예시에 있는 인공신경망을 학습시키기 위해서는 784x16+16x16+16x10개의 가중치(weight)과, 각 뉴런의 편향(bias) 16+16+10에 대한 13,002개의 변수를 우리가 원하는 결과가 나오도록 조정해야 합니다.
컴퓨터가 weight을 학습하기 위해 미분이 사용되고, 계산을 편리하게 하기 위해 행렬 연산이 사용될 것입니다. 인공신경망에 학습되는 수학적인 부분은 다음 포스팅에서 더 자세히 다루도록 하겠습니다.
본 포스팅은 3blue1brown 채널의 내용을 참고하였습니다.
https://www.youtube.com/watch?v=aircAruvnKk&list=PL4kpRgnRIMQYZnr9GyVaxuC-Rr18Yq7h5&index=8
'머신러닝' 카테고리의 다른 글
인공신경망은 어떻게 학습하는가? (0) | 2021.08.20 |
---|