1.1 머신러닝 소개
"데이터를 이용해서 명시적으로 정의도지 않은 패턴을 컴퓨터로 학습하여 결과를 만들어내는 학문 분야".
데이터, 패턴인식, 컴퓨터를 이용한 계산
1.2 머신러닝을 이해하는 데 필요한 배경지식
1.2.1 수학(선형대수, 미분, 통계, 확률)
1.2.2 프로그래밍
1.3 머신러닝 발전사
1.3.1 머신러닝의 역사와 현재 트렌드
고전적 인공지능 시대
1950년대 유명한 컴퓨터 학자인 앨런 튜링은 인공지능을 판별하는 튜링 데스크를 제안했는데, 이는 기계가 인간과 얼마나 비슷하게 대화하는지를 기준으로 기계의지능을 판별하는 테스트.
신경망 시대
1957년에 퍼셉트론(perceptron)이라는 기초적인 신경망이 개발. 이를 여러 개 묶어 복잡한 신경망을 구성하면서 입력과 출력을 굉장히 유연하게 연결할 수 있었지만, 당시 신경망에는 여러가지 문제점이 있었습니다. 우선 그 시대에는 구할 수 있는 데이터가 굉장히 한정적이라 신경망 성능이 생각보다 신통치 않았고, 기초 이론의 부족으로 한정적인 패턴만 학습이 가능했습니다. 많은 학자가 신경망 구축에 뛰어들었지만, 예상보다 결과가 잘 나오기 않아 침체된 상태가 이어졌습니다. 이 시기를 '인공지능의 겨울'이라 부르곤 합니다.
통계학적 머신러닝 시대
1990년대에 들어 통계학을 전산학과 접목시켜 대규모에서 패턴을 찾는 시도가 기존에 비해 진일보된 성과를 냈습니다. 기존의 방법과 가자으 큰 차이점은 데이터에 훨씬 더 중요한 비중을 두었다는 것입니다. 그 결과 기존의 그 어떤 방법보다 성능이 좋았기 때문에 큰 관심을 받고 산업의 여러 분야에 도입되었습니다. 이 시기에 머신러닝이라는 용어가 등장 했으며, 차후에 딥러닝이 나온 이후 이런 통계학에 중심을 둔 기법들을 통계학적 머신러닝알고 부르게 됩니다.
빅데이터 시대
통계학적 머신러닝은 웹에서 쏟아지는 데이터, 대용량 저장장치, 분산 처리 기술과 결합하여 엄청난 시너지를 만들었습니다. 빅데이터는 용어가 2010년대부터 유행했는데, 빅데이터 시대에는 기존보다 더 큰 데이터를 분석하기 위해 기존보다 휠씬 더 큰 규모의 머신러닝 시스템을 만들게 되고 그 덕택에 성능도 더욱 좋아지게 됩니다.
딥러닝 시대
데이터가 많아지고 연산 능력이 증가하면서(특히 GPU가 발전하면서) 머신러닝 연구자들은 예전 신경망 이론에 다시 한번 눈길을 돌렸습니다. 기존의 신경망 시대보다 훨씬 더 많은 데이터와 새로 개발된 이론을 합치자 단순히 통계학적 머신러닝만 사용하는 모델을 넘어서는 결과를 얻을 수 있게 되었습니다. 기존의 신경망보다 훨씬 더 복잡한, 즉 깊이가 깊은 신경망을 사용하게 되었기 때문에 이를 딥러닝이라고 부르게 됩니다. 딥러닝 시대의 신경망 연구는 60년대의 신경망 연구와는 성황과 성과가 달랐습니다. 오랜 기간 연구가 진행된 통계학적 머신러닝을 기존의 신경망에 접목했고, 데이터가 폭발적으로 증가해서 복잡한 신경망을 학습할 만한 기반도 생겼습니다. 그 덕분에 성능이 이전보다 훨씬 잘 나오게 되었습니다.
현재 트렌드
현재 머신러닝은 대량의 데이터를 바탕으로 하는 딥러닝 기법을 주로 사용합니다. 기존에는 해결하기 힘들었던 음성 인식, 번역, 이미지 인식에서 특히 좋은 성과를 보이고 있습니다. 이러한 성과는 다음과 같은 최근의 새로운 연구 결과에 의해 가능했습니다.
- 셩격이 다른 데이터를 연관시켜서 데이터를 더 효율적으로 사용하는 딥러닝 구조의 개발. 예) 비디오에 있는 자막과 이미지를 동시에 학습시키거나 영어, 프랑스어, 스페인어를 동시에 학습시키기
- 통계학적 머신러닝의 기법을 조합해 데이터를 더 효율적으로 사용하는 딥러닝(원샷, 제로샷 러닝) 기술의 발전
- 머신러닝, 특히 딥러닝을 거대 규모로 빠르게 연산할 수 있는 시스템의 발전(하드웨어 소프트웨어 모두)
- 딥러닝의 더 효울적인 학습을 위한 기술(드롭아웃, 비동기 SGD등)의 발전
- 데이터에 대한 더 큰 관심으로 인해 양적, 질적으로 크게 성장한 데이터 수집 기술의 발전
1.3.2 머신러닝의 3가지 관점
통창력, 데이터 적합성, 이론적 엄정성
통찰력, 통찰력 있는 모델 데이터에 대한 지식 데이터의 대한 믿음
데이터 적합성, 데이터 자체에 얼마나 가까운 모델을 만들 수 있는지 많은 데이터 데이터에 잘 맞는 모델
이론적 엄정성. 기법을 분석하기 쉬운지, 계산이 쉽게 가능한지 증명이 가능한 수학이론 잘 정의되고 보장된 성능
통찰력을 중시하는 경우는 결국 데이터가 어떤 패턴을 가지고 있다고 믿으며, 그 패턴에 대한 지식을 혹보하는 것을 중요시한다는 뜻입니다. 이처럼 데이터에 대한 믿음(prior라고 부릅니다)을 중시하는 대표적인 기법으로 베이지언 기법이 있습니다. 베이지언 기법은 현재의 가정에서 부족한 부분을 보완할 수 있는 데이터를 특히 중요하게 생각합니다.
데이터 적합성을 중시하는 기법들은 관측된 데이터를 가장 중요하게 생각합니다. 데이터에 대한 지식이 희박한 경우 또는 데이터가 아주 많아서 기존 지식 없이도 머신러닝 기법이 잘 동작하는 상항을 가정합니다. 이 경우는 노이즈에 영향을 많이 받으므로 보다 많은 데이터를 이용하여 노이즈의 영향을 줄이는 기술이 많이 쓰입니다 대표적으로 딥러닝과 랜덤 포레스트가 여기에 해당합니다. 둘 다 기업에서 많이 쓰는데, 모델이 수학적으로 간단해서 실제 구현하기 쉽고 스케일을 키우기도 좋기 때문입니다. 통계학에서 말하는 베이지언과 빈도론자(프리쿼티스트)중에 빈도론자에 대앙하는 부분입니다.
이론적 엄정성은 머신러닝 알고리즘 이론에 대한 분석에 집중합니다. 머신러인 알고리즘이 어느 정도의 성능을 보장하고, 거대한 스케일의 데이터를 얼마나 쉽게 다르며, 잘못될 확률이 얼마나 적은지에 대한 해답을 구하는 부분입니다. 많은 머신러닝 이론이 성능 보장을 위해 개발되었습니다. 이에 해당하는 대표적인 기법으로 스팩트럴 러닝, 서포트 벡터 머신(SVM), 볼록 최적화가 있습니다. 사실 이 관점은 너무 이론적인 데 치중하므로 쓸모없는 게 아닌가 하는 의문을 가질 수도 있습니ㅏㄷ 하지만 수학적으로 확실하게 증명되는 성능에 대한 보장은 의학, 로봇, 무인자동차, 우주여행등의 분야에서 매우 중요합니다.
최근에는 이용 가능한 데이터가 증가함에 따라 데이터 적합성에 중점을 둔 기법이 주로 개발됩니다. 하지만 한 가지 관점만 중요하게 여기는 머신러닝 기법은 없다고 할 수 있습니다. 앞서 언급한 통찰력, 이론적 엄정성, 데이터 적합성에 대한 중요도를 다르게 두되 모두 고려하고 있다고 해야 할 것 입니다. 이 3가지 관점은 머신러닝 기법이 잘 동작하는데 필요한 핵심 연구 방향입니다. 앞으로 머신러닝 기법을 분류해서 살펴볼 때 이 3가지 관점을 생각해보는 것이 이해와 분석에 도움이 될 것입니다.
1.4 머신러닝의 분류
머신러닝 기법은 풀고자 하는 목표에 따라 크게 지도학습, 비지도학습, 강화학습으로 분류할 수 있으며, 풀어내는 기법에 따라 통계와 딥러닝으로 분류할 수 있습니다.
1.4.1 지도학습, 비지도학습, 강화학습
머신러닝은 풀고자 하는 목표에 따라 3가지로 나누어볼 수 있습니다.
지도학습은 주어진 데이터와 레이블(정답)을 이용해서 미지의 상태나 값을 예측하는 학습 방법입니다. 대부분의 머신러닝 문제는 지도학습에 해당합니다. 예를 들어 '예전의 주식 시장 변화를 보고 내일의 주식 시장 변화 예측하기', '문서에 사용된 단얼르 보고 해당 문서의 카테고리 분류하기', '사용자가 구매한 상품을 토대로 다음에 구입할 상품 예측하기' 등이 여기에 속합니다.
비지도학습은 데이터와 그에 주어진 레이블 간의 연관 관계를 구하는 것이 아니라 데이터 자체에서 유용한 패턴을 찾아내는 학습 방법입니다. 예를 들어 비슷한 데이터끼리 묶는 군집화, 데이터에서 이상한 점을 찾아내는 이상 검출, 데이터 분포 추측이 있습니다. 지도학습과 가장 다른 점은 데이터가 주어졌을 때 특정 값을 계산하는 함수를 만드는 대신 데이터의 성질을 직접적으로 추측한다는 것입니다.
강화학습은 기계(에이전트)가 환경과의 상호작용(선택과 피드백의 반복)을 통해 장기적으로 얻는 이득을 최대화하도옥 하는 학습방법입니다. 지도학습과는 달리, 강화학습의 경우에는 입력값-출력값(레이블)의 쌍이 명시적으로 정해지지 않습니다. 예를 들어 바둑 프로그램이 바둑을 둔다고 했을 때 현재 판에서 다음 수를 선택하는 것을 학습하는 과정을 지도학습이라고 볼수 있습니다. 그런데 다음 수만을 고려하는게 아니라 게임 승패까지의 전체 수를 고려하여 게임에서 이길 경우 점수를 받고 그렇지 않으면 점수를 받지 못하도록 하여 일련의 이기는 수를 학습하는 과정은 강화학습니다.
강화학습에 대한 다른 예로 화성 탐사 로봇이 경로를 탐색하는 과정을 들 수 있습니다. 지구에서는 화성의 환경에 대한 데이터를 얻을 수 없으므로, 로봇은 실제로 환경이 어떤지에 대한 정보가 거의 없습니다. 따라서 어디로 갈지를 판단하고자 할 때, '현재 가진 정보를 이용해 다음 해동(action) 정하기'(이를 이용(exploitation이라고 합니다)와 '새로운 정볼르 얻기 위해 가보지 않은 곳 가기'(이를 탐색(exploration이라고 합니다) 중에서 하나를 선택해야 겠지요. 강화학습은 각각의 행동에 대한 피드백을 받아서 다음 행동을 정하는 알고리즘을 학습해나갑니다.
1.4.2 지도학습의 세부 분류
지도학습은 세부적으로 어떤 것을 예측하는냐에 따라 다시 희귀, 분류, 랭킹으로 구분할 수 있습니다.
1.4.2.1. 희귀와 분류
지도학습의 경우 데이터를 통해 학습하는 레이블이 어떤 성질을 지니는지에 따라서 크게 희귀(regression)와 분류(classification)로 구분합니다.
희귀의 경우에는 숫자값을 예측합니다. 대개 연속된 숫자(예를 들면 실수)를 얘측하는데, 예를 들어 기존 온도 추이를 보고 내일 온도를 예측하는 일을 들 수 있습니다.
분류는 입력 데이터들을 주어진 항목들로 나누는 방법입니다. 희귀와는 다르게 항목'1'과 항목'2'는 서로 다른 수치값이 아니라 서로 다른 항목임을 나타냅니다. 예를 들어 어떤 문서가 도서관 어떤 분류에 해당하는지 고르는 경우를 들 수 있습니다.
희귀와 분류는 서로 다른 것처럼 보일 수도 있지만, 희귀를 통해 손싑게 분류를 구현하거나 분류를 통해 희귀를 구현할 수있을 만큼 유사합니다. 예를 들어 어제의 온도와 구름의 양으로 내일의 날씨가 좋을지 안 좋을지 예측하는 분류시스템을 만든다고 했을 때, 날씨가 좋을 경우를 1, 나쁠 경우를 0으로 두어 희귀를 이용하여 날씨가 좋을 확률을 0부터 1 사이의 값으로 구하고, 이 값이 0.8이상이면 좋음, 아니면 나쁨으로 분류할 수 있습니다. 반대로 데이터를 받았을 때 먼저 분류를 구현한 다음, 그 분류에 따라서 연속적인 숫자값을 예측하는 방법을 생각해 볼 수 있습니다. 옐르 들어 사용자 그룹을 '행복한 사용자', '보통 사용자', '불행한 사용자'로 일차 분류한 다음에 '사용자 기분'이라는 연속적인 숫자값을 각각의 그룹에 (+0.1, 0, -1과 같은 식으로)부여하면 분류를 이용해서 휘귀한 것이 됩니다.
이렇게 각각 상호 전환이 가능하지만 수학적으로 더 간단하게 정의되는 '회귀'가 머신러닝의 더 기본적인 도구로 쓰입니다.
1.4.2.2 추천 시스템과 랭킹학습
추천 시스템은 상품에 대한 사용자 선호도(별점, 구매 여부 등)를 예측하는 시스템입니다. 상품과 사용자 데이터를 이용하여 값 혹은 레이블을 예측하는 것이므로 회귀의 일종으로도 볼 수 있습니다. 하지만 그 기법과 세팅이 특이해서 따로 분류하여 설명하겠습니다. 예를 들어 온라인 동호회에서 영화를 추천한다고 가정합시다. 다양한 추천 방법이 있겠지만, 각 영화에 대한 평점 데이터를 이용하여 아직 평점이 없는 영화 점수를 예측하고 그중 점수가 가장 높은 영화를 추천하는 방식을 취할 수 있습니다. 회귀와 다른점은 입력과 출력이 아니라 관객과 영화, 관객과 점수 등 다양한 관계를 고려한다는 것 입니다.
랭킹학습(learnning to rank)은 희귀에서처럼 각 입력 데이터의 출력값을 예측하는 것이 아니라 데이터의 순휘를 예측합니다. 예플 들어 영화 평점을 가지고 특정 관객이 각 영화에 대해 몇 점을 줄지 예측하는 것은 회귀입니다. 반면 좋아할 만한 영화 10편을 추천한다면 랭킹학습에 해당 합니다.
1.4.3 비지도학습의 세부 분류
비지도학습은 지도학습과는 달리 데이터를 직접 모델링하는 기법입니다. 대표적으로 군집화와 토픽 모델링, 밀도 추청, 차원 축소 등의 기법이 있습니다.
1.4..3.1 군집화와 토픽 모델링
군집화(클러스터링)는 비지도학습의 분류 중 하나로 비슷한 데이터들을 묶어서 큰 단위로 만드는 기법입니다. 즉, 비슷한 데이터들을 묶어서 몇 개의 그불을 만들어 데이터 패턴을 파악합니다. 옐르 들어 신문 기사를 수집하여 군집화를 적용해보면 비슷한 내용의 기사가 스포츠 클러스터 혹은 곙제 클러스터 등으로 묶이게 됩니다.
토픽 모델링은 군집화와 매유 유사하지만 주로 텍스트 데이터에 대해 사용됩니다. 토픽 모델링은 보통 한 문서가 토픽에 따라 만들어지고 그에 따라 단어가 생성되어 문서가 쓰여진다는 가정에 접근합니다. 군집화는 더 일반적인 데이터에 해당되기 때문에 가정의 성격이 크게 다릅니다. 또한 많은 군집화 기법이 문서 하나를 클러스터 하나로 분류하지만, 토픽 모델링은 일반적으로 관련 정보를 확률로 표현합니다(예를 들면 0.5는 스포츠, 0.4는 연예, 0.1은 경졔).
1.4.3.2 밀도 추정
밀도 추정은 관측한 데이터를 생성한 원래의 분포를 추측하는 방법입니다. 예를 들어 각국의 학생들의 키와 몸무게를 모아놓은 통계 자료에서 키와 몸무게의 관계를 분석한다고 합시다. 단순히 각각의 경우에 해당하는 뎅터 수를 세는 방법도 있지만, 여러가지 다른 기법으로 더 정확한 분폴ㄹ 얻을 수도 있습니다. 커널 밀도 추정과 가우스 혼합모델이 대표적인 기법입니다.
1.4.3.3 차원 축소
차원 축소는 말 그대로 '데이터의 차원을 낮추는' 기법으로, 디멘셔널리티 리덕션이라고 합니다. 보통은 데이터가 복잡하고 높은 차원을 가져서 시각화하기 어려울 때 2차원이나 3차원으로 표현하기 위해 사용합니다. 여러 가지 기법이 있지만, 일반적으로 주요 패턴을 찾아서 해당 패턴을 낮은 차원에서 보존하는 방식으로 이루어집니다. 이 기법은 독립적으로 쓰이지만, 데이터에 적합한 머신러닝 기법을 찾는 데이터 분석 초기 단계에 적용하기도 합니다. 대표적인 기법으로 주성분 분석(PCA) 및 특잇값 분해가 있습니다. 자세한 내용은 6.4.3절 '잠재성 요인 모델'과 7.3.4 절 '주성분 분석'에서 공부하겠습니다.
1.4.4 딥러닝
딥러닝은 신경망을 층층이 쌓아서 문제를 해결하는 기법의 총칭입니다. 딥러닝은 머신러닝이 풀고자 하는 목표에 따라 분류한 개면이 아니며, 사용하는 기법이 특정 형태를 가지는 것을 말합니다. 즉, 앞서 설명한 지도학습이나 비지도학습을 딥러닝을 이용해서 풀 수도 있고 통계학적인 방법을 이용해서 풀 수도 있습니다.
이는 데이터양에 의존하는 기법으로, 다른 머신러닝 기법보다 문제에 대한 가정이 적은 대신 다양한 패턴과 경우에 유연하게 대응하는 구조를 만들어 많은 데이터를 이용하여 학습시키는 것으로 모델의 성능을 향상시킵니다. 즉, 데이터에서 잘 동작하는 방법입니다.
최근에는 공공기관과 연구 기관에서 데이터를 공개하는 추세이고 이미 공개된 데이터가 많아 그러한 데이터를 잘 활용하면 다른 기법보다 딥러닝의 성능이 우수한 경우가 많습니다. 하지만 데이터가 많더라도 경우의 수가 너무 많거나 패턴이 너무 복잡하면 제대로 동작하기 어려울 수 있습니다. 이를 위해 많은 연구가 이루어지고 있으며, 딥러닝을 다른 통계적 머신러닝 기법과 함께 적용하는 방법도 개발 중 입니다. 더 자세한 이론은 2장에서, 예제는 7장에서 확인하기 바랍니다.
댓글 없음:
댓글 쓰기