성장通

머신러닝의 개념과 종류 (+딥러닝의 장단점) 본문

ML&DL/ML DL 기본기

머신러닝의 개념과 종류 (+딥러닝의 장단점)

백악기작은펭귄 2021. 12. 1. 22:54

머신러닝(Machine Learning)이란


What is Machine Learning?

무엇(x)으로 무엇(y)을 예측하고 싶다!


인공지능, 머신러닝, 딥러닝 정의

인공지능(Artificial Intelligence, AI)이란 '문제를 인식하고 해결하는 능력인 지능을 인공적으로 구현한 것'을 의미한다. 생물체가 가지는 고유 능력인 지능을 기계에게 부여하고자 하는 시도가 바로 인공지능인 것이다.

인공지능의 하위 집합으로는 머신러닝(Machine Learning, ML)이 있다. 이는 단어 그대로 '기계가 스스로 학습'하여 지능을 습득하는 방식이다. 머신러닝은 학습 알고리즘을 통해 데이터에 숨겨진 정보와 규칙을 학습하고 이를 바탕으로 새로운 것을 예측하고 추론하는 기술이다.

머신러닝의 하위 집합에는 딥러닝(Deep Learning, DL)이 있다. 이는 생체 신경망을 모방하여 만든 인공 신경망(Artificial Neural Network, ANN)을 이용한 기술로, '깊은' 머신러닝이라고 할 수 있다. 머신러닝보다 비교적 복잡한 데이터 관계를 찾아내는데 유리하여, 최근 각광받고 있는 기술 중 하나이다.

인공지능, 머신러닝, 딥러닝 관계 (출처: wikipedia)

그럼 머신러닝보다 딥러닝은 항상 우수하다고 할 수 있을까? 꼭 그런 것은 아니다. 전통적인 머신러닝 기법들은 특정 문제에 맞게 알고리즘이 특화되었기 때문에 소규모의 단순한 문제를 풀 때는 딥러닝보다 훨씬 가볍고 빠르게 풀어내는 경우가 존재한다. 따라서, 일반적으로 머신러닝 기법을 먼저 생각하고, 문제가 커지고 복잡해지면 딥러닝을 검토해보는 것이 일반적이라고 할 수 있다.


인공지능

인공지능은 1950년대 초기 '생각할 수 있는 컴퓨터'에 대한 연구로부터 시작되었다. 인공지능을 간결하게 정의하자면, '보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구 활동'이라고 할 수 있다. 이처럼 인공지능은 머신러닝과 딥러닝뿐만 아니라, 좀더 넓게 보자면 계산기까지도 포함시키는 광범위한 개념이다.

 

사실상 초기의 인공지능은 '학습'의 개념이 없이, 수없이 정의된 많은 규칙을 기반으로 만들어졌으며, 이러한 접근 방법을 Symbolic AI라고 부른다. 이는 1950년대부터 1980년대까지 AI 분야의 지배적인 패러다임이었으며, 1980년대 전문가의 지식과 노하우를 모방하는 Expert System의 호황으로 그 인기가 절정에 다다랐다.

 

하지만 이러한 Symbolic AI 접근 방식은 잘 정의된 논리적인 작업에는 강했지만 음성 인식, 언어 번역 등 더 복잡하고 규칙을 명확하게 정의하기 어려운 작업들에 대해서는 매우 약한 모습을 보였다. 이에 등장한 것이 바로 학습의 개념이며, 이 학습 개념을 사용한 인공지능이 바로 머신러닝이다.

 

머신러닝

컴퓨터가 유용한 작업을 하도록 만드는 일반적인 방법은 프로그래머가 입력 데이터를 적절한 해답으로 바꾸기 위한 규칙을 작성하는 것이다. 하지만 이러한 방식은 그러한 규칙을 찾기 어려운 복잡한 문제에서는 적용이 어렵다는 단점이 있다. 이를 해결하기 위해 등장한 머신러닝은 기존 방식과는 반대로 입력 데이터와 해답을 주면 규칙을 찾는 방법이라고 할 수 있다. 이처럼 데이터와 답을 보고 규칙을 찾는 과정을 학습(Training)이라고 하며, 이는 많은 샘플들로부터 통계적 구조를 찾는 일이다.

 

머신러닝은 일반적인 통계 분석과는 달리 대량의 데이터를 다루는 경우가 많기 때문에 베이즈 분석(Bayesian analysis)과 같은 전통적인 통계 분석 방법은 현실적으로 적용하기 어렵다. 이런 이유 때문에 머신러닝은 이론 물리학이나 수학과 달리 경험적 발견에 의해 주도되는 매우 실천적인 분야이며 소프트웨어 및 하드웨어 발전에 크게 의존한다.

 

