모든 배움이 그렇지만 처음엔 기본적인 개념을 이해하는 것이 가장 힘들다. 그나마 학교 다닐 때 개론 성적이 상대적으로 좋았던 이유는 처음 접하는 학문은 무조건 개념 이해부터 초점에 맞춰 접근하기 때문이었던 것 같다. 개념 이해가 되기 위해서는 그것을 상대방에게 전달해주거나, 상대방의 전달 내용을 이해할 수 있을 정도의 어휘, 즉 그들만이 알아듣는 전문 용어에 대한 숙지가 필수다. 이번 강의에서는 머신러닝의 기본적인 용어에 대해 중점적으로 다루고 있다.
"요즘은 자막 시대"라는 말이 있는 것처럼 그냥 듣고만 있으면 잠이 오는 강의인데 받아쓰기를 하며 강의를 듣고, 받아쓴 내용을 다시 정리하면서 또 한번 듣다보니 머리 속에 정리가 좀 더 차곡차곡되는 느낌이다.
[강의 영상]
[받아쓰기 내용]
머신러닝의 기본적인 것들 기본적인 어떤 용어 그리고 기본적인 개념들을 이야기하고 다음 비디오에서 실제적인 알고리즘 들을 이야기해 보도록 하겠습니다.
이제 머신러닝이 무엇일까요 ML이라고 제가 이 슬라이드에 자주 적는데 이것은 머신러닝(Machine Learning)의 약자입니다. 머신러닝은 과연 무엇인가 그리고 Learning은 또 무엇일까 그리고 이 Learning의 종류 중에 Regression과 Classification 이런 용어를 많이 쓰는데 이게 과연 뭔가. 이런 것들을 어느정도 이해하시고 알고리즘들을 이해하시면 훨씬 편하기 때문에 이런 것들을 한번 이야기해 보도록 하겠습니다.
머신러닝이 뭔가요? 머신러닝 이라는게 일종의 소프트웨어입니다. 프로그램이죠. 여러분들이 많이 사용하시는 앱 같은거에 보면 여러분들이 어떤 입력을 하게 되면, 그걸 입력을 기반으로 어떤 데이터를 읽어서 보여주고 이런 것들이 이제 프로그래밍 인데요. 이런 것들을 이제 Explicit Programming이라고 합니다. 이유는 그 개발자가 이런 환경에서 이렇게 반응을 하고 이런 환경에서 저렇게 반응하라고 프로그래밍을 만들어 놓은 경우인데요. 굉장히 훌륭한 프로그래밍들이 많죠. 그런데 어떤 부분에서는 이렇게 Explicit하게, 정확하게 프로그래밍을 하기 어려운 경우가 있습니다.
예를 들어 여러분들이 많이 사용하시는 스팸 필터 이메일 같은거 받을 때 이게 이제 스팸인지 스팸이 아닌지를 자동으로 필터해주는 같은거 보면 그 Rule들이 너무너무 많기 때문에 개발자들이 그게 일일이 이런 경우에는 이렇게 스팸을 하고... 이렇게 하기가 어려운거죠. 여러분들이 또 요즘 화제가 되고 있는 구글의 자동으로 운전하는 차 같은거, 이런 것들을 예를 들어 여러분들이 어떤 Logic을 가지고 프로그래밍을 한다면 물론 할 수도 있겠지만 Rule들이 너무나 많은거에요. 이런 경우는 저렇게 하고...
그래서 1959년도에 Arthur라는 훌륭한 분이
"이걸 우리가 일일이 프로그래밍 하지 말고 어떤 자료에서 또는 어떤 현상에서 자동적으로 배우면 어떨까?"
굉장히 재밌으면서 훌륭한 생각이죠? 이것이 바로 머신러닝입니다. 그래서 프로그램인데 이것을 개발자가 일일이 어떻게 하는지를 정하지 않고, 이 프로그램 자체가 어떤 데이터를 보고 학습해서 뭔가를 배우는 능력을 갖는 프로그램을 머신러닝이라 이렇게 부를 수가 있게 되겠습니다.
머신러닝을 할 때 이 프로그램은 학습을 해야 되지 않습니까? 그래서 이 학습을 하기 위해서 어떤 데이터를 미리 주어져야 되는데요. 이 학습하는 방법 에 따라서 Supervised, Unsupervised Learning, 이렇게 두 가지로 나누어집니다. Supervised Learning이라는 것은, Supervisor가 감독관이라는 그런 뜻이지 않습니까. 그래서 어떤 하나의 정해져 있는 데이터 그리고 이 데이터는 이미 Label들이 정해져 있어요 어떤 레이블들이 정해져 있는 데이터, 이걸 또 다른 말로는 우리가 Training Set이라고 하는데, 이 데이터를 가지고 학습을 하는 것을 Supervised Learning이다, 이렇게 이야기를 합니다.
그 한 예로, 여러분들이 어떤 이미지를 주면 이 이미지가 고양이일까? 이 이미지가 개일까? 이렇게 자동으로 알아내는 요즘 프로그램들이 많이 있잖아요. 이런 프로그램들도 바로 우리가 머신러닝을 이용해서 만들어진 프로그램인데 어떻게 했느냐 하면 사람들이 고양이 그림들을 모아서 이렇게 줍니다. 주고, 얘는 고양이야 봐 이렇게 하면서 이 레이블이 달려있는 Cat이라는 레이블이 달려 있는 이런 그림들을 가지고 학습을 하는거죠 이런 경우에 학습이 역시 이미 레이블이 달려있는 자료를 가지고 학습을 하기 때문에 이런 학습을 Supervised Learning이라 이렇게 우리가 부릅니다. 그런데 어떤 러닝의 경우에는 우리가 일일이 어떤 레이블을 줄 수가 없는 경우가 있습니다. 예를 들어서 구글 뉴스가 있는데 서비스를 하다가 요즘 말았죠. 이 구글 뉴스는 자동적으로 유사한 뉴스들을 그룹핑을 합니다, 이런 경우에 미리 그걸 레이블을 다 정해주기 어렵죠. 알아서 자기가 보고 유사한 것들끼리 모으는 거죠. 또는 단어들 가운데도 비슷한 단어들을 모아봐라, 이런 머신러닝이 있다면 이것은 레이블을 직접 만들어주는 것이 아니라 데이터를 보고 스스로 학습한다. 그래서 이것을 Unsupervised Learning이라고, 그렇게 부릅니다.
그래서 여기 중요한 컨셉은 첫 번째는 Supervised Learning, 두 번째는 Unsupervised Learning이 되겠습니다. 이 중에서 Supervised Learning을 이 비디오에서 주로 다룰 건데요. 이것이 굉장히 일반적인 문제이죠. 문제이고, 예를 들면 예를 들었던 그 이미지 레이블링 한다든지 하는 거, 그리고 이메일도 스팸 필터가 어떻게 동작하냐면 이미 이메일 가운데 이런 이메일은 스팸이고 이런 이메일은 스팸이 아니다. 또 햄이라고 부르죠 그런 것들을... 그런 이메일이다라는 것을 레이블을 매겨놓은 것을 가지고 학습을 하는 겁니다.
그 예를 들어 또 여러분들이 이건 이제 여러분들이 또 관심을 많이 가질 수도 있죠. 어떤 '시험을 치는데 내 성적이 얼마나 나올까?' 이런 것을 학습을 하고 싶다. 이런 경우에도 '이전에 시험 친 사람들이 그 사람이 시험을 위해서 얼마나 몇 시간 준비했는데 그 사람이 성적이 얼마다.' 이런 데이터가 있으면 그 데이터를 가지고 학습을 할 수가 있겠죠. 이런 것을 다 통칭해서 Supervised Learning이라고 말할 수 있겠습니다.
그럼 여기서 Training Dataset이라는 것을 아까 잠깐 말씀드렸는데요. 이 Supervised Learning에서 사용되는 머신러닝은 일종의 이렇게 생각할 수가 있습니다. 여러분들이 이런 머신러닝이라는 하나의 모델이 있고요. 여러분들이 이미 답이 정해져 있는, 그러니까 레이블이 정해져 있는, 보통 그 값을 이제 머신러닝에서 \(y\)라고 보통 많이 하죠. \(y\)라는... 보통 값이 정해져 있어요. 3, 2, 1... 이렇게 정해져 있고, 이 \(x\)는 이 값에, 값을 특징이라고도 하고 어떤 Feature라고도 하는데, 형태의 어떤 데이터, 뭐 3, 6, 9, 2, 5, 7 이게 무슨 데이터인지 조금 가서 이야기를 드릴 텐데요. 그럼 이런 데이터를 가지고 학습을 하는 이 레이블이 이제 레이블을 가지고 학습을 하게 되는 겁니다.
학습을 하게 되면 모델이 쭉 발생을 하는 거죠. 여기서 이제 학습을 통한 어떤 모델이 생겨나면 그러면 내가 모르는 어떤 \(x\)가 있는데, 이제 \(X_{test}\)라고 하죠. 테스트가 있는데, 이 값이 뭐냐면 '이 값이 \(X_{test} = [9, 6, 9, 3, 6]\)이다.' 이러면 얘한테 물어보는 겁니다. 그러면 얘가 어 이때 '내가 생각하는 \(y = 3\)이다.' 이렇게 답을 해 주는 거죠. 이것이 바로 일반적인 머신러닝의, Supervised 머신러닝의 예가 되겠고, 바로 이 부분을 우리가 Training Dataset이라고 부릅니다. 그래서 이 Training Dataset이 반드시 필요한 거죠. 알파고도 뭐 여러가지 요소가 있습니다. 알파고 안에 여러가지 요소가 있는데, 그중에 한 요소가 바로 뭐냐면 이 알파고가 한 일이 기존에 사람들이 바둑판에서 바둑을 둔 이 기보를 학습한 거죠. 이 학습을 통해서 이세돌 선수가 이제 바둑을 둘 때 어떤 점에 바둑을 놓았지 않습니까? 이때 이 데이터를 입력을 받아 가지고 얘가 '그러면은 여기다 바둑을 놓으면 좋겠다.' 이렇게 하는 것이죠. 그래서 이것도 하나의 Supervised Learning이라고 할 수가 있겠고, 이때 사용된 데이터가 바로 Training Dataset이라고 할 수가 있겠습니다.
이 Supervised Learning도 그 결과에 따라서 조금 다르게 나눠 볼 수 있는데, 우리가 아까 이야기했던 시험의 어떤 성적을 예측하는 시스템을 만든다. 우리가 이전에 사용했던 시간에 대해서... 이런 경우는 성적이라는 것이 범위가 예를 들어, 0점에서 100점까지 이렇게 주어지지 않습니다. 그럼 이게 범위가 굉장히 넓기 때문에 이런 예측 을 하는 것을 우리가 'Regression이다.' 이렇게 이야기를 하고요. 그냥 이건 그렇게 사용하는 Term입니다.
그런데 우리가 이걸 조금 문제를 단순화시켜서, 이걸 점수별로 매기지 말고 이 사람이 성공했느냐, 패스했느냐 패스하지 못했느냐 두 가지로 나누어 보자. Pass, Non-pass 이렇게 두 가지로 나누어 볼 경우에 이 예측을 하는 겁니다. 똑같은 시간을 사용해서, 이런 경우에는 둘 중에 하나를 고르는 것이기 때문에 분류 또는 Classification이라는 말을 쓰게 됩니다. 이런 경우에는 특히나 두 개 중에 하나를 고르는 것이기 때문에 Binary Classification이라는 용어를 사용하게 되죠. 똑같은 문제를 조금 다르게 보면, 이번에는 이제 Grade를 주려고 그래요. 학점 A, B, C, E, F 얼마나 공부하는 시간에 따라서 어떤 Grade를 받을까 예측하는 시스템 만들고 싶은데, 이런 경우에는 A냐, B냐, C냐, D냐, F냐 중에 하나를 고르게 되는 거죠. 하나를 고르게 되기 때문에 역시 Classification인데 레이블이 많아요. A 도 있고, B 도 있고, C 도 있고 하니까 이것을 Multi-level Classification이라고 합니다. 그래서 Supervised Learning을 다룰 때는 대개 3가지, 하나는 Regression, 두 번째는 Classification 또 한 가지를 더 잡아 본다면, 세 번째 Multi-level Classification 이렇게 나눠줄 수가 있습니다.
그럼 이게 Supervised Learning이기 때문에 데이터가 필요한 거죠. 학습하는 데이터, 트레이닝 데이터가 필요한데요. 예를 들어 이걸 지금 시험 점수를 매기는 경우에는 이런 형태의 학습 데이터가 필요할 것입니다. 어떤 학생이 10시간을 공부했더니 이 학생은 90점을 받았고, 9시간을 공부했더니 80점을 받았고, 3시간 공부했더니... 이런 식의 점수가 나오는 거죠. 그러면 우리가 여기에 머신러닝의 모델은 바로 Regression 모델이고요. 이런 학습 데이터를 가지고 트레이닝을 하는 겁니다. 하고 나온 다음에, 예를 들어 우리가 궁금한 게 어떤 학생이 7시간을 공부했어요. 그러면 이 \(x = 7\)이겠죠. 7시간을 공부했을 때, 그러면 얘한테 물어보는 거죠 \(y\)가 얼마일까? 그러면 이 학습을 기반으로 이 친구가 대략 우리 생각으로는 '7시간 공부했으니까 한 75점 정도 받겠다.' 이렇게 예측을 할 수가 있는 것이죠. 이것이 바로 이런 Regression 머신러닝의 모델이고, 이것이 바로 Training Dataset이 되겠습니다. 똑같은 방법으로 이번에는 Pass냐 Non-pass냐 가지고 하니까 이것은 바로 Classification이 되겠죠.
Classification의 문제가 되고 특히나 2개 가지고 만 P냐 F냐만 가지고 얘기하기 때문에 이것은 바이너리, 2개니까 Binary Classification이라고 말할 수가 있겠습니다. 그리고 아까 말씀드렸던 합점의 형태로 a냐 b냐 이렇게 하는 경우에는 이 데이터는 바로 Multi-level Classification이라고 말할 수가 있겠습니다. 그러면 다음 비디오에서는 이 중에 Linear Regression이라는 것을 어떻게 우리가 모델을 만들고 어떻게 학습을 시키는지 한번 살펴보도록 하겠습니다.
'인공지능' 카테고리의 다른 글
머신러닝/딥러닝 입문 - 손실을 최소화하는 방법(cost minimize) (96) | 2023.09.05 |
---|---|
머신러닝/딥러닝 입문 - Linear Regression(선형회귀) (66) | 2023.09.03 |
머신러닝/딥러닝 강의 입문 - 수업 개요 (36) | 2023.09.01 |
딥러닝(Deep Learning) 입문 - Deep하지 않은 입문 영상 요약 (0) | 2023.01.26 |
인공지능 관련 설명 - 초보에게 적당한 기사 모둠 (0) | 2022.10.07 |
댓글