Rosenblatt의 퍼셉트론 알고리듬이 1957년 세상에 출현한지도 60년이 넘어가고 있다. 이미 아주 오래 전에 출현한 알고리듬이긴 하지만 오늘날의 머신 러닝이 갖춰야 할 필수적인 부분들이 거의 망라되어 있어 보인다. 물론 당시에 오늘날 TensorFlow를 비롯한 모든 머신 러닝 소프트웨어에서 사용하는 Hypothesis 설정과 이를 이용한 cost 함수의 구성 및 경사하강법(GradientDescent) 적용과 같은 형태를 갖춘 것은 아니나 1980년대를 넘어가면서 해결이 된 뉴럴 네트워크(Neural Network) 문제를 원초적으로 배태하고 있었다는 점이다.
아울러 Rosenblatt의 퍼셉트론의 일차적인 연구 목표는 의학적인 관점에서의 시지각 뉴론의 특성을 반영하여 이미지 센서와 컴퓨터를 사용한 비전 시스템을 구성하였다는 점이다. 이 비전 시스템에 의한 이미지 지각은 뉴럴 네트워크를 확장하여 오늘날의 CNN(Convolutionary Neural Network)으로 발전하였으며 아직까지도 컴퓨팅 타임 소모가 지나치게 많아 앞으로도 많은 개량이 필요해 보인다.
Rosenblatt 이 사용했던 이미지 센서 즉 일명 포토센서 내지는 조도센서는 오늘날 고해상도의 스마트폰 카메라 이미지 센서의 원형으로 볼 수 있을 것이다.
포토센서 하나인 N = 1 인 경우의 문제는 밝다와 어둡다 즉 명암 문제로 귀착이 된다. 즉 “명”과 “암”으로 라벨 명을 부여할 수 있으며 또는 “+1”과 “-1” 로 이진분류(Binary Classification)할 수도 있을 것이다.
포토 센서의 수가 늘어나게 되면 MNIST 수기 숫자 인식 문제에서처럼 28X28 이미지 데이터를 처리할 수도 있게 된다. 아울러 이러한 Classification 작업은 오늘 날 CNN을 비롯한 머신 러닝에서 흔하게 사용하는 Softmax 확률 기법을 적용하게 되는 계기를 제공했다고도 보인다.
사실 머신 러닝을 공부하다 보면 예를 들어 줄만한 간단한 실제 사례가 거의 전무한 분야라는 것을 알 게 될 것이다. 오죽하면 초딩들이나 할법한 아두이노 조도센서 프로젝트를 N = 1 학습사례로 삼았을까 한다. N = 2 사례는 더욱 드물다. 대부분 그냥 좌표 숫자 데이터만 가지고 처리하는 경향이 많다. 그 보다 난 접근법이 위 붓꽃 데이터에서 꽃잎 길이와 꽃받침 길이 랜덤 데이터를 사용하여 Classification을 해보는 게 그래도 가장 실제적 사례라 볼 수 있을 것이다. 사실 붓꽃 데이터는 성격상 통계학 분야의 데이터이기 때문에 붓꽃 종류를 분류하는데 Classification 작업에 대단히 적합하지만 요즈음 많이 다루는 CNN의 이미지 종류를 알아내는 분석과는 방향이 다른 듯하다. 하지만 아직까지 지구상에서 초보자들이 머신 러닝 코드를 돌려 볼만한 쓸만한 데이타로는 유일하다고 볼 수 있다.
한편 Rosenblatt 당시에는 오늘날처럼 Hypothesis를 설정하고 cost 함수를 구성하여 GradientDescent 적용과 같은 접근법이 없었다. 지금 trainning을 진행하기 위하여 우리가 사용하는 웨이트 업데이트 방식은 1986년에 캐나다의 Hinton 교수가 연구했던 Backpropagation 기법에 의한 것이다. 따라서 Rosenblatt 은 뉴론 관찰에서 얻어진 특성을 그대로 사용하는 웨이트 업데이트 기법을 적용되었다.
왼쪽 사진을 처음 보면 도대체 왜 이런 복잡스런 배선을 만들었나 하는 의아심이 들 수 있는데 이 복잡한 배선은 실제 생체 뉴런들의 연결 상태를 모방한 fully connected 뉴럴 네트워크를 생각하면 될 것이다.
sign() 으로 정의 하는 함수는 웨이트 벡터와 입력 벡터 값을 각각 곱하여 합산하고 바이어스를 더한 값이 threshold 를 넘는지 아니지를 따져보기 위한 함수이다. sign() 이란 함수는 부호를 판별할 수 있도록 작성된 루틴이다. 의학적으로 관찰했던 뉴론의 특성을 정확하게 수학적 계산으로 옮긴 것이다.
여기에 웨이트 업데이트 방식이 추가되면 Rosenblatt 의 퍼셉트론 알고리듬이 완성되는 것이다.
그런데 머신 러닝을 공부하는 초보자가 여기까지 내용을 아무리 읽어 보아도 Rosenblatt 이 도대체 무엇을 대상으로 뭘 어떻게 하겠다는 건지를 도대체 알 수가 없는데 바로 그것이 정상이라 본다. 여기서 이미 뭘 파악했다고 하면 그것은 착각임에 틀림 없다. 머신 러닝이 어렵게 느껴질 수도 있는 부분이기도 하다. Rosenblatt 의 퍼셉트론 접근법은 아무런 문제가 없으나 컴퓨터 언어 방식으로 벡터계산 알고리듬이 간략하게 소개되어 있어 상당히 추상적이랄까 하는 느낌이 강하게 들고 Rosenblatt 진정한 코딩 의도를 이해하기가 쉽지 않은듯하다.
Rosenblatt이 직면했던 웨이트 업데이트 작업은 1970년대를 지나 1980년대에 Backpropagation 기법이 완성으로 해결을 보았다. 하지만 Rosenblatt 당대에서 뉴론의 단순 모델링으로 승부를 보아야 했다. 그가 사용했던 이미지 센서 시스템은 400개의 포토 셀로 구성된다. 즉 20X20 수준의 픽셀 데이터를 처리할 수 있는 규모인데 그 당시의 컴퓨팅 파워로는 머신 러닝 코드 실행에 역부족이었을 것이다.
한편 Rosenblatt의 웨이트 업데이트 방식에 관한 자료를 검색해 보자.
이 부분에서 sign() 판별 후 목표 라벨 값에 도달하지 못했을 경우 웨이트와 바이아스를 업데이트하여 looping 작업을 하게 된다. 위 그림에서 빨간 색 박스 친 영역의 기하학적 설명이 Rosenblatt 의 퍼셉트론과 관련하여 이해가 된다면 필자가 여러번 뜻어 본 결과에 의하면 당신은 비정상적일수도 있습니다. 이 부분은 실제이지만 우스개 소리로 이해하도록 하자.
지난 무더웠던 여름 시즌부터 검토를 해본 결과 이 부분을 쉽게 이해하기 위해 다시 Iris 붓꽃 데이터를 사용해 보기로 하자.
다음 편에 이어질 예정입니다.