brunch

You can make anything
by writing

C.S.Lewis

by 코딩하는 수학쌤 Apr 12. 2023

[AI 기초] II-4. 기계학습의 개념과 활용-2

모두의 인공지능 기초

지도학습 - 분류 : 미리 정해놓은 범주 중 데이터가 어느 범주에 속하는가?

분류는 먼저 데이터가 해당되는 몇 가지의 범주를 정해놓고 주어진 데이터가 어디에 해당하는지 파악하는 방법입니다. 미리 학습할 데이터를 통해 각 범주에 해당하는 데이터의 특징을 파악을 한 후, 새로운 데이터가 어느 범주에 해당하는지 파악합니다. 예를 들어 기존에 분류된 스팸 메일과 정상 메일을 살펴보며 스팸 메일의 특징을 파악합니다. 광고, 할인, 마감을 비롯 메일을 보낸 곳의 도메인 등을 통해 스팸 메일의 특징을 파악한 후 새로운 메일이 왔을 때 학습된 결과를 바탕으로 정상 메일과 스팸 메일을 걸러냅니다. 


분류에 활용되는 알고리즘은 다양한데요, 천천히 살펴볼까요?




가장 먼저 kNN(k근접 이웃;k-Nearest Neighborhood) 분류가 있습니다. 이 방법은 새로운 데이터에 가장 가까운 곳에 있는 데이터들이 무엇인지 살펴보는 방법입니다. 데이터가 서로 가까운 위치에 있다는 것은 서로 간에 유사한 점이 많다는 것을 의미해요. (이런 유사도 측정을 유클리드 유사도라고 합니다.)


 예를 들어 졸업생들의 내신 등급과 수능 등급, 수시 or 정시로 데이터를 표현한 자료가 있다고 해볼게요. 이 데이터를 바탕으로 나의 내신, 수능 등급으로 데이터를 표현해 보고 근처에 수시가 더 많은지 정시가 더 많은지 살펴보는 방법입니다.


 kNN 방법에서 내 근처에 몇 개의 데이터를 살펴볼 것인지 정해야 하는데 판정을 내리기 위해 대부분 홀수개의 값을 살펴봅니다. 자세한 내용은 아래 포스팅을 참고해 주세요.


28.k최근접 이웃 (kNN) 알고리즘이란? (brunch.co.kr)




 또 다른 방법은 의사 결정 나무 방법이 있습니다. 의사 결정 나무는 데이터를 분류하기 위한 질문을 던지는데 Yes or No에 따라 데이터들이 분류됩니다. 데이터가 분류되는 과정이 직관적으로 쉽게 이해되고 범주형, 수치형 속성에 모두 적용할 수 있다는 장점이 있습니다. 반면 과적합에 빠지기 쉽고 데이터가 많을 경우 지나치게 트리가 복잡하게 나올 수 있다는 단점도 존재합니다.

 중요한 것은 질문의 순서인데요, 자세한 내용은 아래의 포스팅을 참고하시기 바랍니다.

26. 결정 트리를 통해 살펴보는 머신 러닝-1 (brunch.co.kr)

27. 결정 트리를 통해 살펴보는 머신 러닝-2 (brunch.co.kr)




고1 수업 때 학생들이 알고리즘을 어려워해서 시험에 내지 않는다는 '친절한(?)' 안내가 있었습니다. ㅎㅎ

로지스틱 회귀는 어떠한 수치 데이터에 따라 범주형 결과를 쉽게 분류할 때 활용됩니다. 위의 그림을 보면 키의 값에 따라 기린인지 아닌지 구분하는 데이터가 있어요. 값이 수치이기 때문에 직선의 그래프로 나타내보면 앞의 그래프처럼 나타나는데 키와 0의 값 사이 비슷한 위치에 모여있다는 것을 잘 나타내기가 어렵습니다. 반면 오른쪽처럼 그래프를 적절히 변형하면 0과 1 사이에 어느 쪽과 가까운지 쉽게 나타낼 수 있죠. 




고1 수업 때 학생들이 알고리즘을 어려워해서 시험에 내지 않는다는 '친절한(?)' 안내가 있었습니다. ㅎㅎ

