CWN(CHANGE WITH NEWS) - 머신러닝, ′파이썬′이 아니라 ′자바스크립트′로 해야 하는 4가지 이유

  • 흐림남해20.4℃
  • 구름많음세종20.5℃
  • 흐림경주시20.5℃
  • 구름많음영월19.0℃
  • 흐림북부산22.3℃
  • 맑음춘천18.5℃
  • 흐림영주18.9℃
  • 맑음양평20.3℃
  • 구름많음서청주19.8℃
  • 구름조금북강릉19.7℃
  • 구름많음통영21.5℃
  • 흐림봉화18.0℃
  • 구름조금강릉21.3℃
  • 맑음홍천18.6℃
  • 흐림영광군20.7℃
  • 흐림정읍20.8℃
  • 흐림남원19.6℃
  • 맑음인제15.7℃
  • 흐림추풍령18.2℃
  • 흐림산청19.1℃
  • 맑음보령19.9℃
  • 비포항20.3℃
  • 구름많음천안19.2℃
  • 맑음속초19.6℃
  • 흐림장수18.4℃
  • 흐림목포21.1℃
  • 구름많음창원21.2℃
  • 흐림해남21.8℃
  • 흐림울산20.4℃
  • 맑음강화18.7℃
  • 구름많음부안20.2℃
  • 흐림성산24.9℃
  • 구름많음동해21.2℃
  • 흐림순창군19.5℃
  • 천둥번개서귀포26.1℃
  • 흐림울릉도23.6℃
  • 흐림고창군20.5℃
  • 흐림완도21.6℃
  • 맑음백령도22.0℃
  • 비제주25.6℃
  • 구름많음정선군17.5℃
  • 흐림진주19.7℃
  • 흐림부산22.6℃
  • 구름많음대전20.6℃
  • 흐림의령군19.2℃
  • 흐림고산25.0℃
  • 흐림울진21.4℃
  • 비안동19.5℃
  • 흐림상주18.7℃
  • 흐림문경18.5℃
  • 구름많음거제22.1℃
  • 흐림거창18.7℃
  • 맑음파주18.4℃
  • 흐림진도군21.2℃
  • 흐림고흥21.3℃
  • 흐림청송군19.0℃
  • 흐림보성군21.2℃
  • 맑음철원17.2℃
  • 흐림북창원21.5℃
  • 구름많음군산20.1℃
  • 비대구19.9℃
  • 구름많음청주22.5℃
  • 구름조금흑산도21.8℃
  • 구름조금이천19.8℃
  • 구름많음금산20.2℃
  • 맑음수원20.5℃
  • 구름많음원주20.7℃
  • 맑음서산19.9℃
  • 흐림여수21.0℃
  • 흐림합천20.1℃
  • 맑음동두천18.3℃
  • 구름많음임실19.7℃
  • 흐림함양군19.3℃
  • 흐림강진군21.6℃
  • 흐림고창20.8℃
  • 구름많음제천18.6℃
  • 흐림광양시20.6℃
  • 구름많음충주19.6℃
  • 흐림순천19.6℃
  • 맑음인천23.1℃
  • 흐림김해시20.8℃
  • 흐림양산시22.7℃
  • 흐림영천19.4℃
  • 흐림광주19.8℃
  • 구름조금대관령11.5℃
  • 구름많음전주21.1℃
  • 맑음홍성19.8℃
  • 흐림태백17.7℃
  • 흐림의성19.6℃
  • 흐림영덕19.0℃
  • 맑음서울21.9℃
  • 구름많음보은19.0℃
  • 흐림장흥21.1℃
  • 흐림구미19.6℃
  • 흐림밀양21.1℃
  • 맑음북춘천17.3℃
  • 구름많음부여19.1℃
  • 2025.09.10 (수)

머신러닝, '파이썬'이 아니라 '자바스크립트'로 해야 하는 4가지 이유

이진영 / 기사승인 : 2021-04-26 14:39:53
  • -
  • +
  • 인쇄

지난 몇 년 동안 파이썬의 인기가 점점 높아지고 있다. 특히 머신러닝과 딥러닝에서 파이썬의 선호가 높았는데, 파이썬의 풍부한 머신러닝·딥러닝 라이브러리 목록, 최적화된 구현, 확장성 및 다양한 기능에 많은 인기를 끌었다.

그런데, 머신 러닝 애플리케이션을 만들 때 '파이썬'이 유일한 답일까? 자바스크립트를 이용해 머신 러닝 프로그래밍을 하는 사람들이 많아지고 있다고 벤처비트가 보도했다.

자바스크립트가 파이썬의 풍부한 머신 러닝 환경을 대체하는 것은 아니다. 하지만 자바스크립트를 활용한 머신 러닝 기술을 보유해야 하는 4가지 이유가 있다.

