본문 바로가기
휴지통/학부

머신러닝 기초 지식

by 신재권 2021. 9. 9.

머신러닝 소개

머신러닝은 데이터를 이용해서 명시적으로 정의되지 않은 패턴을 컴퓨터로 학습하여 결과를 만들어내는 학문 분야이다.

이 정의는 1959년에 아서 사무엘이 정의한 직접적으로 프로그래밍하지 않아도 컴퓨터가 스스로 학습할 수 있는 능력을 주는 학문 분야와 비슷하다.

1959년의 정의에서는 통계학적 머신러닝과 딥러닝에서 강조하는 데이터의 중요성은 미처 부각되지 않았다.

머신러닝은 데이터, 패턴인식, 컴퓨터를 이용한 계산이 합쳐져셔 만들어진 분야이다.


데이터

머신러닝은 항상 데이터를 기반으로 한다.

이런 의미에서 머신러닝은 여러 규칙을 단순 조합하는 고전적인 인공지능 시스템과는 다르다.

또한 사용자가 어떻게 동작할지 완전히 정의하는 컴퓨터 알고리즘과도 다른다.

머신러닝은 알고리즘이 아닌 데이터 학습을 통해 실행 동작이 바뀐다.

데이터를 기반으로 한다는 점에서 통계학과 가깝다고 볼 수 있다.


패턴인식

머신러닝은 통계학을 비롯해 딥러닝을 이용하여 데이터의 패턴을 유추하는 방법이 주축이 된다.

사용자가 일일히 정해놓은 패턴으로 데이터를 분석하는 것이 아니라 데이터를 보고 패턴을 추리는 것이 머신러닝의 핵심이다.

딥러닝의 발전으로 통계학적 머신러닝의 빛이 다소 바래긴 했지만, 통계학이야 말로 데이터에서 패턴을 찾아내는 학문이므로 여전히 머신러닝의 가장 기본적이며 핵심적인 개념이다.

딥러닝도 통계학에서 사용하는 전통방법과는 다른 방법을 사용하지만 패턴을 찾아내려고 학습한다는 점에서 그 목표는 동일하다.


컴퓨터를 이용한 계산

머신러닝은 데이터를 처리하고 패턴을 학습하고 계산하는데 컴퓨터를 사용한다.

그렇기 때문에 계산 그 자체도 머신러닝에서 아주 중요하다.

계산속도를 높이고, 또 더 많은 데이터를 효율적으로 다루고자 많은 연구가 진행되었다.

분산 처리 등 시스템 구성에 관한 연구가 한 예이다.

이런 점에서 응용 수학이나 통계학과 달리 머신러닝은 단순히 수학적인 모델의 구축이나 증명에만 그치는 것이 아니라 실제 데이터에 대해 계산해서 결과를 만들어낸다는 점에서 머신러닝은 전산학의 한 분야로 볼 수 있다.


머신러닝을 이해하는 데 필요한 배경지식

머신러닝은 패턴인식을 기반으로 컴퓨터를 이용해서 데이터를 처리하는 학문이다.

그러므로 머신러닝을 이해하려면 패턴인식에서 쓰이는 수학적 배경지식과 프로그래밍에 대한 지식이 필요하다.


수학(선형대수, 미분, 통계, 확률)

머신러닝의 패턴인식 기법은 대부분 수치 연산으로 동작한다.

그 중 행렬연산(특히 행렬곱)과 역행렬 개념을 많이 사용한다.

하지만 더 깊이 있는 내용을 이해하려면 선형대수, 특히 행렬 분해에 대한 지식이 필요하다.

또한 미분에 대한 지식도 필요하다.

최솟값/최대값 개념과 1차 미분함수만 알아도 되지만 미적분학과 최적화에 대해 알면 더욱 좋다.

통계학 지식도 약간 필요하다.

머신러닝의 많은 부분이 통계학과 접근 방법이 비슷하기 때문이다.

분포란 무엇인지, 정상분포 혹은 가우스 분포란 무엇인지, 왜 중요한지, 상관관계란 무엇인지, 회귀란 무엇인지 등을 알면 도움이 된다.

또한 확률 지식도 필요하다.

