brain.js - 자바스크립트로 Neural network 사용해 보기
- 배경색과 글씨색이 잘 보이는 것을 선택하면 뉴럴 네트워크로 학습하고 결과 보여줌
- 뉴럴 네트워크 구현에는 brain.js를 사용할 수 있음
- brain.js는 자바스크립트로 구현된 신경망 프레임워크
- XOR 기능 구현을 예시로 보여줌
- NeuralNetwork는 1과 0으로 판단하지만 RNN, LSTM, GRU 등 다양한 기법 사용 가능
- LSTM으로 훈련하면 NeuralNetwork보다 시간이 오래 걸림
- 샘플 몇 개만 입력하면 신경망을 만들 수 있음
- 훈련한 모델은 json으로 저장하고 불러올 수 있음
- 동영상 강의를 통해 뉴럴 네트워크에 대해 배울 수 있음
- brain.js는 신경망에 대해 설명할 때 유용함
전에 남세동 대표님께서 색깔 대비를 유튜브에서 보여줬었다. 배경색과 글씨색이 잘 보이는 것을 선택하면 이 패턴을 뉴럴 네트워크로 학습해서 결과를 보여주는 것이다. 어떤것이 더 잘보이는지 클릭을 하면 내가 학습시킨 신경망하고 YIQ formular하고 얼마나 같거나 다른지 비교해 준다.
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)이 됩니다.
두 입력 값이 동일한 경우에는 결과가 거짓(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 에서 동영상 강의를 볼 수 있다.
나중에 시간날 때 한번 보고 싶다. (근데 요즘 시간이 없다 ㅠㅠ)
뉴럴 네트워크에 대해 배우거나 시도해 볼 때 정말 좋은 자바스크립트 프레임워크인것 같다. 신경망에 대해 설명을 할 때 좋을 것 같다.