머신러닝을 하기 위해선 입력 데이터, 기대 출력(답), 알고리즘 성능 측정 방법(Metric)이 필요하다. 모델은 입력 데이터로부터 기대 출력을 얻어내는 것이 목표이며, 모델이 입력 데이터로부터 얻어낸 답과 기대 출력 간의 차이를 metric으로 측정하고 이를 피드백에 사용하여 둘의 차이(loss)를 줄여나간다. 머신러닝의 핵심은 입력 데이터를 의미있게, 즉 기대 출력에 가까워지도록 표현하는 것으로, 이를 학습이라고 한다. 학습은 유용한 데이터 표현을 만드는 데이터 변환을 피드백 신호를 바탕으로 자동으로 탐색하는 과정을 의미한다.

 

딥러닝

딥러닝은 머신러닝의 특정 분야로, 연속된 층(layer)에서 점진적으로 의미있는 표현을 배우는 방식이다. 딥러닝에서 딥(deep)은 그 지식의 깊이나 성능을 나타내는 것이 아니라 여러 개의 층을 나타내는 단어로, 사실상 여러 개의 층을 가진 머신러닝 방식을 딥러닝이라고 한다. 딥러닝에서는 말 그대로 층을 겹겹이 쌓아 올려 구성한 신경망(neural network)이라는 모델을 사용하여 의미 있는 표현을 학습한다.

 

딥러닝에서는 입력 데이터가 층을 지날수록 점점 더 많은 정보를 가지게 되지만 동시에 원본 데이터와는 다른 표현으로 변하게 된다. 데이터가 심층 신경망의 연속된 필터(filter)를 통과하면서 순도 높은 정보가 추출되게 되는데, 최종 정보는 아웃풋 레이어에서 기대 출력과 같은 형태로 출력되게 된다.

 

각 층이 입력 데이터를 처리하는 방식은 일련의 숫자로 이루어진 층의 가중치(weight)에 저장되어 있다. 이러한 가중치는 파라미터(parameter)라고도 부르며, 각 층은 이러한 가중치를 파라미터로 갖는 함수로 표현된다. 이와 같이 각 층의 가중치를 구하는 것, 즉 주어진 입력을 정확한 타깃에 매핑하기 위해 모든 층의 가중치 값을 구하는 것이 학습의 주목적이다.

 

다만 일반적으로 깊은 신경망들은 수천만개 이상의 파라미터를 가지며, 파라미터들은 서로 영향을 주고 받기 때문에 적절한 조합을 찾는 것이 상당히 어렵다. 이를 위해서는 신경망의 출력을 관찰하고 제어하할 수 있어야 하는데, 딥러닝에서는 이러한 일을 손실 함수(loss function)가 수행한다. 이는 목적 함수(objective function) 또는 비용 함수(cost function)라고도 부르며, 신경망이 한 샘플에 대해 얼마나 잘 예측했는지 측정하기 위해 신경망의 예측과 기대 출력의 차이를 점수로 계산하는 함수이다. 딥러닝은 이 점수를 피드백 신호로 사용하여 현재 샘플의 손실 함수가 감소되는 방향으로 가중치 값을 조금씩 수정하게 되고, 이러한 수정 과정은 역전파(backpropagation) 알고리즘을 구현한 옵티마이저(optimizer)가 담당한다.

 

초기 네트워크의 가중치는 랜덤으로 할당되고, 이 가중치는 학습을 거치면서 조금씩 올바른 방향으로 수정되고, 충분한 횟수를 반복하면 손실 함수를 최소화 할 수 있는 가중치 값을 산출하게 된다. 이때의 반복을 훈련 반복(training loop)이라고 하고, 손실 함수가 전역 최저점에 도달하면 학습이 잘 되었다고 판단한다.

 

여담으로, 일반적인 매체에서 딥러닝은 마치 인간의 뇌를 모방한 것처럼 표현하곤 하지만, 사실 현재까지의 딥러닝은 인간의 뇌와는 크게 관련이 없다. 인간 뇌의 뉴런은 딥러닝에서의 뉴런과는 다른 모습을 가지고 다른 메터니즘으로 동작한다. 현재의 딥러닝은 단지 데이터로부터 표현을 학습하는 수학 모델일 뿐이다.

 


딥러닝의 장점

딥러닝은 범용적인 함수 근사 능력을 갖추고 있어, 클래스 간의 경계가 매우 복잡한 데이터를 분류하거나 복잡한 형태의 비선형 함수(nonlinear function)를 근사할 때 매우 뛰어난 성능을 보인다.

 

