딥러닝에 대하여 1 - 딥러닝과 머신러닝, 그리고 신경망 기초 개념

 

딥러닝에 대하여 1 - 딥러닝과 머신러닝, 그리고 신경망 기초 개념

 

 2017년에 들어서면서, 올 한해 동안 지속적으로 공부하고 알고 싶은 주제를 선택하여 블로그에 연재를 해보자는 계획을 갖게 되었습니다.  계획을 실천하기 위해 고심하여 선택한 주제는 바로 '딥 러닝(deep learning)'입니다. 평소에 업무를 보면서 자연스레 접하기는 힘든 분야이지만, 작년에 뜨거운 관심을 받았던 알파고와 이세돌의 대결 덕분에 머신 러닝과 딥 러닝에 호기심을 갖게 되었습니다. 그렇게까지 알파고가 압승을 하리라고는 생각지도 못해서 저에게는 꽤나 충격이었습니다.

 

 

올해는 개인적인 공부와 블로그 연재를 통해 단순한 호기심을 벗어나 이해하고, 딥러닝 기술을 활용한 작은 프로젝트를 하나 만들어 보는 것이 목표입니다. 과연 저는 이 목표를 달성할 수 있을까요?ㅎㅎ 용두사미가 되지 않도록 글을 쓰는 이 순간도 다짐해봅니다. 그러면 머신러닝, 신경망, 그리고 딥러닝의 개념에 대해 간단하게 알아보겠습니다.

 
- 머신러닝(Machine learning)이란?
 딥 러닝에 대해 알아보기 전에 우선 머신러닝의 개념에 대하여 알아보려고 합니다. 사실 딥 러닝은 머신러닝에서 나온 한 갈래이므로 딥 러닝을 알기 전에 머신러닝이 무엇인지 아는 것이 좋을 것 같습니다. 머신러닝은 프로그래머의 프로그래밍 없이 컴퓨터에게 배우는 능력을 갖게 하는 컴퓨터 과학의 한 종류입니다. 사람이 직접 손으로 하는 코딩없이, 수집한 수 많은 데이터를 통해 주어진 입력(input)에 대해 올바른 출력(output)을 하게 하는 것입니다. 코딩없이 프로그램을 만든다니, 이런 생각은 왜 하게 되었을까요?
 
 사실 프로그래머도 사람이기 때문에, 작성하기 굉장히 어려운 프로그램들이 있습니다. 가령, 어질러져 있는 장면에서 조명 조건이 바뀌었을 때 특이한 방향에서 3차원 물체를 인식하도록 하는 프로그램이 있을 것입니다. 사람에게는 이런 작업이 아주 간단한 일입니다. 빛의 밝기와 빛이 들어오는 방향에 따라서 물체의 색과 그림자의 모양이 달라져도, 위, 옆, 아래, 대각선 등 보는 방향을 어느 쪽으로 바꿔도 '책상'을 '책상'이라고 인식할 수 있습니다.
 하지만 우리는 우리의 뇌에서 정확히 어떤 일이 일어나서 이런 작업을 수행하는지 알지 못합니다. 설령 알고 있다고 해도, 그 과정을 프로그램으로 작성하는 과정은 무지막지하게 복잡해질 것입니다. 또 하나의 예는, 신용 카드 거래가 사기일 확률을 계산하는 프로그램 작성입니다. 사기라고 확신할 수 있는 간단하면서도 신뢰할 수 있는 강력한 규칙은 아마도 없을 것입니다. 그렇기에 많은 수의 약한 규칙들을 결합할 필요가 있습니다. 사기의 표적은 계속 이동하기 때문에, 프로그램은 상황에 맞게 계속 변화해야 합니다.
 
 위에서 언급한 문제들처럼 인간의 프로그래밍만으로는 해결하기 힘든 문제들이 많이 있습니다. 따라서 특정한 작업을 수행하는 프로그램을 사람이 작성하는 대신 기계가 프로그램을 생산하는 방법으로 접근한 것입니다. 
