머신러닝 기술은 1950년대에 처음으로 발명되었습니다. 그때는 지금처럼 머신러닝이 컴퓨터 과학 분야에서 흥미를 끌었던 시기가 아니었습니다. 하지만 딥러닝과 인공지능의 혁신으로 돈과 인력 측면에서 방대한 규모의 자원이 머신러닝 분야 연구에 투입되었습니다. 일례로, 대학 연구실에서 엄청난 양의 GPU 컴퓨팅 파워를 사용하는 것은 드문 일이 아니게 되었죠. 오늘날 산업계와 학계는 컴퓨터 과학 분야에서 도약을 이루기 위해 열심히 협력하고 있습니다.
[그림 : pixabay.com]
우리는 전례 없던 규모의 데이터를 생성하고 마주하는 시대에 살고 있습니다. 대규모 데이터를 분석하여 얻을 수 있는 가치에 대한 수요가 많아지면서 머신러닝의 중요성이 더 커졌습니다. 머신러닝 기술은 그 어느 때보다도 확장성이 좋고(scalable) 재현 가능한(reproducible) 방식으로 혁신적인 통찰을 발견할 기회를 줍니다.
지난 10년 동안 머신러닝 분야에서 집중적인 연구가 이루어졌습니다. 그중에서도 딥러닝은 이미지 인식, 오디오 생성, 기계 번역 등의 문제에서 인간 지능에 견주는 정확도를 달성한 기술이라고 할 수 있습니다. 학계와 산업계 모두에서는 이러한 추세를 따르기 위해 많은 머신러닝 프레임워크를 개발하고 있습니다. 기술은 이와 같은 사례를 더 촉진하며, 관련 연구가 더 활발히 이루어지는 데 기여합니다.
그러나 머신러닝 기술을 사용하여 사용자 친화적인 애플리케이션을 만드는 것은 여전히 어려운 일입니다. 대부분의 머신러닝 프레임워크는 수천 개의 머신과 GPU 같은 가속기에서 구동되는 분산 시스템 환경에서 돌아가도록 설계되고 최적화됩니다. 일반적으로 머신러닝 모델은 이미 주어진 데이터셋으로 학습한 후 이전에 알려지지 않은 것을 예측하는 데 사용됩니다. GPU와 가속기를 포함하는 환경은 학습 단계에서만 사용됩니다.
이는 머신러닝 모델을 효율적으로 학습하는 것을 가능하게 하지만, 동시에 모델의 학습 단계와 추론 단계 사이에 벽을 형성합니다. 학습된 모델이 실제 데이터에서 잘 동작하도록 만들어야 하기 때문입니다. 이를 위해 커스텀 데이터셋을 사용하여 모델을 파인튜닝(fine-tuning)하거나, 사용자의 환경에서 실행 가능한 형식으로 모델을 변환해야 할 수도 있습니다. 이는 머신러닝 기술을 적용하는 애플리케이션을 만들 때, 머신러닝 모델과 사용자 환경을 통합한다는 측면에서 새로운 과제를 해결해야 한다는 것을 의미합니다.
사용자가 실제 사용하는 플랫폼으로 머신러닝 모델을 포팅(porting)하는 일은 많은 시간과 고도의 기술을 요구합니다. 모델은 실제 사용될 환경과 바로 호환되지 않기 때문입니다. 이런 점 때문에 파이썬을 주 언어로 사용하는 데이터 과학자들이 자바스크립트로 웹 애플리케이션을 만들 때 난관에 부딪칩니다.
그런 의미에서 웹은 애플리케이션의 종류와 상관없이 엔드유저(end user)가 가장 많이 사용하는 환경이라고 할 수 있습니다. 머신러닝 애플리케이션도 예외는 아닙니다. 앞으로는 더욱 많은 사용자가 웹상에서 머신러닝 애플리케이션을 사용하게 될 것이며, 그런 점에서 웹은 머신러닝 애플리케이션을 위한 차세대 교두보(frontier)라고 할 수 있습니다. 머신러닝을 웹에서 돌아가게 만드는 기술은 실세계에서의 머신러닝 사용 사례를 확장할 것입니다.
웹에서 하는 머신러닝의 장점은 모든 모바일, 데스크톱 브라우저에서 자바스크립트가 지원되므로 사용자가 (추가 소프트웨어를) 아무것도 설치할 필요가 없다는 점을 들 수 있습니다. 서버가 필요없어 모바일, 컴퓨터 등 사용자 시스템에서 실행할 수 있다는 점을 잘 활용할 필요가 있죠. 사진, 개인 채팅 메시지, 이메일 등 개인정보를 서버로 전송하지 않아도 됨으로 개인정보보호 이슈에서 좀더 자유로울 수도 있습니다. 머신러닝의 활용폭을 확장할 수 있다는 점도 특징입니다. 인터넷에 연결되지 않아도 실행 가능하므로 상황에 따라 유용하게 활용할 수 있겠죠.
[그림 : pixabay.com]
어디서나 어떤 상황에서나 할 수 있는 머신러닝이 가능한 셈인데, 카메라 입력과 같이 프론트엔드 구성 요소를 활용하는 기계 학습 웹 애플리케이션에서는 자바스크립트를 사용하는 것이 더 실용적일 수 있습니다. 이는 서버를 통한 데이터 전송이나 네트워킹 이슈에서 자유롭기에 지연의 이슈에서 자유롭다는 것을 의미하기도 합니다. 사용자 기기의 GPU를 활용할 수도 있겠죠.
무엇보다 웹 브라우저에서 머신러닝 모델을 정의, 테스트, 실행할 수 있는 TensorFlow.js 라이브러리가 있다는 점은 웹에서 머신러닝을 하는데 좋은 접근성을 제공합니다. 자바스크립트는 많은 개발자 커뮤니티를 보유하고 있어서 관련 정보를 얻거나 도움을 받거나 개발팀을 꾸리는 데 유리할 수 있는데, 특히나 TensorFlow.js는 구글이 관여한 자바스크립트 머신러닝 라이브러리로 주목 받습니다.
TensorFlow.js
TensorFlow.js는 텐서플로 파이썬 API와 호환이 되는 머신러닝 모델을 구성하고자 할 때 사용하는 프레임워크입니다. TensorFlow.js는 텐서플로 파이썬 API와는 달리 웹 환경에 매끄럽게 통합할 수 있기 때문에 어느 플랫폼에서든지 머신러닝 알고리즘을 빠르게 돌려볼 수 있습니다. 구글에서 최초로 개발했으며, 처음에는 deeplearn.js라는 오픈소스 소프트웨어로 배포되었습니다. 개발자들이 고생해준 덕분에 현재는 텐서플로 제품군 중에서도 대단히 활발히 개발되고 있는 프로젝트에 속합니다.
머신러닝 애플리케이션을 만들고자 하는 개발자에게 TensorFlow.js가 왜 그렇게 중요한 걸까요? 이 프레임워크의 중요성을 보여주는 다양한 특징들이 있습니다. 다음편에서 TensorFlow.js의 특징들을 좀더 자세히 살펴보겠습니다.
- 다음편 : 웹에서 하는 머신러닝, TensorFlow.js의 특징들
이 글은 <웹 브라우저 속 머신러닝 TensorFlow.js> 도서 내용 일부를 발췌 편집하여 작성되었습니다. 웹 브라우저 머신러닝에 대한 보다 자세한 정보는 하기 책에서 만나볼 수 있습니다.
이전 글 : 웹에서 하는 머신러닝, TensorFlow.js의 특징들
다음 글 : AI 제품 관리자에게 필요한 실무 기술
최신 콘텐츠