머신러닝을 이해하기 위해서
꼭 수학과 코딩을 알아야 하는 것은 아닙니다.
수학과 코딩 없이도
머신러닝을 이용할 수 있게 해주는
서비스들이 생겨나고 있습니다.
미래에는 수학자나 프로그래머가 아니라도
누구나 머신러닝을 이용해서
기계를 학습시키고,
그것을 활용해서 자신의 문제를
해결하고 있을 것입니다.
마치 컴퓨터가 처음 등장했을 때에는
소수의 과학자들만 다루는
음흉한 비밀무기처럼 인식되었지만,
오늘날은 모든 사람들이
전화기의 탈을 쓴 스마트폰과 씨름하면서
컴퓨팅을 하고 있는 것처럼요.
머신러닝도 그렇게 될 것입니다.
이런 가능성을 보여줄 수 있는 사례를 하나 준비했습니다.
https://teachablemachine.withgoogle.com/
(최신 브라우저를 사용해주세요. 모바일 환경에서는 동작하지 않을 수 있습니다.)
여러분은 이 수업의 주인공입니다.
먼저 관찰하고, 조작해 보세요.
그 과정에서 스스로 알게 되는 것이 많을 것입니다.
이 수업은 여러분의 조력자입니다.
이해가 되지 않을만한 것들에 대해서
최소한으로 알려드리겠습니다.
설명을 듣기 전에
5분간만 관찰해보고 조작해 보세요.
미래에는 이 서비스가 존재하지 않을 수도 있습니다.
걱정 마세요.
이 서비스 자체는 중요한 것이 아닙니다.
이 수업은 머신러닝의 본질을 이해하는 것이
목적이기 때문에
혹, 이 서비스가 동작하지 않는다고
공부를 중단하지 마세요.
된다고 치면 됩니다.
Get Started로 들어가 봅시다.
아래와 같은 화면이 보일 것입니다.
설명을 듣기 전에 5분 동안 관찰하고 조작해 봅시다.
Image,
Aaudio,
Pose
이것들이 무엇일까요?
이 서비스를 이용해서
컴퓨터에게 학습시킬 수 있는 데이터들입니다.
현시점에서 Teachable Machine을 이용하면
이미지와 소리 그리고 자세(pose)에 대한
데이터를 컴퓨터에게 학습시킬 수 있습니다.
왠지 느낌이 좋죠?
우리에게 필요한 기능이
이 안에 있을 것 같지 않나요?
우리는 손톱을 깨물고 있는 모습을
학습시켜야 하는데요.
그것을 하기 위해서
Image Project로 들어가 봅시다.
아래와 같은 화면이 나옵니다.
설명을 듣기 전에 5분간
이 화면을 관찰하고 조작해 봅시다.
이것은 이미지를 컴퓨터에게 학습시키는 기능이
모여있는 페이지입니다.
우선, Class라는 말의 의미부터 생각해봅시다.
Class는 교실이라는 뜻도 있지만,
여기서는 서로 연관된 사진들을 모아서
그룹핑한 것이라는 의미에서
‘분류'로 해석해주세요.
Class1이라고 적힌 부분에 손톱이라고 적습니다.
손톱이라는 이름의 클래스를 만든 것입니다.
그리고 Webcam 버튼을 누르고,
Hold to Record 버튼을 눌러서
손톱을 깨물고 있는 장면들을 촬영합니다.
‘손톱’이라는 이름(class)에 해당하는 사진을
손톱 클래스에 모았습니다.
사진이 많을수록 좋고,
부정확한 이미지가 없을수록 좋습니다.
‘손톱’이라는 이름을 만들었으면,
‘정상’이라는 이름(class)을 만들고,
손톱을 깨물지 않고 있는 사진을
정상 클래스에 등록합니다.
지금까지 우리가 한 일에 대해서 생각해봅시다.
우리는 컴퓨터에게
‘손톱'과 ‘정상'에 해당하는 사진을
학습시키기 위해서 자료를 모았습니다.
즉, 컴퓨터가 학습할 교재를 만든 것이라고 할 수 있습니다.
데이터를 충분히 입력했다면,
이제 학습을 시켜봅시다.
Train Model 버튼을 누릅니다.
이것이 기계에게 실제로 학습을 시키는 단계입니다.
기계는 여러 사진을 보고,
어떤 사진이 손톱 class에 속한 사진이고,
정상 class에 속한 사진인지를 열심히 학습하게 됩니다.
학습이 끝났다면 Preview를 살펴봅시다.
카메라를 보면서 손톱을 깨물어보세요.
‘손톱’의 수치가 높아질 것입니다.
손톱을 깨물지 않으면
‘정상’ 쪽의 수치가 높아질 것입니다.
이 수치는 기계가 판단한 확률입니다.
신기하게도 보여준 적이 없는 이미지를 만나도
그것이 손톱을 깨무는 모습인지
알아맞히는 것을 볼 수 있습니다.
이 단계에서 중요한 것은
기계가 학습을 제대로 했는지 평가하는 것입니다.
평가 결과 수치가 만족스럽지 않을 수 있습니다.
시험으로 치면 불합격을 한 셈입니다.
그럼 보다 많은 이미지를 추가하거나,
부정확한 이미지를 제거한 후에
다시 컴퓨터를 학습시킵니다.
예를 들어 손톱을 깨물고 있지 않은 이미지인데
손톱 class 목록에 그 이미지가 포함되어 있다면
부정확한 이미지라고 할 수 있겠습니다.
이것을 제거한 후에 다시 평가를 합니다.
이런 과정을 거치면 컴퓨터는 손톱과 정상을 점점 정교하게
구분할 수 있는 판단력을 갖게 될 것입니다.
사람이 경험과 공부를 통해서
더욱 정교한 판단력을 갖게 되는 것과 비슷하죠?
사람이 학습하듯이
기계를 학습시켜서
정확한 판단력을 갖게 한다는 점에서
이런 기술을 기계학습,
영어로 Machine Learning이라고 부르는 것입니다.
이제 우리 마음의 소리를 들어볼 차례입니다.
어떤 기분이 드나요?
신기하죠?
여러분이 진지한 몽상가라면
심장이 두근거릴 것입니다.
꿈꾸던 일들을 현실화할 수 있게 된 것이니까요.
신기해하는 것은 중요합니다.
신기해하는 것이야말로 생산자가 되는데 있어서
가장 중요한 재능이거든요.
혹시 신기하지 않다면,
신기해하기 위해서 노력해 보세요.
‘신기해하는 것’은
후천적인 노력으로 키울 수 있는 능력입니다.
우리는 손톱을 깨무는지를
구분할 수 있는 판단력을 기계로 구현했습니다.
이 판단력은 놀랍게도 파일로 만들어서
다운로드할 수 있습니다.
Export Model 버튼을 누르면
다운로드 받을 수 있는 여러가지 방법을 볼 수 있습니다.
Tensorflow.js 탭을 누르고,
Download 라디오 버튼을 누릅니다.
Download my model 버튼을 누르면
tm-my-image-model.zip 와 같은 이름의 파일을
다운로드 합니다.
이 파일의 압축을 풀어보면 3개의 파일이 있습니다.
파일명은 아래와 같습니다.
- metadata.json
- model.json
- weights.bin
바로 이 3개의 파일이
우리가 학습시킨 판단력입니다.
이 파일에 담겨있는
판단력이 머신러닝의 핵심입니다.
이 파일만 있다면
이 세상의 모든 컴퓨터가
손톱과 정상을 구분할 수 있는
판단력을 갖게 됩니다.
뒤에서 이 파일을 이용해서
놀라운 앱을 만들어 볼 것입니다.
그런데 사실 머신러닝에서는
판단력이라는 표현을 쓰지 않습니다.
대신 모델이라는 용어를 사용합니다.