닫기
닫기

Do ICT Yourself! 내가 만드는 사물인터넷과 인공지능-소프트웨어 편

2018.03.12 FacebookTwitterNaver

▲ 사물인터넷과 인공지능 관련 소프트웨어를 직접 만들 수 있는 도구가 늘어나고 있습니다

스마트폰 앱 쉽게 만들기 – App Inventor

누구나 스마트 폰에는 다양한 앱을 가지고 있습니다. 하지만 정작 내게 필요한 기능이 담긴 앱을 찾을 수 없을 때는 어떻게 할까요? 차라리 직접 앱을 만들고 싶다는 생각을 한 번쯤 해보셨을지도 모르겠습니다. 사실 스마트폰 앱 개발은 코딩 좀 한다는 사람들에게도 쉽지 않은 분야입니다. 하지만 MIT에서 개발한 앱 인벤터(App Inventor)를 쓰면 간단하게 스마트 폰 앱을 만들 수 있습니다. 앱 인벤터는 안드로이드 스마트 폰 앱을 쉽게 만들 수 있는 도구로, MIT에서 개발했습니다. 여러 기능의 아이콘을 화면에 끌어다 놓는 것만으로 앱을 쉽게 개발할 수 있도록 만들어졌습니다.

▲ 아이들도 쉽게 배울 수 있는 앱 개발 도구가 등장하는 추세입니다

앱 인벤터는 교육용으로도 매우 적합해서, 많은 교육 기관에서 앱 인벤터를 활용해 앱 개발을 교육하고 있습니다. 아이들도 몇 시간만 배우면 반짝이는 아이디어를 금세 실제로 동작하는 스마트 폰 앱으로 바꿀 수 있습니다. 이렇게 앱 인벤터를 통해 코딩에 흥미를 느낀 학생들이 더 어려운 프로젝트에도 도전하기도 합니다.

▲ MIT 앱 인벤터 홈페이지의 ‘이달의 앱(App of the Month)’

앱 인벤터를 통해서 어떤 앱을 만들 수 있을까요? 간단하게는 손가락으로 스마트 폰 화면에 그림을 그릴 수 있는 스케치북 프로그램에서부터, 비행기 슈팅 게임이나 채팅 앱처럼 꽤 복잡한 기능의 앱까지 한계 없이 만들 수 있습니다. 학생들이 만든 앱을 홈페이지의 이달의 앱(App of the Month)에서 확인할 수 있습니다.

▲ 앱 인벤터로 쉽게 앱 만들기 ①디자이너 화면에서 스크린 디자인 ②블록으로 기능 조립 ③QR 코드로 앱 다운로드 ④앱 실행 화면

앱 인벤터를 처음 실행시키면 왼쪽엔 팔레트(Palette) 영역이 있고 이 팔레트에는 버튼, 체크박스, 이미지, 동영상, 데이터 저장소같이 앱 화면이나 기능을 구성하는 요소들이 배치돼 있습니다. 화면 오른쪽에선 앱 화면을 디자인할 수 있는 디자이너(Designer) 화면, 그리고 블록을 조립하듯이 코딩할 수 있는 블록(Blocks) 화면을 번갈아 볼 수 있습니다.

만약 버튼을 누를 때 “안녕?”이라는 글자가 출력되는 앱을 만들고 싶다면, 디자이너 화면에서 버튼과 글자가 표시될 수 있는 라벨(Label)을 드래그하고, 블록 코딩 화면에서 버튼이 눌릴 때 “안녕?”이라는 글자로 라벨이 바뀌도록 쉽게 편집할 수 있습니다. 이렇게 원하는 기능을 완성했다면 QR 코드를 이용해 스마트폰으로 바로 앱을 내려받을 수 있습니다.

어려울 줄만 알았던 스마트 폰 앱 개발이 이렇게 쉽다는 것을 알고, 많은 어린 학생들이 열광적으로 앱 인벤터에 빠져드는 모습을 볼 수 있습니다. 물론 저도 앱 인벤터에 빠져있는 덕후 가운데 하나입니다.

인공지능도 이제 어렵지 않다_’오픈 AI 짐’과 ‘텐서플로 플레이그라운드’