마지막으로 서포트 벡터 머신(SVM : Support Vectot Machine)입니다. 이 방법은 데이터를 나누는 적절한 경계선을 그어서 데이터를 구분하는 방법이에요. 위의 데이터는 무게와 당도에 따라 과일 A, B를 나누는데 그래프로 그려보면 두 과일을 나누는 적절한 경계선을 찾을 수 있습니다. 경계선은 직선과 점 사이의 거리를 가장 멀리 떨어뜨리는 것이 가장 좋은데요, 관련 내용도 아래 글을 참고해 주세요.

29. 분류 알고리즘 - SVM, 로지스틱 회귀 분석 (brunch.co.kr)




비지도 학습 - 데이터는 있지만 레이블은 없을 때


지도학습에 이어 이번에는 비지도 학습에 대해 살펴보려고 합니다. 비지도 학습의 내용을 소프트웨어야 놀자 영상을 통해 전체적으로 한 번 살펴보겠습니다.

https://youtu.be/aJwUlyMsbX8





비지도 학습은 데이터는 있지만 속성 중에서 '정답'에 해당하는 레이블이 없습니다. 지도학습은 레이블에 따라 핵심이 되는 속성을 살펴보는 반면 비지도 학습은 데이터의 전체적인 특성들을 살펴보며 비슷한 특성을 찾거나 정체 데이터를 잘 나타내는 특성을 찾습니다.


가장 대표적인 예시가 군집화(Clustering)에요. 군집화는 전체 데이터 중에서 비슷한 특성을 보이는 데이터들을 몇 가지의 군집으로 나누는 방법입니다. 분류와 유사해 보이지만 분류는 각 학습에 활용하는 데이터로 먼저 A, B, C 각 범주의 특성을 파악한 후 새로운 데이터 하나가 A, B C 중 어디에 해당되는가(즉 구분 범주가 먼저 존재)를 파악합니다. 즉 학습 데이터와 분류를 하고자 하는 데이터는 별개죠. 반면 군집화는 미리 학습할 수 있는 데이터가 없어요. 전체 데이터를 살펴보며 데이터 전체를 A, B, C로 나눕니다.


 실제 예시로 보자면.. 농촌 봉사 활동에 가서 농부 아저씨에게 "이건 잡초야. 이건 작물이야."를 먼저 배운 후 밭에 가서 심어진 것이 잡초인지 작물인지 판단하는 것은 분류에요. 그런데 사전 교육 없이 밭에 가서 전체를 둘러보며 "아, 얘네는 이렇게 생긴 애들이고.. 얘네는 이런 특징을 가진 애들이 있구나. 두 가지가 다르구나."로 전체를 두 그룹으로 나누면 군집화가 됩니다.


군집화는 한 번에 일어나지 않아요. 여러 번 반복적인 과정을 통해 이루어집니다. 어떻게 군집으로 나누어질지 모르기 때문에 가장 먼저 군집의 중심을 임의로 몇 개 설정합니다. 그러면 각 데이터마다 어느 군집점과 가까운지 확인할 수 있죠. 


 그렇게 데이터마다 해당하는 군집이 설정되면 그 군집의 평균적인 위치로 군집의 중심을 옮겨옵니다. 그리고 다시 각 데이터마다 어떤 군집점이 또 가장 가까운지 확인합니다. 그리고 다시 군집을 만들어요. 이 과정을 반복해서 더 이상 군집의 중심이 옮겨지지 않으면 군집화가 완성된 것이죠.


좀 더 쉬운 예제로 과정을 살펴보면 위와 같습니다. 임의로 2개의 군집으로 나누는 과정을 반복적으로 설명한 내용입니다. 


군집화를 사용하는 목적은 전체 대상을 판별하기 위해서라기보단 군집화로 얻은 정보를 해석하고 활용하는 데 있습니다. 도서관에서 학생들의 대출 정보를 통해 학생들을  몇 개의 군집으로 묶은 후, 각 군집마다 회원들이 선호하는 책들을 살펴볼 수 있죠. 그리고 새로운 회원 데이터가 추가되면 군집을 계속 수정해나갈 수 있습니다. 그렇게 나누어진 회원들의 대출 정보를 보며 특성에 맞는 추천 도서를 선정할 수 있죠. 군집화의 가장 대표적인 활용 사례가 '추천 서비스'입니다.




강화 학습 - 당근과 채찍. 보상과 처벌을 통해 원하는 목표를 이루도록!


