본문 바로가기
딥러닝

딥러닝(Deep Learning)의 정의, 기존의 머신 러닝(Machine Learning) 과의 차이점

by 미스터탁 2020. 6. 24.

이번 포스팅에서는 딥러닝(Deep Learning)에 대한 정의와 기존의 머신 러닝(Machine Learning) 과의 차이점 그리고 전통적인 data Science 문제에서 딥러닝이 잘 쓰이지 않는 이유에 대해 다루어 보도록 하겠습니다.

 

 

인공지능 

 

인공지능 (Artificial Intelligence : AI)의 사전적은 의미는 다음과 같습니다. '인간의 지능으로 할 수 있는 사고, 학습, 자기 개발 등을 컴퓨터가 할 수 있도록 하는 방법을 연구하는 컴퓨터 공학 및 정보기술의 한 분야로서, 컴퓨터가 인간의 지능적인 행동을 모방할 수 있도록 하는 것'. 딥러닝 (Deep Learning)이 부흥하기 시작하면서 인공지능을 이야기하면 딥러닝을 바로 떠오르는 사람이 많지만, 사실은 전통적인 머신 러닝 (데이터 사이언스 또는 데이터 분석을 위한)기법을 포함하는 단어 입니다. 

 

 

머신러닝

 

머신 러닝의 정의 : 4-5년 전만해도 머신 러닝 (Machine Learning)을 인공지능과 비슷한 개념으로서 많이 사용해 왔습니다. 인공지능이라고 해 봤자, 무언가 분류하거나 예측하는 것 이상 할 수 가 없었기 때문이죠. 하지만, 4-5년전부터 딥러닝 (특히, GAN과 강화학습)이 발전하면서 머신 러닝과 인공지능을 분류해서 부르기 시작하였습니다. 머신 러닝의 '정의'에 대해서 이야기 할 때에는 인공지능의 정의와 같다라고 보시면 될 것 같습니다. 다만, 사용하는 분야가 조금 다르다라고 보시면 될 것 같습니다. 최근에 부르는 머신 러닝은 행과 열이 존재하는 행렬 (정형 데이터)을 가지고 무언가 예측 또는 분류 하고 싶을 때 사용한다라고 보시면 됩니다. 이미지 또는 텍스트와 같은 정형화 되어있지 않은 (비정형 데이터) 데이터를 사용할 때에는 인공지능 (딥러닝)을 사용한다라고 보시면 됩니다. 크게 보았을 때에 머신 러닝이 인공지능 안에 포함되는 개념이라고 볼 수 있습니다.

 

 

신경망 

 

신경망 (Neural Network) : 신경망은 딥러닝의 가장 기초가 되는 모델입니다. 여기서는 컨셉에 대해서만 간략하게 이야기를 하도록 하겠습니다. 신경망은 기본적으로 입력 (Input), 은닉 (Hidden), 출력 (Output)층으로 구성된 모형으로서 각 층을 연결하는 노드의 가중치를 업데이트하면서 학습하게 됩니다. MSE와 같은 Loss를 설정하고 이 Loss가 최소화가 되는 지점을 찾기 위해 가중치를 점차 Update하게 됩니다. 이 신경망 모델은 이미 오래전부터 존재 했던 모델입니다.하지만, 지금처럼 빛을 발휘 하지는 못했죠. 그 이유는 신경망이 가지는 학습의 장점이자 단점 때문입니다. 신경망은 내가 가지고 있는 학습데이터에서 완벽한 모델을 만들 수 있습니다. 즉, 어떠한 모델을 만들든 간에 학습데이터 내에서 정확도 100%에 이르는 모델을 구축할 수 있다라는 것이죠. 여기서 중요한 것은 '학습데이터 내에서' 라는 표현입니다. 학습데이터 내에서 잘 맞추려다 보니, 우리가 실제로 예측해야만 하는 데이터 (검증 또는 테스트 데이터)에 대해서는 잘 맞추지 못하는 현상이 발생하게 됩니다. 

