브라우저에 손글씨 신경망을 넣은 이야기
홈페이지의 손글씨 판은 서버를 부르지 않습니다. 파라미터 5천 개짜리 작은 합성곱 신경망이 방문자의 브라우저 안에서 직접 계산합니다.
LAB404 · 약 2분 읽기

홈페이지에 '숫자를 쓰면 AI가 읽는다'를 넣고 싶었습니다. 그런데 서버로 그림을 보내 답을 받아 오면 학생에게 보여 주고 싶은 것, 곧 계산이 어디서 어떻게 일어나는지가 사라집니다. 그래서 신경망을 통째로 브라우저에 넣기로 했습니다.
모델은 아주 작습니다. 3×3 합성곱 두 층과 풀링, 마지막에 10개 출력입니다. 파라미터가 5천 개쯤이라 파일로 66KB입니다. 손글씨 6만 장으로 네 번 학습시켰고 시험 문제 1만 장에서 98.6%를 맞혔습니다. 학습은 저희 컴퓨터에서 20초 걸렸습니다.
브라우저 쪽에서는 합성곱과 풀링을 자바스크립트로 그대로 다시 썼습니다. 라이브러리는 쓰지 않았습니다. 그래야 층마다 무엇이 켜지는지를 아카이브의 3D 화면처럼 꺼내 보여 줄 수 있기 때문입니다. 여러 자리 숫자는 붙어 있는 획끼리 묶어서 한 글자씩 자르고, 글자마다 무게 중심을 가운데로 옮긴 뒤 읽습니다. 학습 데이터가 그렇게 만들어졌기 때문입니다.
수업에서도 같은 순서로 갑니다. 먼저 쓰게 하고, 읽히는 것을 보게 하고, 그다음에 '왜 읽힐까'를 묻습니다.