또한 딥러닝은 머신러닝과 달리 특징을 자동으로 추출한다. 기존 머신러닝 기법에서는 학습을 위해 도메인 전문가가 모델에 입력할 특징(feature)을 설계하고 데이터에서 직접 추출(feature extraction) 해야 했다. 이는 순전히 전문가에게 의지하는 방법이기에, 오류가 있거나 일관적이지 않은 추출 혹은 잘못된 설계가 발생할 우려가 있었고, 그렇게 될 경우 성능이 떨어지는 문제가 발생했다. 반면 인공 신경망은 중요한 특징에 높은 가중치(weights)를, 중요하지 않은 특성에는 낮은 가중치를 부여함으로써 특징을 자동으로 추출할 수 있다. 이처럼, 사람의 개입으로 인한 중단 없이 종단간(End-to-End)으로 진행할 수 있게 되면서 추론 시간이 빨라지고 성능 또한 높아졌다.

 

다음으로, 모델의 확장성이 뛰어나다는 장점이 있다. 딥러닝 모델은 뉴런 연결로 구성되어있으며, 문제의 복잡도에 따라 뉴런 수를 조절하는 것이 용이하다. 또한 뉴런을 실행할 대 병렬 처리가 가능한 구조로 되어있기 때문에 대규모 확장에도 무난하게 동작할 수 있다.

 

위 두 가지 장점은 또 다른 장점을 낳는데, 바로 비정형 데이터에 강하다는 것이다. 특징을 자동으로 추출하고 복잡한 데이터를 처리하는 것이 용이하여 이미지, 자연어, 음성 등 형태가 정해져 있지 않은 비정형 데이터에서 높은 성능을 보인다.

 

딥러닝의 한계

위와 같이, 딥러닝은 많은 장점과 잠재력을 갖추고 있지만 아직은 현실적인 한계와 어려움을 가지기도 한다.

 

딥러닝 모델은 머신러닝 모델에 비해 많은 파라미터(parameter)를 가진다. 이로 인해 딥러닝 모델은 머신러닝 모델에 비해 더욱 복잡한 문제를 해결할 수 있고 범용적인 문제에 적용될 수 있지만, 그런 만큼 많은 데이터를 필요로 한다.

 

데이터가 많이 필요하기 때문에 훈련을 위한 시간과 리소스도 많이 필요하며 많은 하이퍼 파라미터를 가지는 특성 탓에 최적의 모델과 훈련 방법을 찾는데에 시간이 많이 소요된다. StyleGAN을 예로 들면, 1개 GPU를 사용하는 경우 5주의 훈련시간이 필요하다. 데이터가 많을수록 성능이 좋아지고, GPU의 수가 늘어날수록 훈련시간이 줄어들지만, 이러한 점은 대기업과 중소기업의 차이를 더 크게 만드는 원인이 되기도 한다.

 

마지막으로, 당연스럽게도 복잡한 구조 탓에 오류를 파악하고 디버깅하는 것이 어렵다.

 

문제 해결을 위한 노력
물론 이러한 문제들을 해결하기 위한 방법은 계속해서 연구되고 있다.

 

매번 새로운 모델(속된 말로, 깡통 모델이라고도 한다)을 만들어 학습시키지 않고, 대용량 데이터로 사전 학습된 모델(pretrained model)을

이용해서 빠르게 학습하는 전이 학습(transfer learning) 방식은 다른 태스크를 위해 학습된 모델을 가져와 적은 양의 데이터로 튜닝함으로써 현재 태스크에 맞는 모델을 만들 수 있다는 점에서 주목받고 있다. 또한 여러 태스크의 학습 방식을 학습(learn to learn) 한 후 유사한 작업을 적은 데이터로 빠르게 학습하는 메타 학습(meta learning)도 점점 중요해지고 있다. 한 번 학습한 내용을 잊지 않고 계속해서 새로운 것을 누적해서 학습해 나가는 평생 학습(lifelong learning)도 비슷한 맥락에서 주목받고 있는 연구 주제이며, 성능에 큰 영향을 미치는 데이터만을 선별해서 학습시키는 액티브 학습(active learning) 방식에 대한 연구도 활발히 진행되고 있다.

 

또한 최적의 딥러닝 모델을 자동으로 찾아주는 신경망 구조 탐색(Neural Architecture Search, NAS) 연구 개발이 활발히 진행되고 있다. 구글은 AutoML이라는 개념을 제시했고, 이는 강화 학습 방식으로 최적의 모델을 생성하는 방법을 학습한다. 컨트롤러가 다양한 모델을 제시하면 제안된 모델을 실행해서 정확도를 평가하고 이를 보상(reward)으로 활용하여 컨트롤러를 재학습 시키는 방식이다.

 

구현을 도와주는 프레임워크나 라이브러리가 계속해서 발전되고 있으며, 복잡한 구조를 파악하기 쉽도록 도와주는 툴의 개발이 활발하게 진행되고 있다. 또한 설명 가능한 인공지능(eXplainable AI, XAI) 분야에서는 흔히 '블랙박스(black box)'라고 일컬어지던 신경망 모델 내부에서 일어나는 내용을 확인할 수 있는 기법들이 연구되고 있다.