머신 러닝에서 확률분포의 역할에 대해서 알아보았지만 아직은 머신 러닝이라는 큰 코끼리의 어느 부위인지 조차 알기가 어렵다. 그렇다고 막바로 뉴럴 네트워크를 어떻게 해본다는 것은 바위에 계란 던진다는 느낌밖에 들지 않는다. 그래서 머신 러닝도 일종의 빅뱅이라 보이므로 아무래도 타임머신으로 시작된 년도로 거슬러 올라 가보자. 다행스럽게도 검색에서 얻은 정보인데 MLWave라는 사이트에 online learning perceptron에 대한 주제가 포함되어 있었다.
MLwave 자료를 보니 1943년까지 거슬러 올라간 시점에서 Rosenblatt 이전에 머신 러닝의 빅뱅의 전조가 있었던 걸로 보인다. 1943년경에는 아직 최초의 컴퓨터로 알려진 ENIAC이 등장하기 전 인듯하다.
1943년 하면 컴퓨터 대신 주판가지고 놀던 시대이므로 컴퓨터와 코드는 전혀 없는듯한데 뭘 가지고 퍼셉트론에 관한 논문을 썻을까? 저자인 McCulloch(신경학자)과 Pitts(논리학자)의 논문 제목을 읽어보자. 구글 번역인데 미적분이란 용어 빼고는 그럴듯하다. 미적분을 계산으로 바꾸어 읽어 보도록 한다.
신경 활동에 내재 한 아이디어의 논리적 계산
A Logical Calculus of the Ideas Immanent in Nervous Activity
논문의 주제는 새가 모이를 먹는데 모이 색깔이 갈색인지 둥글둥글한지 2가지를 체크한다, 둘 다 OK 이면 먹고(참,“1”) 아니면 안 먹는다.(거짓,“0”). 지금의 AND 로직 문제이다. 이 문제를 다음과 같이 멋있게 신경망(뉴럴 네트워크)으로 그려보자.
이 뉴런에서 2개의 입력이 1 이고 합해서 2가 되면 설정된 활성화 임계치 (Activation Threshold) 1.5를 넘으면 Fire 즉 발사 (결과1)이고 아니면 결과는 불발 (결과 0)이다. 간단한 문제인데 간 볼 필요도 없이 필요한 개념은 다 들어간 듯하다.
그 얘기 이후로 1957년의 심리학자인 Rosenblatt에게 바톤이 넘어가게 간다. Rosenblatt은 cognitive pchycologist 즉 인지 심리학자로서 퍼셉트론을 발명한다. 영문 원어로 보면 invent 란 용어를 사용하는데 발명 특허까지 가지 않았을까 한다. 일단 특별한 장치를 만드는 것을 목표로 했지만 알고리듬 성격이 강했기 때문에 처음에는 IBM 704 컴퓨터에 소프트웨어로 설치되었지만 곧 커스터마이즈된 컴퓨터 Mark I에 처음으로 퍼셉트론 알고리듬을 가지고 실제 하드웨어에 뉴럴 네트워크를 설치하였다.
1960년에는 random 신호를 받을 수 있게 400개의 Photocell이 Mark 1 퍼셉트론에 연결되어 기초적인 이미지를 인식하였다. MNIST 이미지가 28X28 란 사실과 비교해 보면 그 당시로는 회로 구현을 위해 대단한 노력을 경주하지 않았나 하는 생각이 든다. 사진에서 보면 Photocell 센서와 복잡하게 얽힌 wiring을 볼 수 있는데 이는 실제 뉴론이 복잡하게 얽혀 있는 구조를 흉내 낸 듯하다. 하지만 컴퓨터와 인터페이스 되는 구조기 때문에 겉보기엔 Random 해도 장치가 작동하면 어느 센서가 어디에 연결되어 있는지 다 알 수 있는 구조일 것이다.
이 그림에서 Rosenblatt 의 퍼셉트론 wiring 다이아그램인데 실제 망막(retina) 의 시신경 연결에서처럼 여러 개의 Random 한 신경줄이 하나의 반응 유닛에 연결되어 있음을 볼 수 있다. 오른 쪽은 일종의 모델링으로서 여러 개의 비트맵 이미지 픽셀들이 개별 유닛에 입력되어 퍼셉트론을 구성하고 있다.
아래의 망막 시신경 연결 구조에 대한 슬라이드를 보면 random connections이 왜 등장해야 하는지 및 첫 번째 사진의 와이어링에 대한 직접적인 해답이 될 수 있을 듯하다.
softmax 확률분포에 의한 MNIST 수기 숫자 인식 파이선 코드에서도 실제의 망막에서처럼 여러 개의 random 한 시신경 센서로부터의 입력을 고려하지는 않았음에 유의하자. 당장 코드를 어떻게 수정해서 처리 할 수 있도록 답을 줄 수 있는 것은 아니지만 Rosenblatt도 이문제를 알고 있었으며 어디엔가 힌트나 정답을 남겨 두었으리라 생각 된다.
퍼셉트론에 대해서 집고 넘어 가야할 것은 Photocell 이란 부품을 사용했다고 한다는 점이다. Photodiode를 연상했는데 검색을 해보니 Photocell 또는 Photoresistor 또는 Photo detector 또는 Cds를 뜻한다. 아두이노 공작에 흔히 사용하는 일명 조도센서이다.
조도센서 배선도 그림에서 보면 조도센서는 100KΩ 저항 하나와 직렬 연결하여 회로를 형성한다. Cds센서를 태양 빛에 노출하면 낮은 저항 값 70Ω 수준이 되며 손가락으로 가리면 60KΩ 수준으로 높은 저항 값을 가지게 된다. 이 아두이노 배선도에 의한 실제 실험에 따르면 창가에서 해질 무렵 밝기가 어두워지면 6KΩ을 넘어가게 되면 LED가 ON 점등된다.
1KΩ 저항에 가해지는 전압을 살펴보면 LED ON OFF를 위하여 6KΩ을 임계치로 하여 급격한 저항 값 변동을 관찰할 수 있다. 뉴럴 네트워크에서 항상 사용되는 Sigmoid 함수의 급격한 변화를 연상 시킨다.
이러한 Cds 센서를 20X20 개 만큼 설치하여 이미지 인식을 한다고 상상해 보자. 물론 20X20 센서 화면에 흑백 명암을 투사하게 되면 각각의 Photocell 회로에서 아두이노 회로에서처럼 아날로그 측정을 위한 Random 한 입력 전압 값을 받아 올 수 있을 것이다.
Rosenblatt 이 신경망(뉴럴 네트워크)에 기반을 둔 퍼셉트론 구조를 발명했다는 의미는 이미 다루어 보았던 선형 회귀문제를 TensofFlow 로 어떻게 다루었는지 우리가 이해하고 있듯이 훤히 꿰뚫고 있다고 보아야 할 것이다.
오늘날의 지도 학습(Supervised Learning) 머신 러닝에서는 선형회귀 문제이든 softmax 확률분포 문제이든 입력 값을 받아 웨이트와 바이아스로 hypothesis를 준비 후 cost 함수를 구성하여 수학적인 경사 하강법 알고리듬에 의해서 각 웨이트 별 기울기 값에 해당하는 편미분 계수를 구해 프로그래머에 의해 주어진 learning rate 값을 사용해 cost 함수를 최소화 해 하게끔 되어 있다.
이에 비추어 보아 아래의 그림에서는 Rosenblatt 가 생각하고 구성했던 신경망에서 어떻게 입력하고 전동 모터 구동으로 가변 저항을 돌려 웨이트와 바이아스를 설정해 주었는지에 대한 힌트를 제공한다.
Rosenblatt 의 퍼셉트론 장치는 인간의 시각 구조를 정말 있는 그대로 엘렉트로닉스로 재현했으며 신경망 알고리듬도 이미 틀을 다 만든 상태 지금 보아도 우리가 하고 있는 이상의 것을 이미 그 당시에 쿨하게 완성하고 있었으며, 그는 앞으로 곧 다가올 미래에 오늘날 우리가 목격하고 있는 인공지능의 대부분을 당연한 것으로 이해하고 있었던 것으로 보인다.
Rosenblatt 의 신경망 연구가 비록 오래 되었다고는 하나 아직도 머신 러닝을 시작하려는 많은 이들에게 쉽게 이해하기 어려운 분야로 남아 있다. 그러한 의미에서 Rosenblatt 의 알고리듬 코딩 예제를 좀 더 소개할 계획이다.
'머신러닝' 카테고리의 다른 글
2-15 Rosenblatt 퍼셉트론의 웨이트 업데이트 알고리듬을 쉽게 이해해 보자! (0) | 2021.07.01 |
---|---|
2-14 Sigmoid vs softmax 확률분포 비교: Rosenblatt 퍼셉트론 N = 1 (0) | 2021.06.30 |
1-27 softmax 머신 러닝의 cross entropy vs least square cost 함수 (0) | 2021.06.28 |
1-26 Irises flower(붓꽃) dataset 텐서플로우 머신 러닝 (0) | 2021.06.27 |
1-25 볼츠만 확률 분포에서의 Random 변수와 조건부 확률분포 (0) | 2021.06.27 |