확류르이 정의와 조건부 확률이 중요하다.


프로그래밍

머신러닝 라이브러리가 이미 존재하므로 밑바닥부터 모든 것을 만들지 않아도 머신러닝 시스템을 충분히 구축할 수 있다.


머신러닝 발전사

머신러닝의 역사와 현재 트렌드

머신러닝의 시작은 인공지능이라 볼 수 있다.

머신러닝과 인공지능 모두 컴퓨터를 이용해서 지능적인 작업을 하는 방향으로 발전해왔다.

어떻게 보면 머신러닝은 인공지능이라는 큰 학문의 한 분야라고도 생각할 수 있다.

머신러닝은1950년에 인공지능이라는 개념으로 태동했고, 신경망 시대를 거쳐 통계학적 머신러닝과 빅데이터 시대를 지나 지금의 딥러닝 시대에 다다랐다.


고전적 인공지능 시대

컴퓨터가 발명된 이래로 이 신기한 기계가 어떤 일을 할 수 있는지에 대한 관심이 끊이지 않았다.

예를 들어 1950년에 유명한 컴퓨터 학자인 앨런 튜링은 인공지능을 판별하는 튜링 테스트를 제안했는데, 이는 기계가 인간과 얼마나 비슷하게 대화하는지를 기준으로 기계의 지능을 판별하는 테스트이다.


신경망 시대

1957년에 퍼셉트론이라는 기초적인 신경망이 개발되었다.

이를 여러개 묶어 복잡한 신경망을 구성하면 입력과 출력을 굉장히 유연하게 연결할 수 있었지만, 당시 신경망에는 여러가지 문제점이 있었다.

우선 그 시대에는 구할 수 있는 데이터가 굉장히 한정적이라 신경망 성능이 생각보다 신통치 않았고, 기초 이론의 부족으로 한정적인 패턴만 학습이 가능했다.

많은 학자가 신경망 구축에 뛰어들었지만, 예상보다 결과가 잘 나오지 않아 침체된 상태가 이어졌다.

이 시기를 인공지능의 겨울이라고 부르곤 한다.


통계학적 머신러닝 시대

1990년대에 들어 통계학을 전산학과 접목시켜 대규모 데이터에서 패턴을 찾는 시도가 기존에 비해 진일보된 성과를 냈다.

기존의 방법과 가장 큰 차이점은 데이터에 훨씬 더 중요한 비중을 두었다는 것이다.

그 결과 기존의 그 어떤 방법보다 성능이 좋았기 떄문에 큰 관심을 받고 산업의 여러 분야에 도입되었다.

이 시기에 러신머닝이라는 용어가 등장했으며, 차후에 딥 러닝이 나온 이후 이런 통계학에 중심을 둔 기법들을 통계학적 머신러닝이라고 부르게 됬다.


빅데이터 시대

통계학적 머신러닝은 웹에서 쏟아지는 데이터, 대용량 저장장치, 분산 처리 기술과 결합하여 엄청난 시너지를 만들었다.

빅데이터라는 용어가 2010년대부터 유행헀는데, 빅데이터 시대에는 기존보다 더 큰 데이터를 분석하기 위해 기존보다 훨씬 더 큰 규모의 머신러닝 시스템을 만들게 되고 그 덕택에 성능도 더욱 좋아지게 됬다.


딥러닝 시대

데이터가 많아지고 연산 능력이 증가하면서 (특히 GPU가 발전하면서) 머신러닝 연구자들은 예전 신경망 이론에 다시 한번 눈길을 돌렸다.

기존의 신경망 시대보다 훨씬 더 많은 데이터와 새로 개발된 이론을 합치자 단순히 통계학적 머신러닝만 사용하는 모델을 넘어서는 결과를 얻을 수 있게 되었다.

기존의 신경망보다 훨씬 더 복잡한 , 즉 깊이가 있는 신경망을 사용하게 되었기 떄문에 이를 딥러닝이라고 부르게 된다.

딥러닝 시대의 신경만 연구는 60년대의 신경망 연구와는 상황과 성과가 달랐다.

