[5악장-concerto] 머신러닝과 코딩
자, 농사를 짓기 위해 땅을 알아본다고 가정해보겠습니다. 만약 황량한 땅을 준비했다면 돌을 골라내고 수로도 끌어와서 하나하나 농사를 위한 준비를 많이 해야 합니다. 하지만 만약 평야 지대에 땅도 비옥하고 수로도 정비되어 있다면 어떨까요? 게다가 삽, 호미와 같은 도구에서부터 경운기, 트랙터 같은 농기구까지 갖추어져 있다면 농사짓기 훨씬 편하겠죠?
모든 땅이 농사는 지을 수 있듯 대부분의 컴퓨터 언어는 열심히 알고리즘을 코딩할 수 있다면 인공지능을 구현할 수 있습니다. 즉, 인공지능을 구현할 수 있는 특정한 컴퓨터 언어가 따로 있는 것은 아닙니다. (알고리즘을 언어를 통해 구현하면 되기 때문입니다.) 하지만 인공지능을 편리하게 사용할 수 있도록 개발되어있는 컴퓨터 언어가 일부 있습니다. 이러한 언어를 활용해 개발도 하고, 우리와 같은 교사들은 교육도 편리하게 할 수 있습니다.
컴퓨터 언어는 형태에 따라 크게 블록 형태로 코딩하기도 하고 텍스트 기반으로 코딩하는 언어들이 있습니다. 오늘은 그중 블록 코딩으로 구현하는 인공지능에 대해 먼저 살펴보도록 하겠습니다.
블록 코딩이란 레고 블록을 맞추듯 마우스로 코드 블록을 끼워 맞추면서 코딩을 하는 것을 말합니다. 블록 코딩은 2005년 MIT 연구소에서 스크래치(scratch)를 개발하면서 시작되었는데 텍스트 형태로 된 명령어를 외우기 힘들어하는 어린이들이 코딩을 쉽게 배울 수 있도록 되어 있습니다. 국내에서도 네이버 커넥티드 재단에 의해 엔트리(Entry)가 개발되어 초등학교, 중학교 정보 교육에 활발하게 사용되고 있습니다.
블록 코딩은 코딩 입문의 문턱을 확 낮추었고 문법적 구조를 쉽게 파악할 수 있다는 장점이 있습니다. 이 때문에 코딩을 잘 모르는 학생들이 캠프와 같이 시간이 제한적인 프로그램에 참여할 때라던가, 텍스트 코딩 문법에 익숙하지 않은 학생들이 코딩을 쉽게 접하는데 많이 활용하고 있습니다.
code.org에서는 약 4세 정도의 글을 읽지 못하는 어린이들도 코딩을 배울 수 있는 ‘프리 리더 익스프레스(Pre-reader Express)’ 과정을 운영하고 있습니다. 직관적으로 그림이 그려진 블록을 맞추면서 미션을 완성하는 게임의 형태로 코딩을 접할 수 있도록 구성되어 있습니다. 다양한 형태의 코딩 게임을 통해 어린이들이 순차적 실행, 조건에 따른 실행, 반복 실행 등의 코딩 개념을 쉽게 익힐 수 있도록 프로그램을 제공하고 있습니다.
초등 및 중학교에서 주로 활용하고 있는 블록 코딩으로는 mit에서 개발하여 전 세계적으로 활용되고 있는 스크래치(Scratch), 국내 네이버 커넥티드 재단에서 개발한 엔트리(Entry), makeblock사에서 개발한 엠블럭(mBlock) 등이 대표적입니다. 가장 먼저 개발된 스크래치는 어떠한 코드로 개발이 되었는지 공개한 ‘오픈 소스’로 만들어졌습니다. 따라서 여러 나라들이 스크래치의 공개된 코드를 활용해 스크래치와 연동이 되는 블록 코딩 언어를 개발해서 활용하고 있습니다.
블록 코딩은 모양에 따라 끼워 맞추면 되기 때문에 문법을 직관적으로 이해할 수 있습니다. 코딩 업체에서 인공지능을 활용하기 위한 블록을 개발하면 사용자 입장에서는 적절하게 끼워 맞추면 사용할 수 있다는 장점이 있습니다.
위의 그림은 엔트리에서 도입한 인공지능 기능의 블록입니다. 엔트리는 각 컴퓨터에 설치된 웹캠을 활용하여 이미지를 인식하고, 컴퓨터의 마이크나 인공지능 스피커 클로바 등을 연결하여 오디오 감지를 활용한 인공지능도 활용할 수 있습니다. 예를 들면 아래의 블록으로 맞추어진 코드와 화면은 웹캠으로 사람의 얼굴의 눈, 코, 입을 인식한 후 어떤 감정인지를 파악하는 프로그램의 예시입니다. 이 프로그램을 통해 카메라를 통한 자신의 얼굴을 인공지능이 정확하게 눈, 코, 입의 위치를 인식하고 표정에 따른 감정을 자동적으로 분류하는 것을 볼 수 있습니다.
블록 코딩의 인공지능은 학생들이 인공지능을 쉽게 체험하고 발전 가능성을 살펴보는 교육 활동에 적합합니다. 비록 개발되어 있는 블록만 활용할 수 있어서 코드 구현이 제한적이라는 한계점은 있지만 다양한 인식 기능을 활용한 인공지능 체험을 코드의 어려움 없이 다룰 수 있다는 장점이 있습니다. 다양한 캠프에서 인공지능 체험을 통해 미래의 제품을 개발할 가능성을 체험하는 활동을 할 수 있습니다.
KT에서는 쉽게 인공지능을 체험하고 익힐 수 있는 'KT AI 코딩 블록’을 출시했습니다. 이 플랫폼을 통해 인공지능, 사물인터넷, 빅데이터 등의 세상의 기술들을 쉽게 학습하고 구현할 수 있도록 해놓았는데 사용 방법은 스크래치, 엔트리 등의 블록 코딩과 유사합니다.
최근에는 인식 기능의 인식 블록 외에도 실제로 데이터를 통해 인공지능을 학습시켜 코드를 작성하는 블록 코딩도 도입되고 있습니다. 가장 대표적인 것이 영국에서 개발된 machine learning for kids입니다. 이 플랫폼에서는 인공지능은 IBM Watson을 활용하여 데이터 학습을 하고 스크래치나 파이썬 등의 언어를 활용해 코딩을 할 수 있도록 서비스를 제공합니다. IBM Watson을 활용하기 위한 몇 가지 단계를 교사의 도움을 받아 해결한다면 스크래치를 연결해 직접 데이터를 활용한 머신러닝을 블록 코딩으로 작성할 수 있습니다. (파이썬을 비롯한 텍스트 언어로 연결시킬 수도 있습니다.)
아래는 machine learning for kids를 활용하여 종이 쓰레기와 플라스틱 쓰레기를 분류하는 인공지능 프로그램의 대략적인 작성 순서입니다.
① 먼저 아이디어를 구상해봅니다. 웹캠을 통해 인식된 이미지가 종이인지 플라스틱인지를 구분하는 프로그램을 작성해보기로 합니다.
② 인공지능을 활용하기 위해 IBM Cloud의 왓슨 API를 신청합니다. 신청은 Lite나 평가판 버전은 무료로 이용할 수 있습니다.
③ machinelearning for kids 사이트에 가입한 후 위에서 받은 왓슨 api를 연결합니다. 이후 프로젝트를 생성합니다. 프로젝트에서 디자인했던 프로그램을 스크래치를 이용하여 작성을 합니다.
④ 데이터 학습을 위한 이미지 파일을 모아줍니다. 웹캠이 아닌 이미지 파일로도 학습을 시킬 수 있습니다. 인터넷에서 모은 종이와 플라스틱 쓰레기 이미지를 분류함으로써 각 파일에 대한 레이블을 생성할 수 있습니다.
⑤ 앞에서 분류한 파일들로 학습을 진행합니다.
⑥ 스크래치로 작성했던 프로그램을 직접 실행해봅니다. 학습을 통해 어느 정도의 확률로 종이와 플라스틱을 확신하는지도 볼 수 있습니다.
최근에는 인공지능 기능을 활용한 로봇 활동도 많이 시도되고 있습니다. 중국의 스타트업 기업인 DFRobot이 지난 2020년 2월 인공지능 기반 카메라인 허스키 렌즈(Huskylens)를 선보였습니다.
허스키 렌즈는 자체적으로 얼굴 인식, 물체 인식, 색상 인식, 태그 인식, 물체 추적, 라인 추적 등과 같은 기능을 내장하고 있습니다. 이 렌즈는 마이크로비트, 아두이노 등 학교에서 활용하는 마이크로 컨트롤러와 연결하여 다양하게 활용되고 있습니다. 특히 마이크로비트는 회로 구성이 어렵지 않고 주로 블록 코딩을 활용하고 있기 때문에 초등학교, 중학교 과정에서 허스키 렌즈와 함께 많이 활용하고 있습니다.
허스키 렌즈의 인공지능 기능을 활용한 프로젝트가 많이 개발되고 있습니다. 대표적인 프로젝트가 라인 추적 RC카 만들기, 얼굴인식 자동문 만들기 등입니다. 비록 사람이 타고 다니는 자동차나 실제 집에 설치하는 현관문이 아닌 프로토타입 형태의 활동이지만 허스키 렌즈의 인공지능 기능을 활용해 실제로 동작하는 교구를 만들어볼 수 있습니다.