머신러닝이란?
알파고를 기점으로 인공지능에 대하여 많은 관심을 받고 있습니다. 머신러닝은 이러한 인공지능의 범주 안에 있는 하나의 기술이라고 보시면 됩니다.
과거의 인공지능은 규칙 기반으로 조건문을 활용한 하드코딩을 통해 개발이 되었습니다. 이는 특정 분야에 대해서는 인공지능이 상당히 좋은 결과를 보여주지만, 새로운 예외적인 상황이 나오면 가차없이 틀리는 문제를 일으킵니다.
오늘날의 인공지능은 데이터를 통하여 직접 학습하여 일반화된 지식을 통해 문제를 접근합니다. 이렇게 되면 새로운 상황에 접하게 되어도 그 동안 쌓아온 지식을 통해 일반화된 접근을 통해 올바른 선택을 할 수 있게되죠. 이것이 우리가 지금부터 논할 머신러닝이라는 것 입니다.
이로써 우리는 과거의 인공지능으로는 풀 수 없던 여러가지 문제를 풀 수 있게 됩니다. 예를 들면 최근 스마트폰으로 가능한 얼굴인식 기능, OCR 등이 있습니다.
머신러닝 == 인공지능? (여담)
앞서 말씀듯이 머신러닝은 '데이터를 기반으로 기계가 학습하여 일반화된 결과를 도출해내는 것' 이라고 하였습니다. 그리고 오늘날의 인공지능이 바로 그러한 것이라고 하였습니다.
엄밀히 따지면 머신러닝과 인공지능의 관계는 위와 같은 관계를 갖습니다.
인공지능이라는 범주 안에 머신러닝이 있는 관계입니다.
하지만 제가 공부를 하며 느낀 것은, 오늘날의 인공지능은 99% 머신러닝이라고 봐도 무방하다고 저는 판단이 됩니다. 그래서 저는 인공지능과 머신러닝이라는 말은 같은 말이라고 보고 있습니다.
데이터 기반 학습
데이터를 기반으로 학습을 한다는 것은 쉽게 생각하면 과거에 일어난 사례를 학습한다는 것과 같습니다. 그리고 그 과거의 경험을 일반화시켜 새로운 문제에 직면했을 때 일반화된 경험을 바탕으로 해결합니다.
즉 머신러닝은 쉽게 말하면 과거의 경험(데이터)을 일반화시켜 문제를 해결하는 하나의 솔루션입니다. 데이터의 질에 따라 해결의 정확도가 달라지죠. 예를들어 강아지를 구분하는 머신러닝을 제작을 할 때 데이터를 푸들 종의 강아지의 사진만 보여주었다고 합시다. 그렇다면 그 머신러닝은 푸들에 대하여는 잘 골라낼 수 있지만, 웰시코기와 같은 다른 종에 대해서는 강아지라고 판단하기 어려울 것 입니다.
머신러닝의 품질을 결정하는 것은 데이터라고 할 수 있습니다.
이렇게 중요한 데이터를 기반으로 학습을 하는 간단한 예를 들어봅시다.
a와 b를 받고 결과를 내는 어떤 마법상자가 있습니다. 해당 상자에 임의로 a와 b를 넣고 데이터를 모아 아래와 같은 테이블을 얻을 수 있었습니다.
| a | b | 결과 |
|:-----:|:-----:|
|1|1|2|
|1|2|3|
|1|3|4|
|3|1|4|
|2|4|6|
|8|2|10|
머신러닝을 통해 위 데이터를 하나씩 읽어가며 a와 b에 따른 결과를 일반화 시킵니다. 아마 머신러닝은 '결과는 a에 1을 곱하고, b에 1을 곱해서 더하는 것이다.' 라고 판단을 할 것입니다.
따라서 (3,3)을 넣게되면 6이라는 결과를 도출하겠죠.
지도학습과 비지도학습
지도학습 알고리즘(Supervised learning)은 이미 알려진 사례를 바탕으로 일반화된 모델을 만들어 의사를 결정하는 알고리즘입니다. 이 방법을 사용하는 데이터는 정해진 입력에 따른 결과를 포함하고 있습니다. 따라서 해당 데이터를 통해 학습하여 동일한 포맷의 입력이 주어지면 그에 따른 의사를 결정하도록 하는 알고리즘입니다.
예를들어 애완동물을 구분하는 머신러닝을 만든다고 한다고 생각합시다. 강아지 사진에 대한 출력은 강아지로 고양이 사진에 대한 출력은 고양이로 데이터가 결과를 포함하고 있습니다. 알고리즘의 목표는 다음에 어떤 사진이 들어왔을 때 그 사진이 어떤 애완동물인지 의사를 결정해 줍니다.
비지도학습 알고리즘(Unsupervised learning)은 입력은 주어지지만 출력이 없는 것을 의미합니다. 즉 데이터에 결과를 포함하고 있지 않습니다. 보통 각 데이터들간의 관계를 묶어 군집화를 할 때 사용합니다.
예를들어 쇼핑 사이트에서의 정보를 가지고 고객들을 묶을 수 있습니다. 고객들이 주로 구매하는 제품을 분석하여, 책을 많이 구매하는 사람들을 학생들로 기저귀를 많이 구매하는 분들을 부모로 군집이 가능합니다.
지도학습과 비지도학습의 차이는 데이터에 결과값이 포함되어있는지? 여부 입니다.
개발 환경
저는 Python3를 활용하여 머신러닝 알고리즘을 공부할 것 입니다. 만약 개발환경이 아직 구축하지 않으신 분들은 Anaconda를 설치하는 것을 권장합니다. 아나콘다에는 Numpy, SciPy, pandas, jupyter notebook등 우리가 필요한 라이브러리를 포함기 때문에 굉장히 편리하기 때문입니다.
포스팅을 마치며
간단히 머신러닝이 무엇인지에 대하여 알아보았습니다.
오늘은 매우 포괄적인 개념을 설명하여 다소 이해가 어려우실것 같습니다.
이번 포스팅은 여기까지 입니다. 감사합니다.
'Artificial intelligence > Etc' 카테고리의 다른 글
Hello RL : Frozen Lake 소개 및 기본 코드 (1) | 2022.09.15 |
---|---|
Object Detection의 개요 (0) | 2022.07.30 |
모델 평가(Evaluation) (0) | 2022.07.12 |
Sklearn 라이브러리를 활용하여 데이터 전처리하기 (0) | 2022.07.08 |
파이썬으로 머신러닝 시작하기 (0) | 2022.07.03 |