실체가 손에 잡히는 딥러닝(2) “인간의 뇌를 모방한 신경망, 그리고 딥러닝”
지난번 <실체가 손에 잡히는 딥러닝> 1편 "인공지능의 세계, 머신러닝과 딥러닝은 어떻게 등장했나"에서는 인공지능과, 머신러닝, 딥러닝의 관계를 짧게 살펴보았는데요. 요즘 어쩌면 IT산업분야에서 가장 뜨거운 감자라고 할 수 있을 머신러닝과 딥러닝에 대한 팝잇 독자분들의 반응을 느낄 수 있었습니다. 감상을 접할 기회는 없었지만 독자분들의 따뜻한 성원에 힘입어 이번 2편에서는 딥러닝에 대해 조금씩 파고들어가 보겠습니다. 혹시 2편부터 접하시는 분들은 1편을 먼저 읽어 두면 도움이 될 것입니다.
☞ 1편 읽으러가기: <실체가 손에 잡히는 딥러닝> (1) "인공지능의 세계, 머신러닝과 딥러닝은 어떻게 등장했나
꼬마선충의 신경세포 네트워크를 이식한 로봇
2014년 수상한 레고 로봇이 하나 탄생되었습니다. 3개의 센서(터치 센서, 사운드 센서, 소나 센서)와 두 개의 바퀴가 부착된 단순한 로봇으로, 벽에 부딪히면 뒤로 물러나고 소리나 음파에 반응해 움직이는 정도의 특별한 것 없는 장난감 수준의 로봇이었습니다(그림 1).
평범해 보이는 이 로봇이 유독 세간의 흥미를 끌었던 부분은 바로 이 로봇에 꼬마선충(그림 2)이라는 벌레의 신경네포 네트워크 구조, 즉 커넥톰(connectome)을 소프트웨어적으로 시뮬레이션시켰다는 점이었습니다.
놀랍게도 레고 로봇은 살아있는 꼬마선충과 거의 같은 움직임을 보였습니다. 302개의 신경세포(뉴런)를 갖고 있는 꼬마선충은 현 시점에서 인간이 신경세포 연결 구조를 파악한 유일한 생명체라고 합니다. 물론, 신경세포의 연결 구조만 알뿐 이것들이 외부 자극(정보)을 뇌에서 어떻게 처리하는지는 모릅니다. 마찬가지로 레고 로봇이 벽에 부딪히면 뒤로 물러나지만 어떤 정보 처리 과정을 거쳐 그렇게 움직이는지 개발자도 모른다는군요. 한마디로 내부가 블랙박스인 것이죠.
신경세포 네트워크를 모델링한 인공 신경망
레고 로봇 사례처럼 딥러닝은 바로 인공 신경망(artificial neural network)에서 시작되었습니다. 인공 신경망은 말 그대로 생물체의 신경세포 네트워크를 모방한 것입니다. 다음 그림 3의 왼쪽부분은 생물체의 신경세포(뉴런)이고 오른쪽은 이 신경세포들의 네트워크 구조입니다.
외부에서 자극(정보)이 들어오면 이 자극은 전기 신호로 변해 무수히 많은 신경세포들을 거친 후 뇌가 어떠한 판단을 하게 합니다. 사람이 고층 건물 난간에 섰을 때 눈으로 입력받은 시각정보와 위치정보가 머릿속에서 어떠한 과정을 거친 후 공포를 느끼게 하는지 정확히는 모릅니다. 단지 외부에서 들어온 정보들이 전기신호 형태로 신경세포 네트워크를 흘러 다니다가 어느 순간 어떤 판단을 내리게 한다는 것만 알고 있을 뿐이죠.
사람의 감정을 인공 신경망으로 모델화할 수 있을까
이제 인공 신경망으로 데이터를 처리하고 판단하는 과정을 살펴 볼까요. 사람은 이성을 처음 봤을 때, 단 3초 만에 호감/비호감을 판단한다고 합니다. 이렇게 우리가 첫인상만으로 판단하는 과정이 어떻게 처리되는지 한번 다음 그림 4와 같이 연상해 봅시다.
실제 사람은 더 복잡한 정보처리 과정을 거쳐 어떤 사람에 대한 느낌을 가질 겁니다. 우선은 이 그림 4와 같이, 정보들이 뇌로 입력되고, 이러한 정보가 여러 뉴런을 거치면서 상대의 호감도를 판단하는 전체적인 흐름만 이해합시다. 이제 이 과정을 인공적으로 모델링해본다면, 다음 그림 5와 같이 개념화할 수 있겠죠.
입력층으로 들어오는 입력은 정보를 의미합니다. '오드리 헵번'이라는 데이터를 생각해본다면, '눈 색깔, 코 높이, 보조개' 같은 여러 변수가 입력되는 것이죠. 출력은 어떤 결괏값입니다. 그림 4의 오드리 헵번 사진의 예로 보자면, 출력이란 사진을 보는 이가 느끼는 감정인 ‘호감 또는 비호감’이겠죠. 중간의 은닉층은 입력된 정보들이 서로 뉴런을 거치며 최종 출력 단계로 나아가는 과정을 말합니다.
이 예에서 보는 것처럼, 실제 생물체의 뇌에서 들어온 정보들이 어떤 원리로 뉴런에서 뉴런으로 연결되어 마침내 출력값을 만들어내는지는 잘 모르지만, 연구자들은 몇 가지 가정을 세워 놓고 이 과정을 수식화했습니다. 그리고 그 수식을 통해 데이터를 처리해봤더니 결론적으로 아주 잘 작동한다는 사실을 발견해냈습니다. 따라서 "수식을 이해한다면 딥러닝의 실체를 알고 있다"고 말할 수 있게 된 것입니다.
좌표 평면을 왜곡시키는 다층 신경망
여기서 하나, 먼저 해결하고 넘어가야 할 중요한 의문이 있습니다.
왜 신경망 모델로 데이터를 학습하는 것이 다른 어떤 방법보다 더 좋은 결과를 만들까?
1편에서도 언급했지만 기존 데이터를 분류하는 규칙을 잘 만들어야 새로운 사례에 대해 잘 판단하고 추론할 수 있습니다. 그런데 실제 데이터는 잘 분류하기가 좀처럼 쉽지 않습니다. 여기서 조금 단순화해서 생각해 봅시다.
다음 그림 6과 같이 2차원 공간에서 데이터가 분포한다면, 어떤 선(일차식)을 그어서 분류해볼 수 있습니다. 하지만 나름대로 최선의 선을 그었지만 데이터를 완벽하게 분류하지는 못합니다. 파란색 네모와 빨간색 세모 각각 1개씩이 잘못 분류됐죠.
이번에는 다음 그림 7의 신경망 모델처럼 다른 방식으로 분류해 봅시다. 그림 7에서 출력 값을 만드는 뉴런은 f(x)=w1 x1 + w2 x2 + b로 표현할 수 있고 변수 x1 x2를 입력받아서 값이 0 보다 크면 파란색 네모, 0 보다 작으면 빨간색 세모로 판단합니다. 그런데 이 상태로는 그림만 다를 뿐, 그림6의 방법과 근본적인 차이가 없습니다. 여전히 몇 개의 데이터는 제대로 분류하지 못합니다.
이제, 여기에서 다음 그림 8과 같이 중간에 층(layer)을 하나 더 두는 다층 신경망을 만들어 봅시다. 여기서 이 층을 은닉층(hidden layer)이라고 부릅니다.
이와 같이 중간에 은닉층을 두고 계산과정을 한번 더 거치면, 다음 그림 9처럼 기존 데이터가 분포하던 좌표평면이 데이터를 분류하기 좋게 왜곡되는 효과가 발생합니다. 은닉층(hidden layer)으로 변형된 좌표평면 공간에서 사선을 하나 그으면, 파란색 데이터와 빨간색 데이터를 잘 분류할 수 있겠죠?
이와 같이 층을 점점 늘릴수록 더 복잡한 왜곡이 생기고, 결과적으로 무질서하게 흩어져 있는 데이터를 더 잘 분류할 수 있게 됩니다. 이렇게 층을 많이 두는 방식을 일컬어, 딥(deep)하다고 표현합니다. 여기에서 바로 딥러닝(deep learning)이라는 용어가 유래한 것이죠.
2편에서는 사람의 뇌를 모방한 신경망에서부터 출발한 딥러닝의 원리와 구조를 살펴보았습니다. 다음 편에서는 딥러닝의 내부를 조금 더 자세히 들여다 보겠습니다. 여러분이 어려워 하시는 여러 용어들, 가중치, 편향, 활성화 함수 등에 대해 차근차근 알아보겠습니다. 1편과 2편에서 딥러닝과 신경망에 대해 좀 더 관심을 가질 수 있다면 성공적이라고 안도하겠습니다. 다음 편도 기대해주세요.
글쓴이: 최재원
대학에서 통계, 데이터 사이언스를 강의했으며 현재 아주대학교 교수학습개발센터에서 머신러닝을 활용한 교육,학습 데이터 분석, 학습부진 위험학생 예측, 적응적 학습 알고리즘을 연구 중이다. 최근 딥러닝 입문서인 <실체가 손에 잡히는 딥러닝, 기초부터 실전 프로그래밍>을 번역 출간했다.