오랜 기간 연구가 진행된 통계학적 머신러닝을 기존의 신경망에 접목했고, 데이터가 폭발적으로 증가해서 복잡한 신경망을 학습할 만한 기반도 생겨났다.

그 덕분에 성능이 이전보다 훨씬 더 잘나오게 되었다.


현재 트렌드

현재 머신러닝은 대량의 데이터를 바탕으로 하는 딥러닝 기법을 주로 사용한다.

기존에는 해결하기 힘들었던 음성 인식, 번역, 이미지 인식에서 특히 좋은 성과를 보이고 있다.

이러한 성과는 다음과 같은 새로운 연구 결과에 의해 가능해졌다.

  • 성격이 다른 데이터를 연관시켜 데이터를 더 효율적으로 사용하는 딥러닝 구조의 개발
  • 통계학적 머신러닝의 기법을 조합해 더 효율적으로 사용하는 딥러닝(원샷, 제로샷) 기술의 발전
  • 머신러닝, 특히 딥러닝을거대 규모로 빠르게 연산할 수 있는 시슽메의 발전(하드웨어와 소프트웨어 모두)
  • 딥러닝의 더 효율적인 학습을 위한 기술(드롭아웃, 비동기 SGD 등)의 발전
  • 데이터에 대한 더 큰 관심으로 ㅇ니해 양적, 질적으로 크게 성장한 데이터 수집 기술의 발전

머신러닝의 3가지 관점

앞에서 설명한 발전 과정에서 다양한 머신러닝 기법이 등장했다.

이러한 기법들은 머신러닝의 많은 요소 중 어떤 부분을 더 중시하는지가 조금씩 다르다.

이에대한 여러가지 논의가 있지만, 여기서는 제이슨 아이스너의 관점을 따르도록 한다.

제이슨 아이스너는 머신러닝에 3가지 중요한 관점이 있다고 본다.

바로 통찰력, 데이터 적합성, 이론적 엄정성이다.

제이슨은 이 3가지 관점으로 머신러닝 기법의 성격을 설명할 수 있다고 주장한다.

실제 머신러닝 기법은 3가지에 대한 중시의 정도에 따라 삼각형 안쪽에 존재하게 된다.


위치 : 위

추구하고자 하는 방향 : 통찰력, 통찰력 있는 모델

시작점 : 데이터에 대한 지식

결과 : 데이터에 대한 믿음


위치 : 오른쪽

추구하고자 하는 방향 : 데이터 적합성, 데이터 자체에 얼마나 가까운 모델을 만들 수 있는지

시작점 ; 많은 데이터

결과 : 데이터에 잘맞는 모델


위치 : 왼쪽

추구하고자 하는 방향 : 이론적 엄정성, 기법을 분석하기 쉬운지, 계산이 쉽게 가능한지

시작점 : 증명이 가능한 수학 이론

결과 : 잘 정의되고 보장된 성능


먼저 삼각형 맨 위쪽에 있는 통찰력에 대해서 알아보자.

통찰력을 증시하는 경우는 결국 데이터가 어떤 패턴을 가지고 있다고 믿으며, 그 패턴에 대한 지식을 확보하는 것을 중요시한다는 뜻이다.

이처럼 데이터에 대한 믿음을 중시하는 대표적인 기법으로 베이지언 기법이 있다.

베이지언 기법은 현재의 가정에서 부족한 부분을 보완할 수 있는 데이터를 특히 중요하게 생각한다.


삼각형 오른쪽에 위치한 데이터 적합성을 중시하는 기법들은 관측된 데이터를 가장 중요하게 생각한다.

데이터에 대한 지식이 희박한 경우 또는 데이터가 아주 많아서 기존 지식이 없어도 머신러닝 기법이 잘 동작하는 상황을 가정한다.

이 경우는 노이즈에 영향을 많이 받으므로 보다 많은 데이터를 이용하여 노이즈의 영향을 줄이는 기술이 많이 쓰인다.

대표적으로 딥러닝과 랜덤 포레스트가 여기에 해당한다.

둘 다 기업에서 많이 쓰는데, 모델이 수학적으로 간단해서 실제 구현하기 쉽고 스케일을 키우기도 좋기 때문이다.

통계학에서 말하는 베이지언과 빈도론자 중에 빈도론자에 대응하는 부분이다.