기본적인 신경망 구조

Overfitting : Overfitting은 신경망 모형 뿐만이 아니라, AI나 Data Science 전반적으로 굉장히 큰 이슈 입니다. 아직까지 이를 완벽하게 해결하는 방법은 없습니다. 다만, 실험 설계를 통해 적절히 데이터를 나누어 과적합 정도를 파악하고, 적절한 모델과 변수를 선택해야합니다. 그 중에서도 신경망은 이전에 살펴보았던 것처럼 Overfitting이 심하게 일어납니다. 신경망의 목적은 결국 학습 데이터내에서 loss를 최소화 시키는 것이기 때문에 더 좋은 Decision Boundary를 만들려고 노력하지 않습니다.

 

 

 

반응형

 

 

딥러닝 (Deep Learning)의 정의 


딥러닝은 새로운 모델의 개념이 아니라 신경망이 발전한 모델입니다. 신경망은 학습 하는 알고리즘의 특성상 Overfitting이 심하게 일어나며 Gradient Vanishing이 일어난다고 서술 하였습니다. 그래서 학습 과정 내에서 Overfitting을 어느정도 방지할 수 있는 SVM과 Ensemble Learning이 많이 쓰였습니다 (물론, Ensemble Learning은 현재까지도 매우 많이 사용되고 있습니다). 딥러닝의 정의에 대해서 이야기해보면 크게 두가지로 이야기 해볼 수 있습니다. 사전적인 정의로 딥러닝은 2개 이상의 Hidden Layer를 가지는 다층 신경망 (Deep Neural Network; DNN)이라고 이야기 할 수 있습니다. 신경망을 기반으로 한 모델이기 때문에 위와 같이 정의 할 수 있습니다. 그러나, 딥러닝이 본격적으로 발전하게 된 것은 단순히 모델이 깊어졌기 (deep) 때문 만은 아닙니다. 딥러닝에는 Graphical Representation Learning이라는 가장 큰 특징이 있기 때문입니다. 

 

 

 

딥러닝이 발전하게 된 계기


딥러닝이 발전하게 된 계기 : 딥러닝이 발전하게 된 원인은 크게 두가지가 있습니다. 첫번째로 신경망의 단점으로 지적되어 왔던 Overfitting과 Gradient Vanishing을 완화 시킬 수 있는 알고리즘이 발전 한 것과 타 알고리즘대비 학습시간이 매우 오래 걸리는 문제가 있었는데 Graphics Processing Unit (GPU)를 신경망의 연산에 사용할 수 있게 되면서 이를 해결하게 된 것입니다. 개인용 GPU로 많이 사용되는 NVIDIA GeForce GTX 1080Ti를 사용 했을 때 CPU로 사용 했을 때 보다 보다 적게는 10배 많게는 수십 배 이상 빠른 속도로 딥러닝 연산 수행이 가능합니다. 

 

 

딥러닝의 종류


딥러닝은 본격적으로 발전한 이후로 매우 다양한 분야와 형태로 발전해 왔습니다. 딥러닝의 구조의 종류에 대해서만 간략하게 이야기 해 본다면, AI Background부분에서 서술한 MLP, 이미지 관련 분야에서 많이 사용되는 Convolutional Neural Network (CNN)와 텍스트와 같은 시계열 분야에 많이 사용되는 Recurrent Neural Network (RNN)로 나눌 수 있습니다. 딥러닝이라고 하면 가장 기본적으로 다루어야하는 구조이기도 하죠. CNN과 RNN구조를 바탕으로 딥러닝은 다양한 분야와 형태로 더욱 더 파생되어 발전되어 오고 있습니다. 

 

기본적인 CNN구조
기본적인 RNN구조

 

 

 

 

Convolutional Neural Network (CNN)


