검색
검색
공개 노트 검색
회원가입로그인

brain.js - 자바스크립트로 Neural network 사용해 보기

요약
  • 배경색과 글씨색이 잘 보이는 것을 선택하면 뉴럴 네트워크로 학습하고 결과 보여줌
  • 뉴럴 네트워크 구현에는 brain.js를 사용할 수 있음
  • brain.js는 자바스크립트로 구현된 신경망 프레임워크
  • XOR 기능 구현을 예시로 보여줌
  • NeuralNetwork는 1과 0으로 판단하지만 RNN, LSTM, GRU 등 다양한 기법 사용 가능
  • LSTM으로 훈련하면 NeuralNetwork보다 시간이 오래 걸림
  • 샘플 몇 개만 입력하면 신경망을 만들 수 있음
  • 훈련한 모델은 json으로 저장하고 불러올 수 있음
  • 동영상 강의를 통해 뉴럴 네트워크에 대해 배울 수 있음
  • brain.js는 신경망에 대해 설명할 때 유용함

전에 남세동 대표님께서 색깔 대비를 유튜브에서 보여줬었다. 배경색과 글씨색이 잘 보이는 것을 선택하면 이 패턴을 뉴럴 네트워크로 학습해서 결과를 보여주는 것이다. 어떤것이 더 잘보이는지 클릭을 하면 내가 학습시킨 신경망하고 YIQ formular하고 얼마나 같거나 다른지 비교해 준다.

brain.js - 자바스크립트로 Neural network 사용해 보기 image 1

brain.js demo: Train a neural network to recognize color contrast

궁금해서 찾아봤는데 brain.js 라는 것이다. 신경망을 JavaScript로 구현하여 브라우저와 Node.js 백엔드에서 사용할 수 있다.

GitHub - BrainJS/brain.js: 🤖 GPU accelerated Neural networks in JavaScript for Browsers and Node.js

XOR 기능 구현

const net = new brain.NeuralNetwork({});

net.train([
  { input: [0, 0], output: [0] },
  { input: [0, 1], output: [1] },
  { input: [1, 0], output: [1] },
  { input: [1, 1], output: [0] },
]);

const output = net.run([1, 0]); // [0.987]

NeuralNetwork를 사용해서 XOR 을 구현한 것이다. XOR 논리는 다음과 같다.

  1. 두 입력 값이 서로 다른 경우에만 결과가 참(1)이 됩니다.

  2. 두 입력 값이 동일한 경우에는 결과가 거짓(0)이 됩니다.

train 한 후 run을 하면 0.987이라는 값이 나온다. 정확하게 1이나 0이 되지는 않고 근사치로 나온다.

이렇게 샘플 몇개만 입력을 하면 신경망을 만들 수 있다니 놀랍지 않은가?

NeuralNetwork는 1과 0으로 판단하지만 RNN, LSTM, GRU 같은 다양한 기법을 사용할 수 있다.

LSTM으로 훈련

const net = new brain.recurrent.LSTM();

net.train([
  'doe, a deer, a female deer',
  'ray, a drop of golden sun',
  'me, a name I call myself',
]);

const output = net.run('doe'); // ', a deer, a female deer'

LSTM으로 훈련하면 NeuralNetwork 보다 시간이 좀 더 오래 걸린다. 그래도 doe를 입력하면 다음 문장인 , a deer, a female deer 를 이야기 한다. ChatGPT와 비스무리한 기능이다.

훈련한 모델은 json으로 저장하고 불러올 수 있다.

강의 동영상

Neural Networks In JavaScript - Brain.js Tutorial | Scrimba 에서 동영상 강의를 볼 수 있다.

brain.js - 자바스크립트로 Neural network 사용해 보기 image 2

나중에 시간날 때 한번 보고 싶다. (근데 요즘 시간이 없다 ㅠㅠ)

뉴럴 네트워크에 대해 배우거나 시도해 볼 때 정말 좋은 자바스크립트 프레임워크인것 같다. 신경망에 대해 설명을 할 때 좋을 것 같다.

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 461
heart
T
페이지 기반 대답
AI Chat