삼각형 왼쪽의 이론적 엄정성은 머신러닝 알고리즘 이론에 대한 분석에 집중한다.

머신러닝 알고리즘이 어느 정도의 성능을 보장하고, 거대한 스케일의 데이터를 얼마나 쉽게 다루며, 잘못될 확률이 얼마나 적은지에 대한 해답을 구하는 부분이다.

많은 머신러닝 이론이 성능 보장을 위해 개발되었다.

이에 해당하는 대표적인 기봅으로는 스펙트럴 러닝, 서포트 벡터 머신, 볼록 최적화 가 있다.

사실 이 관점은 너무 이론적인데 치중하므로 쓸모없는게 아닌가 하는 의문을 가질 수 있지만, 수학적으로 확실하게 증명되는 성능에 대한 보장은 의학, 로봇, 무인자동차, 우주여행 등의 분야에서 매우 중요하다.


최근에는 이용 가능한 데이터가 증가함에 따라 데이터 적합성에 중점을 둔 기법이 주로 개발된다.

하지만 한 가지 관점만 중요하게 여기는 머신러닝 기법은 없다.

앞서 언급한 통찰력, 이론적 엄정성, 데이터 적합성에 대한 중요도를 다르게 두되 모두 고려하고 있다고 해야 할것이다.

이 3가지 관점은 머신러닝 기법이 잘 동작하는 데 필요한 핵심 연구방향이다.

앞으로 머신러닝 기법을 분류해서 살펴볼 떄 이 3가지 관점을 생각해보는 것이 이해와 분석에 도움이 될 것이다.


머신러닝의 분류

머신러닝의 기법은 풀고자 하는 목표에 따라 크게 지도학습, 비지도학습, 강화학습으로 분류할 수 있으며, 풀어내는 기법에 따라 통계와 딥러닝으로 분류할 수 있다.


지도학습

지도학습은 주어진 데이터와 레이블(정답)을 이용해서 미지의 상태나 값을 예측하는 학습 방법이다.

대부분의 머신러닝 문제는 지도학습에 해당한다./

예를 들어 예전의 주식 시장 변화를 보고 내일의 주식 시장 변화 예측하기, 문서에 사용되는 단어를 보고 해당 문서의 카테고리 분류하기, 사용자가 구매한 상품을 토대로 당므에 구입할 상품 예측하기 등이 여기에 속한다.


비지도학습

비지도학습은 데이터와 그에 주어진 레이블 간의 연관관계를 구하는것이 아니라 데이터 자체에서 유용한 패턴을 찾아내는 학습 방법이다.

예를 들어 비슷한 데이터끼리 묶는 군집화, 데이터에서 이상한 점을 찾아내는 이상검출, 데이터 분포 추측이 있다.

지도학습과 가장 다른 점은 데이터가 주어졌을 때 특정 값을 계산하는 함수를 만드는 대신 데이터의 성질을 직접적으로 추측한다는 것이다.


강화학습

강화학습은 기계(에이전트)가 환경과의 상호작영(선택과 피드백의 반복)을 통해 장기적으로 얻은 이득을 최대화하도록 하는 학습 방법이다.

지도학습과는 달리, 강화학습의 경우에는 입력값-출력값(레이블)의 쌍이 명시적으로 정해지지 않는다.

예를 들어 바둑 프로그램이 바둑을 둔다고 했을 때 현재 판에서 다음 수를 선택하는 것을 학습하는 과정을 지도학습이라고 볼 수 있다.

그런데 다음 수만을 고려하는게 아니라 게임 승패까지의 전체 수를 고려하여 게임에서 이길경우 점수를 받고, 그렇지 않으면 점수를 받지 못하도록 하여 일련의 이기는 수를 학습하는 과정은 강화학습이다.

강화학습에 대한 다른 예로 화성 탐사 로봇이 경로를 탐색하는 과정을 들 수 있다.

지구에서는 화성의 환경에 대한 데이터를 얻을 수 없으므로 , 로봇은 실제로 환경이 어떤지에 대한 정보가 거의 없다.