이미지 분류에서 기존 Machine Learning 알고리즘의 한계 : 특정 이미지를 컴퓨터에게 보여주고, 이미지를 분류하는 모델을 만들 때에 우리는 이미지를 구성하는 Pixel값을 Input으로 사용합니다. 일반적으로 Machine Learning을 할 때 에는 Input 변수들이 서로 독립이라는 가정이 있습니다. 그래서 독립변수 (Independent Variable)라고 부릅니다. 하지만 이미지의 Pixel값으 서로 독립이 아니라는 것을 직관적으로 봐도 알 수 있죠. 아래그림의 x11에 해당하는 Pixel은 x12, x21, x22 등 주변 Pixel과 매우 가까운 Pixel값이라는 것을 알 수 있습니다. 그래서 이 Pixel값들을 아래 그림과 같이 독립변수로 쭉 늘어뜨려서 Input으로 사용하는 것은 일반적인 Machine Learning의 가정에 위배되는 행위였습니다. 하지만, 현실적으로 이렇게 밖에 사용할 수 있는 방법이 없었고 어느정도 성능이 나오기는 하였기 때문에 이렇게 이미지의 2차원 Pixel값들을 Vector로 Flatten시켜 Input으로 사용해왔습니다.

Image의 Pixel값을 Flatten시켜서 Feature로 활용하는 예

 

Region Feature : 위 에서 언급한 것처럼 이미지 Pixel들을 Flatten 해서 사용하게 되면, x11과 x21 Pixel은 굉장히 가까운 위치에 있는 Pixel이지만 그러한 정보를 전혀 반영하지 못합니다. 이러한 지역 정보 (Region Feature) 를 학습할 수 있는 신경망 구조가 필요했고, 이러한 신경망 구조를 Convolutional Neural Network (CNN) 라고 합니다. x11과 가까운 x12, x21, x22 Pixel의 가까운 정보까지 함께 학습 시키고자 하는 것입니다.

Image의 Pixel값에 대하여 Region Feature를 뽑는 예

 

 

Convolutional Neural Network (CNN) : CNN은 앞서 언급한 것처럼 Region Feature  (Graphical Feature) 를 학습시키기 위한 신경망 모형으로서 Yann LeCun교수가 1998년에 제안하였습니다. 당시 Yann LeCun교수는 이용하여 숫자 손 글씨를 분류하는 CNN모형을 제안하였으나, 학습시간이 너무 오래 걸리고 앞서서 언급했던 신경망 모형이 가지는 단점때문에 많이 부각 받지는 못했습니다. 그러나 2010년대에 들어서, 알고리즘과 하드웨어 발전으로 CNN이 이미지 처리하는 신경망 모형으로 급부상하게 되었습니다. 딥러닝하면 가장 먼저 떠오르는 CNN모형은 새롭게 개발된 모형이 아니라, 이전부터 있었던 모델이며 여러가지 요건들이 맞춰지면서 이제서 빛을 발하는 모델인 것이죠. CNN은 기본적으로 아래와 같은 구조를 지닙니다. Region Feature를 뽑아내는 Convolution Layer와, Feature Dimension을 위한 Pooling Layer 그리고 최종적인 분류를 위한 (일반적인 MLP구조를 가지는) Fully Connected Layer로 구성이 되어있습니다.

 

 

 

 

CNN vs MLP (Graphical Representation Learning의 중요성)

 

이미지를 분류하는 모델을 만들고자 할 때 CNN과 MLP의 가장 큰 차이점은 아래 그림에서 볼 수 있듯이, 이미지의 Feature를 어떻게 추출 하느냐에 있습니다. MLP는 이미지의 Pixel값을 바로 Network의 Input으로서 사용하는 것이고, CNN은 이미지의 Region Feature를 Convolution Layer와 Pooling Layer를 통해 추출하고 그 Feature들을 MLP의 Input으로 사용하는 것입니다. CNN이 이미지 처리와 관련된 Vision 쪽에 성능이 좋은 이유는 단지 Region Feature를 추출 할 수 있기 때문인 것입니다. 여기서 알 수 있는 중요한 사실은 딥러닝이라고 하는 것은 새로운 모델이라는 개념보다 이렇게 Graphical Feature를 추출하는 것에 초점을 맞춘 모델이며, 모델을 만들 때에 Feature는 매우 중요하다 라는 사실입니다.

 

