View
머신러닝이란?
wiki : Machine learning is a subset of artificial intelligence in the field of computer science that often uses statistical techniques to give computers the ability to "learn" (i.e., progressively improve performance on a specific task) with data, without being explicitly programmed.
AI의 subset으로 computer science 분야에서 기존에 컴퓨터에게 해야할 동작이나 기능에 대해서 정의하는 것이 아니라 사람이 사용 설명서를 보고 사용 방법을 알게 되듯이 컴퓨터에게 데이터(사용 설명서)를 주고 학습(사용 방법을 알게 되는 것)할 수 있게 해주는 statistical techniques를 의미한다.
내가 어떤 과일 상자에서 무작위로 과일을 꺼냈을 때 이것이 내가 본적이 없는, 듣도보도 못한 과일이 아닌 이상에야 사과, 바나나, 키위, 배 정도는 쉽게 구별이 가능할 것이다. 하지만 내가 어떤 사물을 보고 이 사물은 '사과'이다 라는 것을 판별할 땐 머리에서 띠용! 하고 그냥 떠오르는 것 같지만 실제론 짧은 시간에 수많은 프로세스가 작동되어 최종적으로 이 사물은 '사과'라는 것을 확신하고 인지하게된다.
'사과'라는 것을 인지하기 까지의 수많은 프로세스를 뇌에서 처리하기 위해서는 다양한 사물의 요소를 입력하게 되는데 눈으로 볼 수 있는 사물의 모양, 색깔 그리고 피부로 느낄 수 있는 사물의 촉감, 사물의 냄새 등등 다양한 요소들을 뇌에 입력하면 뇌는 "빨갛고 전체적인 모양은 동그랗지만 상단부에 꼭지가 달려있고 해당 부분은 움푹 파여있다. 촉감은 세게 누르면 약간 파일정도의 단단함을 가지고 있고 상큼한 향이 난다" 라는 정보를 바탕으로 내 머리에 있는 기억 도서관에서 재빠르게 가장 유사하게 적인 단어를 사전에서 찾고 그 단어가 '사과' 임을 인지하게 되는 것이다.
방금 태어났지만 말은 할수있는(?) 아기에게 사과를 보여주면 그 아기는 이것이 사과인지 무엇인지 알수있을까? 절대 알 수 없다. 사과에 대해서 배운적이 없기 때문이다. 우리는 수많은 물체를 직, 간접적으로 경험해 나가며 어떤 물체에서 어떤 특성들이 관찰되어야 사과인지를 학습하게 되고 그 경험과 노하우가 축적이 되면 결국 이것이 사과인지 아닌지를 판별할 수 있게 되는 것이다.
Machine Learning은 우리가 살아오면서 알게모르게 했던 수많은 '학습'들을 컴퓨터에게도 시켜보자 라는 발상해서 시작해서 우리가 인지했던 방법들과 그 방법의 특성들을 분류해서 통계적으로 가장 잘 된 방법을 찾는데 그 목적이 있다.
예를들어 컴퓨터에게 수많은 사과의 데이터를 던져주면서 '이것들은 사과야' 라고 말해주면 컴퓨터는 아기가 사과가 무엇임을 배워나가는 과정과 유사하게 학습하게 되고 이런 경험과 노하우가 축적되면 어떤 컴퓨터에게 주며 '이것은 사과야?' 라고 물었을 때 자기가 학습한 데이터를 바탕으로 '이것은 사과일 확률이 아닐 확률보다 더 높다' 라는 식의 판단을 하고 비로소 '이것은 사과입니다' 라고 대답할 수 있게 되는 것이다.
어떤 사과의 특징을 가르쳐줄(학습시킬)것인가? 머신러닝의 기초 핵심 용어
아기의 관점에서 보자면 어떤 사물을 보고 '이것이 사과야' 라고 말해주었을 때 아기가 스스로 몇 가지 사과의 특성들을 추상적으로 떠올리거나 혹은 우리가 몇가지 특징들을 가르켜주는데 크게 보자면 색깔, 모양, 맛, 촉감(경도)가 있을 것이다. 아기는 앞으로 다양한 종류의 사과를 보며 어떤 대상이 사과임을 판별할 수 있는 특징들을 머리속에 저장하게 되는데 이것을 ML(Machine Learning)에서는 Feature 라고 한다. 사과의 다양한 features를 관찰하고 그 features에 대한 경험을 기반으로 아기는 이것이 사과임을 판별하게 되는 것이다.
아기는 어떤 사물을 볼 때 이런 features를 보고 '이것은 사과!' 라고 결론짓게 되는데 이러한 결론을 Label 이라고 한다. 쉽게말해서 어떤 사진들이나 데이터를 보고 이것이 무엇인지 최종적으로 결론내어야 하는 것이 Label 이다.
마지막으로 아기에게 보여주어야 할, 아기가 보아야 할 수많은 사과 사진들을 학습 데이터, training data 혹은 example이라고 하고 example이라고 표현할 때 이것이 명시적으로 사과 라고 Label이 적혀있는, 즉 Labeling 되어 있는 example을 labeled example이라고 표현한다.
마지막으로 아기가 어떠한 사진이나 사과로 추정되는 물체 즉, example 혹은 training data를 보았을 때 이것을 사과라고 판단하게 만드는 일련의 프로세스를 Model이라고 한다. 쉽게 설명하면 이런데 정확하게 정의하자면 relationship between features and label, 사물의 특성과 label의 관계라고 직역하기엔 약간 뜻이 안맞는 것 같은 relationship 이다. 아기의 머리속엔 학습을 통해 생성된 '사과 판별기'가 있어서 어떤 사진을 보고 사과인지 판단하게 되는데 이 '사과 판별기'가 ML에서 말하는 Model 인 것이다.
정리하자면, 머신러닝에서 공통적으로 사용되는 주요 키워드는
Label : 아기가 최종적으로 예측해야 하는 것. 이것이 어떠한 물건인지?(사과, 바나나, 키위 등) 혹은 사과가 맞는지(예, 아니요) 에 대한 값이다.
Features : Label을 판단할 때 필요한 입력 변수. 즉 아기가 사진을 보고 이것이 사과인지, 사과가 아닌지 판단하기위해 필요한 색깔, 모양 등의 판단에 필요한 요소이다.
Example / Training Data : 학습하기 위한 데이터. Label이 되어 있고 없음에 따라 labeled example, unlabeled example라고 불리고 이 데이터가 2개 이상이고 많을때 training data set이라고 표현한다. 아기가 볼 사과의 사진, 그리고 아기에게 사과라는 것이 무엇인지 가르쳐주기 위해 사용 될 사과 혹은 그 사과가 들어 있는 박스로 비유할 수 있다.
Model : features와 label간의 관계를 찾아내는 어떤 expression(?), 함수등으로 말하면 이해하기 편하다. 즉 아기가 사진이 여러가지 특성들을 보고 이것이 사과다 라고 결정짓게 되는 아기의 머리속에 있는 '사과 판별기'라고 생각하면 된다.
마무리...
아직 ML 공부를 많이 진행 하지도 않았고 이제 기초를 시작하는 수준이지만 다른 프레임워크나 라이브러리 등을 공부하는 것과는 달리 ML을 공부할 땐 학문으로써 접근해야 될 필요성이 많이 느껴진다. 그래서 이러한 기본적인 용어의 개념을 쌓는 것이 중요함을 항상, 더욱더 크게 느끼고 있다.
- refer to
- document
- icon
- https://www.iconfinder.com/iconsets/fruity-3
- https://www.iconfinder.com/iconsets/plex-for-android
- https://www.iconfinder.com/iconsets/family-member-flat-happy-family-day
- https://www.iconfinder.com/iconsets/medical-icons-110