▲ 일론 머스크와 샘 알트만이 만든 ‘오픈 AI’ 홈페이지 화면

오픈 AI(Open AI)는 인공지능을 연구하는 비영리 회사입니다. 인류에 도움이 될 수 있도록 디지털 지능을 발전시키는 데 목적을 두고 있습니다. 테슬라의 CEO 일론 머스크, 그리고 스타트업 지원으로 유명한 와이 콤비네이터의 샘 알트만이 2015년 10월 설립했습니다. 인공지능의 발달이 자칫 인류에게 미칠 수 있는 위험이 걱정스럽다는 게 오픈 AI의 설립 동기입니다.

오픈 AI 짐(Open AI Gym)은 오픈 AI가 제공하는 개발 도구입니다. 파이썬(Python) 언어를 기반으로 강화 학습(Reinforcement Learning) 알고리즘을 쉽게 개발할 수 있도록 돕습니다. 강화 학습은 2016년 초 이세돌과 대결하며 주목을 받았던 알파고가 바둑을 학습한 머신 러닝의 한 종류입니다. 강화학습을 통해 컴퓨터는 주어진 환경에서 현재 상태를 인식하고 보상을 극대화하는 행동이 무엇인지 배워나갑니다. 현실에서 이러한 문제가 적용되는 분야는 다양하기에 최근 활발하게 연구되고 있는 주제이기도 합니다. 강화 학습을 새로 배우고 적용하려는 사람이 늘어남에 따라 강화학습을 배우기 위한 개발 도구의 역할도 그만큼 중요해졌습니다. 기존에는 오랫동안 같은 주제를 연구했던 소수의 연구자가 접근할 수 있는 영역이었다면, 최근에는 오픈 AI 짐 같은 도구의 도움으로 비교적 쉽게 강화 학습을 배우고 테스트할 수 있게 됐습니다.

오픈 AI 짐은 옛날 초등학교 앞 문방구에 있던 벽돌 깨기나 슈퍼 마리오 같은 게임을 통해서 자기가 만든 강화 학습 알고리즘을 훈련하고 연구할 수 있도록 도와줍니다. 하지만 오픈 AI 짐 같은 도구의 도움에도 불구하고, 머신 러닝은 여전히 어려운 분야입니다. 강화 학습보다는 조금 더 간단한 머신 러닝 도구도 있습니다. ‘신경망(Neural Network)’이라는 용어를 들어본 적 있으실 텐데요. 신경망은 기본적으로 사람의 두뇌에 있는 신경 세포 작용을 모방합니다. 특정 자극에만 반응해 활성화되거나 또는 비활성화 상태로 남아있는 신경세포를 여러 층으로 쌓고, 이 신경 세포들이 원하는 목적에 맞게 잘 반응하도록 훈련시키는 것입니다. 그래서 인공 신경망(Neural Network) 이론도 최근 활발하게 연구되고 있는 머신 러닝의 분야입니다. 신경망을 웹 브라우저에서 직접 만들어 테스트 해볼 수 있는 도구가 있습니다. 바로 텐서플로 플레이그라운드 (Tensorflow Playground)입니다.

▲ 텐서플로우 플레이그라운드에서 신경망을 훈련 시키는 방법 ①대각선으로 잘 나눠진 데이터 ②간단히 분류된 데이터 ③나선형으로 서로 섞여 있는 데이터 ④복잡한 신경망

텐서플로(Tensorflow)는 구글이 만든 머신 러닝 소프트웨어 라이브러리입니다. 2015년 말 공개된 뒤로 빠르게 업데이트 중이죠. 텐서플로 플레이그라운드는 교육 목적으로 시각화해 쉽게 배울 수 있도록 만들어졌습니다.

텐서플로 플레이그라운드에 들어가면, 화면 왼쪽부터 신경망을 만들어 갈 수 있도록 구성됩니다. 제일 왼쪽부터 분류에 사용할 데이터 형태를 선택하고, 몇 번의 클릭으로 신경망 구조를 만듭니다. 그리고 트레이닝을 시작하면 실시간으로 아웃풋을 확인할 수 있습니다. 데이터의 분포 형태에 따라서 간단한 신경망으로도 쉽게 훈련되는가 하면, 나선 모양으로 얽혀있는 데이터 같은 경우에는 꽤 복잡한 신경망을 만들어서 훈련해야 합니다. 이런 시행착오를 하는 과정에서 신경망 기반의 머신 러닝의 원리를 재미있게 이해하고 더 배우고 싶은 흥미가 일어납니다.