이미지 분류에서 CNN과 MLP의 차이점

 

 

DataScience 분야에서 Tree기반 모델이 좋은 이유 (딥러닝이 잘 쓰이지 않는 이유)

 

최근 10년간은 딥러닝의 부흥기라고 감히 말할 수 있습니다. 그만큼, 딥러닝의 엄청난 발전이 있었죠. 그럼에도 불구하고 kaggle 대회와 국내 data science 대회에서 boosting 계열 알고리즘 (tree 기반 알고리즘이 거의 항상 우승합니다. 그 이유가 무엇일까요?)

앞서 우리는 CNN의 graphical representation learning에 다루었습니다. CNN이 해주는 역할은 이미지의 region feature를 잘 뽑아주기 위한 것이지. 완전히 다른 모델이 아니다 라는 것 입니다.

 

그럼 여기서, 일반적인 data scicne문제를 생각해 봅시다. 독립변수가 흡연량, 키, 몸무게 등 신체정보가 있고, 종속변수가 폐암 여부라고 해보죠. 여기서 독립변수 흡연량, 키, 몸무게 등 신체정보에 graphical feature가 존재 할까요? 직관적으로 봐도 graphical 한 feature가 존재 하지 않습니다. 즉, 딥러닝은 graphical feature를 위한 모델인데 graphical feature가 없는 문제에 대해서는 잘 맞는다라는 것을 보장하지 못하는 것이죠.

여기서 우리가 알아야 할 개념은 '선형성' 입니다. 어떠한 사람들이 폐암에 걸릴 확률이 높을까요? 담배를 많이 피면 많이필수록 폐암에 걸릴 확률이 높겠죠? 즉 일반적인 data science문제에서 우리가 가져가는 독립변수들은 종속변수들과 선형성이 있다라는 가정을 많이 합니다. 더불어, Tree기반 모델들의 분류 알고리즘을 생각해보면, 흡연량이 몇 이상이면 폐암에 걸리는 확률이 얼마다. 이런식으로 분류가 가능하죠. 즉 직관적으로 봤을 때에도, 일반적인 data science 문제에서 tree기반 모델들이 많이 쓰일수 밖에 없는 것이죠.

더불어, 기존의 머신러닝 모델들은 기본적으로 독립변수들이 서로 독립이라고 가정을 하고, 딥러닝은 input feature들의 연속성(image의 pixel값과 같이)을 가정합니다. 결국, 우리가 사용하는 feature의 특징에 따라서 우리가 사용해야할 모델들이 달라 지는 것입니다. '이미지'하면 무조건 CNN,  데이터 분석은 Xgboost!!"라는 말은 거의 맞는 말이긴 하지만, 그 이유에 대해서 이와 같이 생각해볼 필요가 있습니다.

 

 

 

 

 

딥러닝에 대한 기본적인 내용과 PyTorch 실습 내용을 결합하여 책으로 출판하였습니다.

 

m.yes24.com/Goods/Detail/93376077?ozsrank=10

 

파이썬 딥러닝 파이토치 (Python Deep Learning PyTorch)

파이썬은 선택이 아닌 필수! 파이토치로 딥러닝 입문하기!딥러닝 기술에 초점을 두고 딥러닝을 구현하기 위해 파이썬을 이용하는데, 머신러닝 라이브러리인 파이토치를 활용하여

m.yes24.com

mbook.interpark.com/shop/product/detail?prdNo=339742291&is1=book&is2=product

 

싸니까 믿으니까 인터파크도서

 

book.interpark.com

 

 

 

 

반응형

댓글