[기계 학습 #1] 인공 신경망이란
기계 학습 연재 서론
인공지능이나 기계 학습 같은 분야는 흥미로워 보이는 분야기는 하지만, 실제로 공부를 하려고 하면, 쉽지 않습니다. 먼저, 어디서부터 시작해야 할 지도 막막하고, 공부를 시작했다고 하더라도, 추상적인 개념이 쉽게 와닿지 않지요. 아니면, 수학 울렁증 때문에 포기했을 수도 있고요.
그래서, 기계 학습에 대한 연재를 하기로 했습니다. 물론, 인터넷에 찾아보면, 기계 학습에 대한 많은 내용을 찾아 볼 수 있지만, 인공지능을 그렇게 만들게 된 이유나 의미는 잘 다루지 않는 것 같았습니다. 그래서 본 연재는 원리와 의미에 비중을 두고, 필요한 수학적 내용은 간간히 같이 다루기로 하였습니다. 원리와 의미, 그리고 수학적인 내용도 알아야, 인공지능을 개발하는데 한층 더 수월하고, 유연해질 수 있기 때문입니다.
인공지능이라는 개념은 상당히 넓고 방대한 개념입니다. 그만큼 분야도 많고, 구현하는 방법도 많지요. 본 연재에서는 최근에 활발히 연구되고 있는 분야에 많이 활용되는 인공 신경망을 우선적으로 다루려고 합니다.
그래서 본론 : 인공 신경망이란 무엇인가
인공신경망을 설명하는 방법은 많은 방법이 있습니다만, 여기서는 인공신경망을 함수로 보기로 합니다. 말하자면, 어떤 입력을 받아서, 일정한 과정을 거쳐, 출력을 반환하는 과정이 인공 신경망이라는 겁니다.
\[\mathcal{입력} \rightarrow \mathcal{신경망} \rightarrow \mathcal{출력}\]
그런데 여기서 한 가지 의문점이 생깁니다.
만약, 인공 신경망이 단순한 함수일 뿐이라면, 왜 함수를 직접적으로 찾지 않고, 굳이 인공 신경망 같은 복잡한 개념을 끌고 와서 계산하는 걸까?
사실 우리는 초등학교, 중학교, 고등학교 때 과학이나 수학 시간에, 현상을 설명하는 많은 함수를 배웠습니다. 대표적으로 반지름이 \(r\)인 원의 둘레 \(S\)가 \(S=2{\pi}r\)로 나타내어진다라는 사실이 있죠. 이런 식으로, 다른 상황에서도 함수를 찾아낼 수 있지 않을까요?
인공 신경망을 사용하는 이유
가능한 경우가 있겠습니다만, 많은 경우 쉽지 않습니다. 예를 들어, 고양이를 인식하는 기계를 만들고 싶다고 해 보겠습니다. 어떻게 해야 기계가 고양이를 인식할 수 있을까요? 잠깐 생각 해 봐도, 사진이나 카메라에서 고양이를 인식하도록 해 주는 함수를 짜는 것이 쉽지 않을 것이라는 느낌이 듭니다.

그래도 위의 경우는 어떻게 잘 하면 함수를 찾을 수 있지 않을까요? 그럼, 다른 상황을 구성 해 보겠습니다. 사람과 '자연스럽게' 대화하는 기계를 만들고 싶었다고 해 봅시다. '자연스러움'을 수학적으로 어떻게 표현할까요? 이 또한 쉽지 않다는 것을 알 수 있습니다.
이런 상황에서, 인공 신경망은 좋은 도구가 될 수 있습니다. 인공 신경망은 생물의 인식 체계를 바탕으로 만들어진 기술이기 때문입니다. 우리는 왜 그 대화가 자연스러운지, 어떻게 사진에서 고양이를 찾아냈는지, 그 과정을 자세히 설명할 수는 없지만, 결과적으로 자연스러운 대화를 할 수 있고, 고양이를 찾아낼 수 있습니다. 즉, 과정이야 어찌 되었든 인식할 수 있습니다. 그러므로, 우리는 기계를 학습시킬 수 있습니다.
마지막 문장의 결론이 상당히 이상하게 느껴질 지도 모르겠습니다. 그런데, 우리가 아기에게 말을 가르칠 때를 생각 해 보면, 그리 이상한 얘기도 아닙니다. 아기는 아무 것도 모르는 상황에서, 단어를 배웁니다. 이때, 우리가 가르치는 방법은 귀납적으로, 무엇이 그 단어에 적합하고, 무엇이 아닌지 알려주는 것이지, 그 단어가 어떤 의미이고, 왜 그런지 가르치지 않습니다.
다시 인공 신경망의 입장에서
기계에게도 똑같이 적용할 수 있습니다. 어떤 입력이 주어졌을 때, 기계가 출력을 제시하면, 그것이 어느 정도 합당한 결론인지 평가 해 주면 됩니다. 예를 들어, 아까의 고양이를 찾는 기계의 경우, 그 사진에 실제로 고양이가 있는지, 아니면 없는지 기계에게 알려주면 됩니다. 이렇게 데이터를 입력으로 주고, 그 출력에 대해 '기대되는 바'를 실제로 알려주는 방식을 지도 학습이라고 합니다. 이에 대해서는 이후에 더 자세히 다루도록 하겠습니다.
다시 말해, 우리는 어떠한 형식의 '평가'가 필요합니다. 많은 경우, 이런 평가를 손실 함수나 비용 함수라고 얘기합니다. 기계의 출력이 우리가 기대하는 출력과 얼마나 다른지를 평가하는 함수이지요. 이름이 주는 느낌과 같이, 기계는 이 손실 함수를 최소화하는 방향으로 학습합니다.
결론
인공 신경망은 특정 입력에 대해 어떠한 출력을 반환하는 일종의 함수입니다. 이 함수는 무작위적일 수도 있습니다. 그러나, 이런 무작위적 결론을 도출하는 기계는 필요없기 때문에, 우리는 원하는 결과를 얻기 위해 비용 함수를 도입했습니다. 그리고 기계가 비용 함수를 최소화하도록 기계를 학습시킴으로써, 기계가 우리가 원하는 바를 이루어내도록 합니다.
이번 글에서는 인공 신경망이 무엇인지, 그리고 왜 인공 신경망을 사용하는지에 대해 글을 써 보았습니다. 다음 글부터는 인공 신경망에 대해 더 자세히 다루어보도록 하겠습니다.