1. 개인 기계 학습
대부분의 머신 러닝 애플리케이션은 클라이언트-서버 구조에 의존한다. 사용자는 기계 학습 모델이 실행 중인 곳에 데이터를 전송해야 한다. 이러한 클라이언트-서버 구조는 개발자가 자신의 모델을 서버에서 실행할 수 있고, 웹 API를 통해 사용자 애플리케이션에서 사용할 수 있게 하는 이점이 있다. 이느 개발자들이 사용자 기기에서 실행할 수 없는 매우 큰 신경망을 이용하는 것을 가능하게 한다.

하지만 많은 경우 사용자의 장치에서 머신러닝을 구동하는 게 바람직하다. 예를 들어 개인 정보 보호 문제로 인해 사용자는 자신의 사진, 개인 채팅 메시지 및 이메일을 컴퓨터 학습 모델이 실행 중인 서버로 전송하지 않을 수 있다.

다행히 모든 머신 러닝 응용 프로그램이 비싼 서버를 이용해야 하는 것은 아니다. 많은 모델을 압축해서 사용자 기기에서 실행되도록 할 수 있다. 또 모바일 장치 제조 업체들이 로컬 딥 러닝 추론을 지원하기 위해 장치에 칩을 장착하고 있다.

하지만 문제는 다수의 사용자 기기가 파이썬 머신 러닝을 지원하지 않는다는 것이다. MacOs 및 대부분의 Linux 버전은 파이썬이 설치되어 있지만, 머신 러닝 라이브러리는 별도로 설치해야 한다. 윈도우 사용자는 수동 설치가 필요하다. 또한 모바일 운영 체제의 경우 파이썬 인터프리터에 대한 지원이 부족하다.

반면 자바스크립트는 모든 최신 모바일 브라우저 및 데스크톱 브라우저에서 이를 기본으로 지원한다 즉 대부분의 데스크톱 및 모바일 장치에서 자바스크립트 기반 머신 러닝 애플리케이션을 실행할 수 있다는 것이다.

이미 자바스크립트 기반 머신 러닝 라이브러리가 여러 개 존재한다. 구글의 유명한 머신러닝·딥러닝 라이브러리의 자바스크립트 버전인 텐서플로.js(TensorFlow.js)가 있다. 텐서플로.js 데모 페이지에 들어가면 자바스크립트 머신 러닝을 사용한 다양한 예제를 볼 수 있다. 이는 클라우드에 데이터를 보내지 않고, 기기에서 머신러닝 학습 모델을 실행한다. 또 추가 소프트웨어를 설치하지 않아도 된다는 장점이 있다.

이 밖에도 ML5.js, 시냅틱(Synaptic), 브레인.js(Brain.js) 등 잘 알려진 강력한 자바스크립트 머신 러닝 라이브러리가 있다.

2. 빠르고 맞춤화된 ML 모델
기기 내에서 머신 러닝을 구동할 때 개인정보 보호뿐만 아니라 속도에서의 이점도 얻을 수 있다. 일부 응용 프로그램은 장치에서 서버로 데이터를 전송하는 데 걸리는 시간이 지연되며 사용자 환경에 방해가 될 수 있다. 기기 내에서 머신러닝을 구동할 경우 인터넷에 연결되지 않은 경우에도 컴퓨터 학습 모델을 실행할 수 있다. 이러한 경우 사용자의 장치에서 실행되는 자바스크립트 머신 러닝 모델을 사용하면 매우 편리하다.

자바스크립트 머신 러닝의 또 다른 중요한 용도는 '모델 사용자 지정'이다. 예를 들어 각 사용자 언어 기본 설정에 맞게 조정되는 텍스트 생성 머신 러닝 모델을 개발할 때, 사용자당 하나의 모델을 서버에 저장하고 사용자 데이터에 대해 학습할 수 있다. 따라서 사용자의 성장에 따라 서버에 추가 로드가 발생할 수 있으며, 잠재적으로 중요한 데이터를 클라우드에 저장해야 한다.

두 번째 방법은 서버에 기본 모델을 만들고, 사용자의 장치에 복사본을 만들어 자바스크립트 머신 러닝 라이브러리를 사용해 사용자의 데이터로 모델을 미세 조정하는 것이다. 이 경우 사용자의 장치에 데이터를 보관하기 때문에 서버로 데이터를 전송할 필요가 없다. 또 추가 추론 및 교육 로드를 클라우드에 보내지 않음으로써 서버 리소스를 확인할 수 있다. 사용자는 서버와의 연결이 끊어졌을 때도 머신 러닝 기능을 사용할 수 있다는 장점이 있다.

3. 웹 및 모바일 애플리케이션에서 머신 러닝을 쉽게 통합
자바스크립트 머신러닝은 모바일 애플리케이션과 손쉽게 통합할 수 있다는 장점이 있다. 파이썬은 모바일 운영체제에서의 지원이 아직 초기 단계에 있다. 반면 코도바(Cordova)와 아이오닉(Ionic)과 같은 다양한 크로스 플랫폼 자바 스크립트 모바일 앱 개발 툴이 이미 존재한다.