사물인터넷을 위한 레고_Node-RED

모바일 앱과 인공지능을 쉽게 만들고 테스트하는 도구를 알아봤습니다. 사물인터넷을 위한 프로그램을 만드는 것도 만만찮게 어렵습니다. 디바이스, 네트워크, 플랫폼, 서버 기술 등 다양한 기술 요소들을 한데 모아야 하거든요. 이렇게 어려운 사물인터넷 서비스 개발을 위해서 태어난 도구가 ‘Node-RED’입니다. Node-RED는 사물인터넷을 위한 하드웨어와 서비스를 쉽게 연결할 수 있도록 IBM이 개발한 도구입니다. 앞서 소개한 앱 인벤터와도 유사한 인터페이스를 사용하고 있는데요. 팔레트에 있는 각종 노드를 연결해서 플로우로 만들어 가는 방식입니다.

화면 가장 왼쪽에는 고유한 기능을 가진 노드를 선택할 수 있는 팔레트가 있고, 화면 가운데에 이런 노드를 이어서 플로우로 만들 수 있는 캔버스가 있습니다. 이렇게 이어진 노드에 더 상세한 기능을 지정할 수 있도록 화면 오른쪽에서 직접 코딩을 할 수도 있습니다. 기존에는 센서와 MCU 등을 컨트롤 하는 기능을 직접 C와 같은 low-level 언어로 코딩을 해야만 했던 작업인데요. 이제는 레고 블록을 조립하는 것처럼 간단합니다.

▲ Node-RED로 사물인터넷 서비스 간단하게 만들기 ①Node-RED 기본 실행 화면 ②각종 필요한 Node를 이어서 플로우로 만듭니다

Node-RED는 2016년부터 오픈소스로 공개돼 있습니다. 이를 이용한 여러 가지 특화된 파생 툴이 나오고 있죠. 삼성전자의 ‘ARTIK’이라는 사물인터넷 플랫폼이 Node-RED 기반의 개발 환경을 지원하고 있으며, SK텔레콤(이하 SKT)도 ‘Sketch’라는 사물인터넷 서비스를 쉽게 만들 수 있는 개발 환경을 곧 공개할 예정입니다.

▲ SKT의 Node-RED 기반 사물인터넷 서비스 개발 환경 Sketch

SKT의 Sketch를 이용하면 SKT 사물인터넷 전용망인 LoRa네트워크(LPWA)나 LTE-M네트워크를 사용하는 사물인터넷 기기를 예전보다 쉽고 빠르게 만들고 테스트할 수 있습니다. 그리고 사물인터넷 개념을 배우려는 학생들은 하드웨어, 플랫폼, 서버 기술을 따로따로 전부 배우지 않고서도 전체 흐름을 쉽게 이해하면서 사물인터넷을 위한 아이디어를 구체화할 수 있게 될 것입니다.

지난해 페루에서 열린 SKT 티움 모바일 전시장에서 VR 기기를 체험하는 어린이

SKT도 이런 첨단 기술을 친근하게 느끼고 자유롭게 사용하는 인재를 육성하는 데 관심을 기울이고 있습니다. 찾아가는 ICT 교육 전시관인 티움 모바일 또한 이런 노력의 하나입니다. 이미 우리나라 방방곡곡을 찾아갔던 티움 모바일은 지난해 페루에 방문해 정보 기술의 격차를 줄이는 데 큰 기여할 것으로 보입니다.

이처럼 최근 새롭게 주목 받는 인공지능과 사물인터넷 기술을 쉽고 재밌게 배울 수 있도록 돕는 도구들이 많습니다. 빠르게 진보하는 기술 사회를 선도할 인재들이 이런 도구를 통해서 재능을 빛낼 수 있을 것을 기대합니다.

FacebookTwitterNaver