따라서 어디로 갈지를 판단하고자 할 때 , 현재 가진 정보를 이용해 다음 행동 정하기와 새로운 정보를 얻기 위해 가보지 않은 곳 가기 중에서 하나를 선택해야 한다.

강화학습은 각각의 행동에 대한 피드백을 받아서 다음 행동을 정하는 알고리즘을 학습해 나간다.


지도학습의 세부 분류

지도학습은 세부적으로 어떤 것을 예측하느냐에 따라 다시 회귀, 분류, 랭킹으로 구분할 수 있다.


회귀와 분류

지도학습의 경우 데이터를 통해 학습하는 레이블이 어떤 성질을 지니는지에 따라서 크게 회귀와 분류로 구분한다.

회귀의 경우 숫자값을 예측한다.

대개 연속된 숫자(예를 들면 실수)를 에측하는데, 예를 들어 기존 온도 추이를 보고 내일 온도를 예측하는 일을 들 수 있다.

분류는 입력 데이터들을 주어진 항목들로 나누는 방법이다.

회귀와는 다르게 항목 1과 항목2는 서로 다른 수치값이 아니라 서로 다른 항목임을 나타낸다.

예를 들어 어떤 문서가 도서관 어떤 분류에 해당하는지 고르는 경우를 들 수 있다.

회귀와 분류는 서로 다른것처럼 보일 수 있지만, 회귀를 통해 손쉽게 분류를 구현하거나 분류를 통해 회귀를 구현할 수 있을 만큼 유사하다.

예를 들어 어제의 온도와 구름의 양으로 내일의 날씨가 좋을 지 안좋을지 예측하는 분류 시스템을 만든다고 했을 떄, 날씨가 좋을 경우를 1, 나쁠 경우를 0으로 두어 회귀를 이용하여 날씨가 좋을 확률을 0부터 1사이의 값으로 구하고 , 이 값이 0.8이상이면 좋음, 아니면 나쁨으로 분류할 수 있다.

반대로 데이터를 받았을 때 먼저 분류를 구현한다음, 그 분류에 다라서 연속적인 숫작밧을 예측하는 방법을 생각해 볼 수 있다.

예를 들어 사용자 그룹을 행복한 사용자, 보통 사용자, 불행한 사용자로 일차 분류 한 다음에 사용자 기본이라는 연속적인 숫자값을 각각의 그룹에 +1, 0 , -1과 같은 식으로 부여하면 분류를 이용해 회귀한 것이 된다.

이렇게 각각 상호 전환이 가능하지만 수학적으로 더 간단하게 정의되는 회귀가 머신러닝의 더 기본적인 도구로 쓰인다.


추천 시스템과 랭킹학습

추천 시스템은 상품에 대한 사용자 선호도(별점, 구매여부)를 예측하는 시스템이다.

상품과 사용자 데이터를 이요아하여 값 혹은 레이블을 예측하는 것이므로 회귀의 일종으로도 볼 수 있다.

하지만 그 기법과 세팅이 특이해서 따로 분류하여 설명한다.

예를 들어 온라인 동호회에서 영화를 추천한다고 가정하자.

다양한 추천 방법이 있지만, 각 영화에 대한 평점 데이터를 이용하여 아직 평점이 없는 영화 점수를 예측하고 그중 점수가 가장 높은 영화를 추천하는 방식을 취할 수 있다.

회귀와 다른 점은 입력과 출력이 아니라 관객과 영화, 관객과 점수 등 다양한 관계를 고려한다는 것이다.

랭킹학습은 회귀에서처럼 각 입력 데이터의 출력값을 예측하는 것이 아니라 데이터의 순위를 예측한다.

예를 들어 영화 평점을 가지고 특정 관객이 각 영화에 대해 몇점을 줄지 예측하는 것은 회귀이다.

반면 좋아할 만한 영화 10편을 추천한다면 랭킹학습에 해당한다.


비지도학습의 세부 분류

비지도학습은 지도학습과는 달리 데이터를 직접 모델링하는 기법이다.

대표적으로 군집화의 토픽 모델링, 밀도 추정, 차원 축소 등의 기법이 있다 .


군집화와 토픽 모델링