이러한 도구는 한 번의 코드 작성으로 iOS 및 Android 장치용으로 배포할 수 있어 인기를 끌고 있다. 서로 다른 운영체제에서 코드를 호환하기 위해 크로스 개발 도구는 '웹 뷰'를 시작한다. 웹 뷰는 자바스크립트 코드를 실행할 수 있고 대상 운영 체제의 네이티브 응용 프로그램에 포함될 수 있는 브라우저 객체이다. 이러한 브라우저 객체는 자바스크립트 머신 러닝 라이브러리를 지원한다.

다만 유명 크로스 플랫폼 모바일 앱 개발 프레임워크인 리액트 네이티브(React Native)는 애플리케이션 실행을 웹 뷰에 의존하지 않는다. 이에 구글은 리액트 네이티브용 텐서플로.js 특별 버전을 제공한다.

모바일 앱을 네이티브로 작성한 뒤 자바스크립트 머신 러닝 코드를 통합하려는 경우, 내장된 브라우저 객체(예: iOS의 WKWebView)를 앱에 추가할 수 있다.

텐서플로 라이트 및 코어 ML과 같은 모바일 애플리케이션을 위한 머신 러닝 라이브러리도 있다. 그러나 앱을 개발하는 모바일 플랫폼에는 네이티브 코딩이 필요하다. 반면 자바스크립트 머신 러닝은 브라우저용 머신 러닝 응용 프로그램 버전을 이미 구현한 경우, 거의 또는 전혀 변경하지 않고도 모바일 응용 프로그램으로 쉽게 포팅할 수 있다.

4. 서버에서 자바스크립트 시스템 학습
머신 러닝의 중요 과제 중 하나는 모델을 훈련하는 것이다. 특히 학습에 여러 시기에 걸친 값비싼 역 전파 계산이 필요한 딥 러닝의 경우 더 중요하다. 사용자 장치에서 딥 러닝 모델을 교육하는 것도 불가능하지는 않지만, 신경망의 크기가 크면 몇 주 또는 몇 달이 소요될 수 있다.

파이썬의 머신 러닝 모델은 서버 측 훈련에 더 적합하다. 서버 클러스터에 부하를 확장 및 분산하여 교육 프로세스를 가속할 수 있다. 이란 모델이 교육되면 이를 압축하고 추론을 위해 사용자 장치에 전달할 수 있다. 다행히 다른 언어로 작성된 머신 러닝 라이브러리가 호환성이 높기 때문에, 텐서플로 또는 파이썬을 위한 케라스(Keras for Python)으로 딥 러닝 모델을 훈련 시키고, JSON 또는 HDF5와 같은 여러 언어 독립적 형식 중 하나로 저장할 수 있다. 이후 저장된 모델을 사용자의 장치로 전송해 텐서플로.js 또는 다른 자바스크립트 딥 러닝 라이브러리로 불러올 수 있다.

서버 측 자바스크립트 머신 러닝 역시 성숙기에 접어들고 있다. 자바스크립트 애플리케이션 서버 엔진이 노드.js(Node.js)에서 자바스크립트 머신러닝 라이브러리를 실행할 수 있다. 텐서플로.js의 경우 노드.js를 실행하는 서버에 적합한 특별한 버전을 가지고 잇다. 텐서플로.js와 상호작용하기 위해 사용되는 자바스크립트 코드는 브라우저에서 실행되는 애플리케이션에 사용되는 것과 동일하다. 그러나 백그라운드에서 라이브러리는 훈련과 추론 속도를 높이기 위해 서버의 특수 하드웨어를 사용한다.

또 다른 인기파이썬 머신 러닝 라이브러리인 파이토치(PyTorch)는 아직 공식적으로 자바스크립트를 구현하지는 않지만, 오픈 소스 커뮤니티에서 이 라이브러리를 위한 자바스크립트 바인딩을 개발한 바 있다.

노트.js를 통한 머신 러닝은 꽤 최근 나온 것이지만, 웹과 모바일 애플리케이션에 머신 러닝 기능을 추가하는 것에 대한 관심이 증가하며 빠르게 발전하고 있다. 또 자바스크립트 머신 러닝 커뮤니티가 계속해서 성장하고 툴이 성숙해짐에 따라, 웹 개발자들에 대한 채택이 늘어날 수 있다.

[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]

최신기사

뉴스댓글 >

- 띄어 쓰기를 포함하여 250자 이내로 써주세요.
- 건전한 토론문화를 위해, 타인에게 불쾌감을 주는 욕설/비방/허위/명예훼손/도배 등의 댓글은 표시가 제한됩니다.

댓글 0

Today

Hot Issue