즉, 수 많은 예제 데이터를 머신 러닝 알고리즘이 습득하게 하여, 프로그램을 생산하는 것입니다.
 
 만약 그 과정이 올바르게 되었다면, 만들어진 프로그램은 훈련시킨 것처럼 새로운 경우에 대해서도 작동할 것입니다. 그런데다가 기술의 발전으로 방대한 양의 계산을 수행하는 컴퓨터의 가격이 저렴해졌기 때문에, 프로그래머를 고용하여 복잡한 프로그래밍을 하는 것보다 머신 러닝을 통하여 프로그램을 생산하는 것이 시간과 비용면에서 효율적이라는 이유도 있습니다.

 

 
 

머신 러닝을 통해서 해결할 수 있는 작업은 '패턴 인식, 이상 감지, 예측' 등이 있습니다. 패턴 인식은 실제 장면에서 사물 인식, 사람 얼굴 혹은 얼굴의 감정 표현 인식, 음성 단어 인식 등이 있습니다. 이상 감지는 비정상적인 일련의 신용 카드 거래 감지, 원자력 발전소 센서 판독 값의 비정상적인 패턴 감지 등이 있습니다. 마지막으로 예측은 미래의 주식 가격 혹은 통화 환율 예측, 특정 인물이 좋아할만한 영화 예측 등이 있습니다.

 

- 신경망(Neural network)이란?
 신경망이란 생물학에서 영감을 얻은 것으로, 관측한 데이터로부터 컴퓨터가 학습을 하게 하는 프로그램 패러다임입니다. 신경 단위(인공적인 뉴런들)의 큰 집합에 기초를 두며, 축색 돌기에 연결된 신경 세포(뉴런)들의 큰 단위체들을 가진 생물학적 뇌가 문제를 해결하는 방식을 따라하였습니다.
 

 

 우리의 뇌에서는 다음과 같은 일이 발생합니다. 각 뉴런은 다른 뉴런으로부터 입력을 받습니다. 뉴런에 있는 각 입력들의 효과는 시냅틱 가중치(synaptic weight)에 의해 조절됩니다. 가중치는 플러스일수도 마이너스일수도 있습니다. 시냅틱 가중치는 상황에 맞게 조정되므로, 전체 망(network)은 유용한 계산을 수행하도록 학습합니다. 예를 들면, 사물을 인식하거나 언어를 이해하거나, 계획을 세우거나, 신체를 조절하는 등의 일을 수행할 수 있습니다. 쉽게 말하면 외부에서 입력되는 신호를 뇌에서 받아, 각 가중치에 의해 계산을 한 후 최종적으로 특정한 행동을 하게 되는 것입니다.

 

 신경망은 이런 뇌의 작용 방식을 모방하고 있습니다. 각각의 뉴런은 다른 뉴런들과 연결되어 있으며, 연결고리는 연결된 뉴런의 활성화 상태에 따라 그 효과를 강하게 하거나 억제할 수 있습니다. 각 뉴런은 전체 입력(input)값들을 모두 다 결합하는 총합 함수(summation function)가 있습니다. 각각의 연결과 각각의 단위 자체에 임계 함수(threshold function) 혹은 제한 함수(limiting function)이 있어서, 다른 뉴런으로 전파하기 전에 보낼 신호는 반드시 한계점을 초과해야 합니다.

 

- 딥 러닝(Deep learning)이란?                             

딥 러닝이란 머신 러닝의 한 갈래입니다. 머신 러닝이 인공지능(AI)의 주요 아이디어의 일부를 가져와서 인간의 뇌에서 일어나는 의사 결정 과정을 모방하여 만든 신경망으로 현실 세계의 문제를 푸는 것에 집중한다면, 딥 러닝은 머신 러닝의 도구와 기술의 일부에 더욱 초점을 맞춥니다. 그리고 생각이 필요한 어떤 문제를 해결하는 일에 이를 적용하려 합니다.

 기존의 머신 러닝의 차이점이 있다면, 머신 러닝에서 기계가 학습하기 위해 주어진 데이터에서 특징을 추출하는 과정에 여전히 사람이 개입하지만 딥 러닝은 주어진 데이터를 그대로 입력데이터로 활용한다는 점입니다. 사람이 생각한 특징을 훈련하는 것이 아니라 데이터 자체에서 중요한 특징을 기계 스스로 학습하는 것입니다. 그래서 딥 러닝을 end-to-end machine learning 이라고 한다고 합니다. 처음부터 끝까지 기계가 학습한다는 것이죠. 그렇기 때문에 사람이 개입함으로써 생길 수 있는 오류를 줄일 수 있습니다.

 

 

 딥 러닝도 머신 러닝과 마찬가지로 신경망을 통한 기계 학습을 통해 이루어집니다. 딥 러닝에서 신경망은 입력층(input layer)과 출력층(output layer) 그 사이의 은닉층(hidden layer)이라는 것으로 구성되어 있습니다. 은닉층은 다층으로 구성될 수 있으며 이어져있는 각 층은 그 전 층의 입력 신호로부터 나온 새로운 출력을 사용합니다. 쉽게 말해, 순서대로 은닉층 1, 2 가 있다고 할 때, 은닉층 1에서 받은 입력신호를 가공하여 도출된 출력을 은닉층 2로 보내는데, 이 때 1에서 도출된 출력은 2의 입력이 됩니다.

 각 뉴런에는 입력신호를 가공하여 출력을 도출하기 위해서 활성화 함수(activation function)가 역할을 하는데, 활성화 함수에는 계단 함수, 시그모이드 함수, Rectified Linear Unit 함수등 이 있습니다. 다음 번 글에서는 이 다양한 활성화 함수와 각 특징에 대해 쓰려고 합니다.  

 그렇다면 딥 러닝은 실생활에 어떤 방식으로 활용되고 있을까요? 구글에서는 음성과 이미지 인식 알고리즘에 딥러닝을 활용하고 있고, 넷플릭스(Netflix)와 아마존에서는 사용자가 다음에 무엇을 볼 지, 무엇을 구매할 지를 결정하기 위해 활용하고 있다고 합니다. 이 밖에도 화가의 화풍을 따라하여 그림을 그리는 연구와, DOGAN 기법을 이용하여 새로운 이미지를 창조하는 연구가 진행중이라고 합니다. 이 외에도 딥 러닝 기술이 더욱 발전하여 보편화된다면 적용할 수 있는 분야는 무궁무진할 것 이라고 생각합니다.

 

 지금까지 아주 간단하게 머신러닝, 신경망 그리고 딥 러닝의 개념에 대해 적어보았습니다. 딥 러닝의 세부적인 내용을 공부하기 전 가벼운 인트로격으로 써보았습니다. 사실 각 개념들에 대해 찾아보면 방대한 양의 자료들이 많이 있습니다. 상세하고 깊은 내용까지 알고 싶으신 분들은 관련된 책이나 온라인 자료들을 보시면 좋을 듯 합니다. 저는 지금 '밑바닥부터 시작하는 딥러닝' 이라는 책과 coursera 사이트의 Machine learning 강좌를 통해 개인적으로 공부를 하고 있습니다. 혹시나 딥 러닝에 D자도 모르는데, 처음부터 배워보고 싶으신 분들께 제가 공부하는 루트를 추천해드리고 싶습니다. (경험상 백지상태인 초보자에게도 이해하기 쉽도록 가르쳐주는 것 같습니다.) 다음 글에서는 위에서 언급했듯이 신경망의 활성화 함수에 대해 써보겠습니다.

 


딥러닝에 대한 더 자세한 내용을 살펴보고 싶다면, 아래 링크를 클릭해주세요.

▶ 딥러닝에 대하여 2 - 파이썬 설치 및 기초 활용


 

New Multi-Channel Dynamic CMS