https://youtu.be/T5DDZB0mkzs

강화 학습은 보상과 벌칙을 통해 원하는 결과나 행동을 유발하는 학습입니다. 교육학을 공부해 보면 '행동주의'라는 내용이 있죠? 파블로프가 개에게 먹이를 줄 때마다 종을 쳤는데, 나중에는 종만 쳐도 개가 군침을 흘리더라는 내용으로 유명합니다. 강화 학습은 행동주의에 나오는 '보상(특정 행동을 강화하는 작용)'과 '처벌(특정 행동을 안 하도록 만드는 작용)'을 통해 의도한 행동을 할 수 있도록 하는 것을 의미합니다.


다시 정리해 보면 강화 학습에는 분명히 의도하는 '목표' 혹은 '목적'이 있습니다. 인공지능 에이전트가 반응을 할 텐데, 처음부터 그 반응을 잘하는 경우는 없겠죠? 나오는 결과에 따라 보상을 주고, 때로는 처벌을 통해 원하는 행동을 강화해나갑니다.


https://youtu.be/xA3TTCXS6rQ

벌써 10년 가까이 되어가는 영상인데요, 2014년에 독일의 산업로봇 KUKA 사가 중국 상하이에 진출했을 때 이벤트로 티모 볼(당시 세계 챔피언)과 쿠카의 로봇이 탁구 시합을 했습니다. 탁구를 좋아하시는 분들은 잘 아시겠지만 탁구는 순간 반응도 중요하고, 공이 역회전인지, 톱스핀이 걸려있는지 등에 따라 라켓을 민감하고 정밀하게 다루어야 합니다. 비록 영상에서 티모 볼이 승리하긴 했지만 로봇이 정말 잘 반응합니다. 처음부터 잘한 게 아니라 자꾸 과정을 겪으면서 점점 좋아지는 거죠.


https://youtu.be/u3L8vGMDYD8

강화 학습은 로봇과 함께 결합해서 다양하게 개발되고 연구 중입니다. 이런 탁구 로봇이 집에 하나 있으면 나중에 동호회 가지 않고도 재미있게 탁구를 칠 수 있겠는데요? 마치 인공지능 바둑을 두면서 프로기사에게서 연구모임이 점차 사라지고 인공지능과 연구를 언제 어디서든 할 수 있는 것처럼 말이죠. (나중에 제가 나이가 들면 반드시 탁구 로봇 하나 마련해야겠습니다.)




https://youtu.be/ic3RfxD9zQE

하나 기억할 것은 지도학습과 비지도 학습은 데이터의 '레이블' 활용 유무에 따라 달라지는데.. 강화 학습은 이 둘과 결합하기도 합니다. 지도학습과 강화 학습을 통해 개발된 것이 처음의 알파고였고, 나중에 강화 학습만 가지고 개발된 것이 알파고 제로입니다.


 지도학습은 인간이 만들어낸 데이터(혹은 측정된 데이터)를 통해 학습을 하죠. 최초의 알파고는 프로기사들의 기보를 학습하면서 바둑을 빠르게 익혀갔습니다. 그러나 나중에 나온 알파고 제로는 (그 사이 알파고 마스터도 있었지만) 바둑의 룰만 알려주고 자체적으로 바둑을 둬가며 바둑을 익힌 결과 압도적으로 최초의 알파고를 이겼습니다.


https://youtu.be/V1eYniJ0Rnk

 구글의 딥마인드는 강화 학습을 연구하면서 인공지능이 벽돌 깨기 아타리를 활용해 학습을 시켰습니다. 영상을 보면 처음 10분은 초보처럼 플레이를 하다가 약 2시간이 되면 전문가처럼 좀처럼 죽지 않고 플레이를 이어갑니다. 그러다가 약 4시간이 되면 마법이 일어나는데.. 한쪽만 구멍을 뚫어서 터널을 만든 후 공을 올려보내 소위 천정 벽치기를 통해 점수를 확 끌어올리죠. 강화 학습은 이런 사례처럼 사람이 직접 알려주지 않기 때문에 새로운 전략을 발견해 내기도 합니다. 


이번 글까지 기계학습의 대표적인 3가지 학습 방법을 알아봤습니다. 

다음 글에서는 딥러닝의 개념과 원리에 대해서 한 번 살펴보도록 하겠습니다. :)


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari