본문 바로가기

기술부터 가치까지

1. 머신러닝이란 무엇인가? — 제주 머신러닝 스터디 그룹 & 머신러닝 야학

제주에서 머신러닝 스터디 그룹을 만들어 머신러닝 야학에 참여합니다!

해당 게시물은 머신러닝 스터디 그룹의 과제인 강의 요약 블로깅입니다.

대부분의 멘트는 머신러닝 야학에서 가져온 것임을 밝힙니다.

생활코딩은 동의 없이 수정, 배포를 허락하고 있습니다.

해당 강의는 생활코딩 유튜브에서도 무료로 시청하실 수 있습니다.

결정 = 비교 + 선택

 

여러분이 어떤 물건을 구매한다고 가정해볼게요. 저는 주로 노트북과 키보드를 봅니다. 사지도 않을 것이면서 매일 노트북과 키보드를 보죠. 그런데 키보드는 비교할 항목이 많지 않아 애를 먹진 않지만, 노트북은 정말 많은 부분을 비교해야 합니다. SSD, CPU, RAM이 큰 분류이겠고, OS, 노트북의 두께, 무게 등이 더 있겠죠. 벌써부터 머리가 어지러워옵니다.

그런데 실제 기업에서 제품이 200개, 비교 항목이 1만개라면 어떨까요?

간단하게는 통계가 필요합니다. 하지만 좀 더 정확도 높게 판단하고 싶다면, 또는 예측하고 싶다면, 머신러닝을 사용하세요! 머신러닝은 아주 큰 무기가 될 것입니다.

한국어로는 기계학습, 영어로는 머신러닝입니다. 저는 초창기에 머신러닝과 러닝머신을 햇갈려 하기도 했습니다. 생김새가 비슷하고, 왠지 러닝머신이 더 친숙하잖아요? :)

머신러닝이 나오면서 이제 결정을 기계에 맡길 수 있게 되었습니다. 제가 구매했던 노트북을 바탕으로, 앞으로 어떤 노트북을 살지 예측도 할 수 있죠! 이 거대한 흐름은 인간 판단능력의 확장을 가져옵니다.

생활코딩의 머신러닝야학은 원리, 수학, 코딩 없이 일단 머신러닝의 사용자가 되어서 다양한 문제를 해결합니다. 그 문제가 충분히 자동화로 해결할 수 없을 때 원리와 수학, 코딩을 배우면 된다고 하네요!

여러분이 휴대폰을 사용하실 때, 휴대폰이 어떻게 동작하는지 정확하게 이해하고 있지 않습니다. 비슷한 예로, 자동차를 운전하려 했을 때 자동차가 굴러가는 원리를 정확히 알고 있지 않죠. 아니, 알 필요가 없습니다. 이제는 머신러닝이 그 단계에 와 있습니다!

코딩 없이 머신러닝을 학습할 수 있도록 하는 서비스가 생겨나고 있습니다. google의 Teachable Machine을 한 번 사용해봅시다.

 

 

teachablemachine.withgoogle.com/

 

 

위 링크를 클릭하신 다음 아래 Get Started를 클릭해주세요.

 

Image Project를 클릭해보세요! 웹 캠은 허락하시고요.

놀라지 마세요. 여러분 얼굴입니다.

예를 들어 저는 마스크와 노마스크를 분류해보도록 하겠습니다. 제 사진입니다. 마스크 쓴 사진과 마스크를 쓰지 않은 사진을 각각 라벨링(이름을 붙이는 것입니다.)하여 Hold to Record 하도록 하겠습니다. 마우스로 길게 누르면 계속해서 찍히니 여러번 누르지 마시고 한 번만 누르세요.

모든 사진이 업로드 되었다면 Train Model을 클릭해주세요. 가위바위보도 좋고, 서로 다른 사람의 얼굴도 좋습니다. 만약 병명에 따른 X-Ray 사진이나 MRI 사진을 구할 수 있다면 더 좋을 것입니다!

실제로 17년도 즈음에 저에게 왓슨같은 시스템을 만들고 싶다고 한 제주대 의대생이 있으셨는데요. 공개되어 있는 X-Ray 수천장의 사진을 일일이 분류하여 폴더에 넣어 주셨습니다. 여기서 그 폴더명이 마스크, 노마스크와 같은 라벨링 작업이 됩니다. 그럼 다음 사진이 들어왔을 때 어떤 사진과 가장 유사한지를 판별할 수 있죠. 어떻게 되었냐구요? 1년정도 실서비스 운영을 하였습니다. :) 지금은 의사가 되신 그분과 같이 개발했구요.

