본문 바로가기
프로그래밍/IT용어.지식

딥러닝

by 낭만가을 2020. 3. 14.

1.딥 러닝(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 기법을 이용하여 새로운 이미지를 창조하는 연구가 진행중이라고 합니다. 

이 외에도 딥 러닝 기술이 더욱 발전하여 보편화된다면 적용할 수 있는 분야는 무궁무진할 것 이라고 생각합니다.

 

 

2. 머신러닝(Machine learning)이란?

사실 딥 러닝은 머신러닝에서 나온 한 갈래이므로 딥 러닝을 알기 전에 머신러닝이 무엇인지 아는 것이 좋을 것 같습니다. 

머신러닝은 프로그래머의 프로그래밍 없이 컴퓨터에게 배우는 능력을 갖게 하는 컴퓨터 과학의 한 종류입니다. 

사람이 직접 손으로 하는 코딩없이, 수집한 수 많은 데이터를 통해 주어진 입력(input)에 대해 올바른 출력(output)을 하게 하는 것입니다. 코딩없이 프로그램을 만든다니, 이런 생각은 왜 하게 되었을까요? 

 

 

사실 프로그래머도 사람이기 때문에, 작성하기 굉장히 어려운 프로그램들이 있습니다. 가령, 어질러져 있는 장면에서 조명 조건이 바뀌었을 때 특이한 방향에서 3차원 물체를 인식하도록 하는 프로그램이 있을 것입니다.

사람에게는 이런 작업이 아주 간단한 일입니다. 빛의 밝기와 빛이 들어오는 방향에 따라서 물체의 색과 그림자의 모양이 달라져도, 위, 옆, 아래, 대각선 등 보는 방향을 어느 쪽으로 바꿔도 '책상'을 '책상'이라고 인식할 수 있습니다.

하지만 우리는 우리의 뇌에서 정확히 어떤 일이 일어나서 이런 작업을 수행하는지 알지 못합니다. 설령 알고 있다고 해도, 그 과정을 프로그램으로 작성하는 과정은 무지막지하게 복잡해질 것입니다.

또 하나의 예는, 신용 카드 거래가 사기일 확률을 계산하는 프로그램 작성입니다. 사기라고 확신할 수 있는 간단하면서도 신뢰할 수 있는 강력한 규칙은 아마도 없을 것입니다. 그렇기에 많은 수의 약한 규칙들을 결합할 필요가 있습니다. 사기의 표적은 계속 이동하기 때문에, 프로그램은 상황에 맞게 계속 변화해야 합니다.
 
위에서 언급한 문제들처럼 인간의 프로그래밍만으로는 해결하기 힘든 문제들이 많이 있습니다. 따라서 특정한 작업을 수행하는 프로그램을 사람이 작성하는 대신 기계가 프로그램을 생산하는 방법으로 접근한 것입니다. 
즉, 수 많은 예제 데이터를 머신 러닝 알고리즘이 습득하게 하여, 프로그램을 생산하는 것입니다.
 
만약 그 과정이 올바르게 되었다면, 만들어진 프로그램은 훈련시킨 것처럼 새로운 경우에 대해서도 작동할 것입니다. 그런데다가 기술의 발전으로 방대한 양의 계산을 수행하는 컴퓨터의 가격이 저렴해졌기 때문에, 프로그래머를 고용하여 복잡한 프로그래밍을 하는 것보다 머신 러닝을 통하여 프로그램을 생산하는 것이 시간과 비용면에서 효율적이라는 이유도 있습니다.
 
머신 러닝을 통해서 해결할 수 있는 작업은 '패턴 인식, 이상 감지, 예측' 등이 있습니다. 패턴 인식은 실제 장면에서 사물 인식, 사람 얼굴 혹은 얼굴의 감정 표현 인식, 음성 단어 인식 등이 있습니다. 이상 감지는 비정상적인 일련의 신용 카드 거래 감지, 원자력 발전소 센서 판독 값의 비정상적인 패턴 감지 등이 있습니다. 마지막으로 예측은 미래의 주식 가격 혹은 통화 환율 예측, 특정 인물이 좋아할만한 영화 예측 등이 있습니다.

 

 

'프로그래밍 > IT용어.지식' 카테고리의 다른 글

EAI 개념 과 필요성  (0) 2020.03.21
PC 속도 램과 SSD 와의 관계  (0) 2020.03.14
블록체인 (아주 쉽고 정확하게 알려드립니다)  (0) 2020.03.07
DEVON  (0) 2020.03.06
핀테크 완벽정리  (0) 2020.02.08

댓글