군집화(클러스터링)는 비지도학습의 분류 중 하나로 비슷한 데이터들을 묶어서 큰 단위로 만드는 기법이다.

즉 비슷한 데이터를 묶어서 몇 개의 그룹을 만들어 데이터 패턴을 파악한다.

예를 들어 신문기사를 수집하여 군집화를 적용해보면 비슷한 내용의 기사가 스포츠 클러스터 혹은 경제 클러스터 등으로 묶이게 된다.

토픽 모델링은 군집화와 매우 유사하지만 주로 텍스트 데이터에 대해 사용된다.

토픽 모델링은 보통 한 문서가 토픽에 따라 만들어지고 그에 다라 단어가 생성되어 문서가 쓰여진다는 가정하에 접근한다.

군집화는 더 일반적인 데이터에 해당되기 때문에 가정의 성격이 크게 다르다.

또한 많은 군집화 기법이 문서 하나를 클러스터 하나로 분류하지만, 토픽 모델링은 일반적으로 관련 정도를 확률로 표현한다. (에를 들면 0.5는 스포츠, 0.4는 연애 , 0.1은 경제)


밀도 추정

밀도 추정은 관측한 데이터로부터 데이터를 생성한 원래의 분포를 추측하는 방법이다.

예를 들어 각국의 학생들의 키와 몸무게를 모아 놓은 통계자료에서 키와 몸무게의 관계를 분석한다고 가정하자.

단순히 각각의 경우에 해당하는 데이터 수를 세는 방법도 있지만 여러 가지 다른 기법으로 더 정확한 분포를 얻을 수 도 있다.

커널 밀도 추정과 가우스 혼합 모델이 대표적인 기법이다.


차원 축소

차원 축소는 말 그대로 데이터의 차원을 낮추는 기법으로 디멘셔널리티 리덕션이라고도 한다.

보통은 데이터가 복잡하고 높은 차원을 가져와서 시각화하기 어려울 때 2차원이나 3차원으로 표현하기 위해 사용한다.

여러가지 기법이 있지만, 일반적으로 주요 패턴을 찾아서 해당 패턴을 낮은 차원에서 보존하는 방식으로 이루어진다.

이 기법은 독립적으로도 쓰이지만, 데이터에 적합한 머신러닝 기법을 찾는 데이터 분석 초기 단계에 적용하기도 한다.

대표적인 기법으로 주성분 분석(PCA) 및 특잇값 분해가 있다.


딥러닝

딥러닝은 신경망을 층층히 쌓아서 문제를 해결하는 기법의 총칭이다.

딥 러닝은 머신러닝이 풀고자하는 목표에 따라 분류한 개념이 아니며, 사용하는 기법이 특정 형태를 가지는 것을 말한다.

즉 앞서 설명한 지도학습이나 비지도학습을 딥러닝을 이용해서 풀 수도 있고, 통계학적인 방법을 이용해서 풀 수도 있다.

이는 데이터양에 의존하는 기법으로, 다른 머신러닝 기법보다 문제에 대한 가정이 적은 대신 다양한 패턴과 경우에 유연하게 대응하는 구조를 만들어 많은 데이터를 이용하여 학습시키는 것으로 모델의 성능을 향상시킨다.

즉 , 큰 데이터에서 잘 동작하는 방법이다.

최근에는 공공기관과 연구기관에서 데이터를 공개하는 추세이고 이미 공개된 데이터가 많아 그러한 데이터를 잘 활용하면 다른 기법보다 딥러닝의 성능이 우수한 경우가 많다.

하지만 데이터가 많더라도 경우의 수가 너무 많거나 패턴이 너무 복잡하면 제대로 동작하기 어려울 수 있다.

이를 위해 많은 연구가 이루어지고 있으며, 딥러닝을 다른 통계적 머신러닝 기법과 함께 적용하는 방법도 개발중이다.

'휴지통 > 학부' 카테고리의 다른 글

네트워크 모델  (0) 2021.09.27
컴퓨터 하드웨어  (0) 2021.09.14
화일의 기본개념(1)  (0) 2021.09.09
컴퓨터 그래픽스의 응용  (0) 2021.09.08
네트워크의 기초 용어와 기능  (0) 2021.09.08