이것이 실제 기계에게 학습을 시키는 과정입니다! 이제 기계가 열심히 어떤 사진이 마스크를 쓴 사진인지 학습하죠!

신기하게도 보여준 적이 없는 이미지를 만나도 알아맞추죠! 아래처럼요!

이 단계에서 중요한 것은 기계가 학습을 제대로 했는지를 평가하는 것입니다.

그런데 위를 보세요! 책을 가져다 대었는데 마스크라고 나오네요! 더 많은 사진을 입력하거나, 부정확한 사진을 제거해야 합니다. 사진은 마우스를 오버하면 휴지통에 버릴 수 있습니다.

자, 이제 기계학습, 이제 이해가 되나요? 파일로도 출력할 수 있습니다. 상단에 Export Model을 클릭하시면, 모델은 다운로드할 수 있는데요. 3개의 파일입니다. 이 3개의 파일이 바로 우리가 학습시킨 ‘판단력’ 입니다! 머신러닝에서는 판단력이라는 표현을 쓰지 않습니다. 대신 Model이라는 표현을 하죠!

Model은 무엇일까요? 아이들이 먹어도 되는 것과, 먹어도 되지 않은 것을 어떻게 알 수 있을까요? 실제로 먹어보고 얻어지는 교훈, 그리고 그 경험을 바탕으로 추측하는 하는 것도 아이들에 판단력, 이해력이라 볼 수 있습니다.

또는 과학자는 가설을 통해 이론을 만들고, 그 이론을 통해 예측을 하죠. 이러한 절차가 과학자들이 어떤 결론을 내는 판단력이라 볼 수 있습니다.

머신러닝에서는 학습을 통해 판단력을 생성합니다. 이것을 Model이라고 합니다. 잘 만들고 나면 좋은 추측을 할 수 있게 됩니다.

자, 이제 티쳐블 머신에서 가져온 3개의 파일을 가지고 앱을 만들어봅시다.

 

 

https://ml-app.yah.ac/

 

머신러닝머신

 

ml-app.yah.ac

 

 

혹시 파일을 다운로드 못받으셨다면 티처블 머신에서 ‘Export Model’을 클릭하여 다운로드 받아주세요.

자, 이제 생활코딩에 ‘머신러닝머신’으로 접속해주세요. 어딘지 놓치셨나요? 링크 다시 올려드릴게요.

ml-app.yah.ac

접속을 하셨다면 티처블 머신에서 다운로드 받은 3개의 파일을 드래그엔 드롭으로 업로드 해주세요! 놀랍게도, 바로 블록으로 표현됩니다!

자, 그럼 아래와 같이 블록코딩을 해봅시다.

전등, 자동차, 도로 교통 시스템, 국가 행정 시스템 이것들은 실제로 작동하는 것은 아니지만, 여러분들이 짠 코드로 이것들을 조정할 수 있다고 상상해보세요.

자, 예를 들어 여러분이 카페 사장님이라고 생각해보세요. 코딩야학에서는 레모네이드를 예를 들었지만, 자주 마시는 커피를 예로 들어봅시다.

생활코딩 머신러닝 야학 1–9 사진

 

위에 표는 온도에 따른 커피 판매량이라고 생각해봅시다. 그럼, 하루에 원두가 얼마나 필요한지 알겠죠? 그런데, 단순히 온도에 따르지 않고, 여러 요소들에게 영향을 받는다고 한다면, 그것도 예측할 수 있습니다! 우리는 판단력! Model을 만들 수 있기 때문이죠.

우리가 만들려는 모델에서 온도는 독립변수(원인), 판매량은 종속변수(결과)라고 합니다. 여러 원인이 있다면 다양한 독립변수가 존재하는 것이죠.

여기까지가 교양인에게 필요한 지식입니다. 이제부터는 학습 난이도가 기하급수적으로 올라갈 것입니다.

자, 이제 데이터의 중요성에 대해 말할 것입니다. 각각의 원두, 요일, 판매량, 날짜 등 우리가 사용할 수 있는 여러 독립변수를 생각해봅시다. 독립변수란 결과를 도출하기 위한 변수라고

이처럼 어떤 데이터를 가지고 예측하거나 결론을 도출하는 산업을 데이터 산업이라 하고, 이 산업은 데이터 과학(Data Science)과 데이터 공학(Data Engineering)으로 나뉩니다.

데이터 과학은 데이터를 만들고 만들어진 데이터를 이용하는 일이라고 할 수 있습니다. 책에 비유한다면 작가에 해당됩니다. 데이터 자체를 다루는 것이죠.

데이터 공학은 데이터를 다루는 도구를 만들고 도구를 관리하는 일을 합니다. 책에 비유를 한다면 종이나 연필을 만드는 것, 책을 출한 하는 것이라 할 수 있죠. 데이터 다루는 것을 도와주는 역할을 하는 것이죠.

데이터는 표 가두어 놓습니다. 그리고 분석을 시작하죠. 데이터 산업에서 사용하는 표는 아래와 같습니다. 왼쪽처럼 사용하니 꼭 기억해두세요.

머신러닝 야학 1–12 표

 

머신러닝 야학 1–12 표

 

독립변수(Independent variable)와 종속변수(Dependent variable)에 대한 개념을 설명해드릴텐데요. 이는 매우 중요한 개념이니 꼭 알아두시기 바랍니다. 원인은 독립변수, 결과는 원인에 종속되어 있기 때문에 종속변수라고 합니다. 여기서 독립변수는 날짜, 요일, 온도입니다. 판매량은 종속변수입니다. 그런데 날짜와 요일이 판매량과 어떤 관계가 있을까요?

머신러닝 야학 1–12 상관관계와 인과관계

 

상관관계는 한 변수의 값이 크거나 작아질 때 그에 따른 종속변수도 크거나 작아지는 것을 나타냅니다. 하지만, 상관관계는 인과관계가 아닙니다!

정리를 해보자면, 독립변수는 원인, 종속 변수는 결과, 독립변수와 종속변수의 관계를 인과관계, 인과관계는 상관관계에 포함이라고 할 수 있습니다.

조금 더 깊게 공부하게 되면 우리는 독립변수(온도)를 통해 종속변수(판매량)를 알아내는 기술적인 방법을 공부할 수 있게 됩니다. 그 전에 머신러닝에 대해 좀 더 알아봅시다.

머신러닝 1–15 머신러닝의 분류

 

이 이미지를 머리에 그리고 학습을 해보도록 하겠습니다. 지도학습은 기계를 가르친다는 의미입니다. 문제에 정답이 있고, 이걸 학습하다보면, 비슷한 정답에 가까워 지는 것이죠.

머신러닝 1–16 지도학습

 

비지도 학습은 통찰력을 부여하는 것이라 할 수 있습니다. 정답이 없는 것이죠. 정답이 없는 것도 학습을 통해 그 특징을 찾아내고 관계를 찾아낼 수 있습니다! 강화 학습은 더 좋은 답을 찾아내기 위해 스스로 성장할 수 있도록 한 것이 강화 학습입니다.

지도학습(Supervised learning)

지도학습은 분류(classification)와 회귀(regression)로 나뉩니다. 우리가 예측한 카페의 판매량은 회귀로 한 것입니다. 숫자를 예측하고 싶을 때에는 회귀를 사용하면 됩니다. 분류는 범주입니다. 우리가 앞서 해보았던 마스크, 노마스크는 숫자가 아닙니다. 범주를 예측하고 싶을 때에는 분류로 해결해야 합니다.

요약을 하자면 아래와 같습니다.

가지고 있는 데이터에 독립변수와 종속변수가 있고 종속변수가 숫자일 때 회귀를 사용하면 됩니다.

가지고 있는 데이터에 독립변수와 종속변수가 있고 종속변수가 이름일 때 분류를 사용하면 됩니다.

비지도학습(Unsupervised learning)

이번에는 비지도 학습에 대해 알아보도록 하겠습니다. 먼저 군집화입니다. 군집화(Clustering)는 비슷한 구룹으로 묶는 것입니다. 군집화는 여러 구룹 군을 만드는 것이고, 분류는 그 구룹 군 안에 어디로 속할 것인지를 택한 것입니다.

머신러닝 1–19 군집화

 

그런데, 군집을 할 때, 위도와 경도 뿐만 아니라 고려해야 할 값이 10개, 100개라면 어떻게 할까요? 사람이 할 수는 없지만, 기계는 할 수 있습니다.

이번에는 연관 규칙 학습(Association Rule learning)입니다. 예를 들어 라면을 산 사람이 계란을 샀다는 아래와 같은 표를 가졌다고 생각해보겠습니다. 그렇다면 그 확율이 매우 높다는 것을 우리는 추측할 수 있을 것입니다.

머신러닝 1–19 연관규칙학습

 

강화학습(Reinforcement learning)

이번에는 강화 학습에 대해 알아보도록 하겠습니다. 지도학습이 배움을 통해 실력을 키웠다면 강화학습은 경험을 통해 실력을 키웁니다! 그 학습의 결과가 좋았다면 +, 학습의 결과가 좋지 않았다면 -를 하여 계속해서 +의 결과를 낼 수 있도록 하는 것입니다.

머신러닝 1–22 강화학습

 

머신러닝지도