2-9 XOR 논리연산 성능 한계에 부딪힌 퍼셉트론

in #kr6 years ago (edited)

noname01.png

퍼셉트론의 성능 한계 노출

Rosenblatt의 신경망 연구 개발이 한창일 때에 인공 지능 연구도 1956년 다트머스 대학 (Dartmouth College)의 워크샵에서 시작되었다. 참석자로는 카네기 멜론 대학과 MIT 교수들 외에 IBM의 Arthur Samuel이 포함되어 있었으며 그 중에 뉴욕 브롱스 출신의 젊은 마빈 민스키도 포함되어 있었는데 Rosenblatt 과 1년 차 고교 동창으로 알려져 있다.
일단의 명문대 교수들을 주축으로 인공지능 연구가 시작되었고 재학생들은 언론에서 놀라움을 나타낼 만한 기술적인 프로그램을 제작 시연했다. 이미 1954년에 컴퓨터는 체커 게임 전략을 배우고 있었는데 1959년에는 보통 사람을 능가했다는 보도가 있었다. 그밖에 단계별 말로 하는 산수 수수께끼형 수학문제를 풀었고, 논리적 정리를 증명하였으며 영어로 말을 할 수 있었다고 한다. 영어로 말하기는 오늘날의 TTS(Text To Speech)인데 생각보다 빨리 이런 첨단 기술을 시도한 것으로 보인다.

한쪽에서는 Rosenblatt처럼 신경망 분야에 대한 R&D가 활발하게 이루어진 반면에 또 다른 AI 분야도 1960 년대 중반까지 미국방부의 많은 지원을 받았으며, 전 세계에 인공지능 연구소가 설립될 정도로 인기가 좋았다. AI의 발기자들은 대단히 낙관적이었는데, 카네기 멜론대의 시몬 (Herbert Simon) 교수는 "머신이 20년 내에 사람이 할 수 있는 일을 할 수 있게 될 것"이라고 뻥튀기 예측을 했는가 하면, MIT의 젊은 마빈 민스키는 한술 더 떠서 "한 세대 안에 인공 지능을 만드는 문제가 실질적으로 해결 될 것"이라고 동의하는 서면까지 작성했다는 해프닝이 있었다고 한다. 낙관적인 것은 좋으나 다소 병적인 몽상가 수준 아닌가 하는 느낌이 든다. 우리나라에서도 줄기세포 연구가 그랬던 것 같다.

한편 신경망 분야와도 연구펀드 및 우수 인력 유치를 위한 악의성 경쟁이 있었던 것으로 보인다. MIT 민스키 교수는 많은 시간을 할애해 10년 전에 제작된 Rosenblatt의 퍼셉트론을 세밀하게 분석해서 1969년에 Papert 교수와 함께 공저 퍼셉트론을 출판하게 된다. 이 책에서는 Rosenblatt 의 퍼셉트론의 문제점을 샅샅이 분석하여 2가지를 지적했다.

첫째, approve credit if Σ웨이트 곱하기 입력벡터〉0 과정에서 오류가 발생하면 어느 신경망이 잘못되었는지 알아낼 수 없다는 점이다. 60년대 기술로는 퍼셉트론 뿐만 아니라 디지털형 전자장치가 고장을 일으켜도 어느 부분이 잘못 된 건지 진단하기 어렵기는 마찬가지이다. 이러한 기술은 반도체 기술이 많이 발전한 1980년대 말 자동차 ECU에서 센서 및 엑츄에이터 시스템에서 자체적으로 고장진단이 되면 고장 코드를 낸드플레시 메모리에 저장하는 기술이 대표적이며 이미 보편화 되었다.

둘째, 논리 연산에서 AND 와 OR 논리는 가능하나 XOR 처리 능력이 없다는 점을 지적했다. 컴퓨터 자체적인 연산 기능에 AND 와 OR 는 기본적으로 들어가지만 1950년대 말 60년대 초 컴퓨터에서 XOR 논리가 지원 되었는지 알 수 없다.

noname04.png

Atmega 칩을 사용하는 아두이노 보드에서 지원하는 논리 연산 기능을 보면 불리언에서는 XOR 이 없으며 비트 연산에서는 XOR 이 지원되고 있다. 민스키 교수가 지적했던 점이 바로 이 비트 연산에서의 XOR 이었다.

퍼셉트론이 MARK I 컴퓨터를 바탕으로 제작되었기 때문에 컴퓨터의 문제인지 컴퓨터를 포장하여 만든 퍼셉트론의 문제인지 지금 분간하기는 어렵다. 어쨋든 퍼셉트론이 처음부터 XOR 논리를 처리할 수 있도록 설계된 머신이 아니기 때문에 당연히 처리 능력이 없을 수 있는 문제로서 제작된지 10년이 경과되어 알만한 전문가들은 다 아는 사실이었는데 굳이 지적을 하고 있다.

결국 아이러니하게 엉뚱한 내부 총질형의 퍼셉트론 출판이 기폭제가 되어 결국 1974년 미국과 영국 정부는 무능하기 짝이 없는 인공지능 뿐만 아니라 신경망 분야까지 망라하여 연구지원의 싹을 잘라버려 결국은 폭망하게 되었으며 그 이후 IBM 의 전문가 시스템 정도만 남기고 AI 분야 자체는 아예 소멸된 듯하다. 지금에 와서 보면 신경망을 중심으로 하는 머신 러닝이 간신히 명맥을 유지해 AI 소멸에 따른 공백을 메워나가는 듯하다. 결국 60여년의 우여곡절을 거치고 오직 머신 러닝 분야에서 외로운 족적을 남겼던 Rosenblatt의 퍼셉트론 신경망 연구 업적 정도가 오늘날에도 재조명을 받고 있다.

#논리연산, 논리 게이트, HIGH, LOW
Rosenblatt 의 퍼셉트론을 이해하는 과정에서 포유류의 망막(retina)의 시신경 구조를 모델링했던 Photocell 즉 조도센서 입력 벡터 성분이 몇 개인가에 따라 N=1, N=2일 때 처리 방법을 Rosenblatt 의 웨이트 업데이트 방식과 TensofFlow Softmax 머신 러닝으로 분석을 해 보았다. 물론 높은 해상도를 가지게 되는 N = 400 일 때 제대로 특정 이미지를 생각대로 라벨 값을 계산해 낼 수 있는냐는 문제도 중요하겠지만 이 문제에 대한 해답은 N=784에 해당하는 MNIST로 이미 충분한 대답이 될 수 있어 보인다.

N=1 또는 N=2일 때 사용했던 조도센서는 normalization 한 데이터가 0.0∼1.0 사이의 아날로그 값을 가질 수 있다. 하지만 퍼셉트론을 떠나서 컴퓨터라고 하면 기본적으로 논리 연산이 가능해야 한다. 이진법으로 작동되는 컴퓨터의 가산기의 원리를 보면 비트별로 “0”과 “1”을 가지고 연산을 수행한다. “0”과 “1”은 한편으로 LOW 또는 HIGH에 해당하는데 컴퓨터를 구성하는 TTL(Transistor Transotor Logic)게이트 로직이나 집적회로 단위에서 하드웨어적인 작동이 가능해야 한다.

noname02.png

더 가까이에서 보면 마이크로 콘드롤러 보드인 아두이노 우노 보드에서도 이러한 모든 성능을 다 들여다 볼 수 있다. 아두이노 우노 보드는 6개의 아날로그 입력 핀을 가지고 있다.

analogRead 명령을 사용하여 0∼5V 사이의 전압을 0∼1023까지의 정수 형태로 읽어 낼 수 있다. 반면에 디지털 핀은 2종류가 있다. 우선 13개의 디지털 핀 전체가 LOW 와 HIGH 전압
값을 읽거나 출력할 수 있다. 아울러 물결 표시가 있는 PWM 핀인 3,5,7,9,11번 핀은 0∼255 사이의 값에 해당하는 아날로그 값을 출력할 수도 있다.

TTL 반도체 소자의 논리: “0”(LOW) 과 “1”(HIGH)

아두이노의 디지털 데이터 핀 또는 라즈베리 파이의 GPIO 디지털 출력은 “0” 과 “1” 또는 “”ON“과”OFF“ 또는 “LOW”와 “HIGH” 로 표현한다. TTL을 대상으로 이러한 논리(LOGIC) 의 배경을 고려하자. 컴퓨터 공학에서 다루는 논리 “0”과 “1”은 공급해 주는 전압 환경 하에서 트랜지스터와 같은 반도체 소자를 사용하여 실현할 수 있다.

noname03.png

TTL 반도체 소자에 있어서 기준 전압 Vcc 는 아두이노처럼 항상 5.0V 이다.
논리 상태 “0” 또는 LOW 라 함은 TTL 반도체 TR 입력 관점에서 0.0∼0.8V 의 전압 범위를 뜻하며 HIGH라 함은 2.0∼5.0V 의 전압 범위를 뜻한다. 문제는 0.8∼2.0V 사이의 전압인데 이러한 입력 전압은 회로 기술적으로 철저하게 회피할 수 있어야 TTL 회로를 바탕으로 구성된 논리 회로의 애매함이나 부정확성을 피할 수 있게 된다. 출력 상태는 다소 상이점이 있으나 앞서 논의된 범위 내에 포함된다는 점에 유의한다. 입력과 출력 전압을 동시에 고려하면 입출력의 LOW는 0∼0.4V HIGH는 2.7∼5V로 보면 된다. 아울러 CMOS 반도체에서는 “0” 즉 LOW 상태는 전원 전압의 1/3 선 이하여야 하며 “1” 에 해당하는 HIGH는 전원 전압의 2/3 선 이상으로 정해진다는 점을 참조하다.

위 그림에서 AND 논리 집적회로에서 x1 과 x2 가 각각 0.2V 0.3V 로 주어진다면 이는 각각 LOW 가 입력되는 것이며 이 집적회로가 AND 연산을 하게 되면 결과가 LOW 가 나와야 되므로 즉 출력 전업 범위가 0∼0.4V 이면 충족이 된다. 따라서 이 결과 전압을 LOW 로 인식하는 것이다. 반면에 x1 이 2.8V, x2 가 3.3V 이면 AND 연산 결과 출력 전압이 2.7∼5.0V 범위이면 HIGH가 된다. HIGH 인지 LOW 인지 수치적으로 판단하려면 5V를 100% 로 두면 LOW의 전압 범위는 8% 이하이며 HIGH는 54∼100% 범위가 된다. 이러한 기준은 퍼셉트론 머신러닝에서 0.5 즉 50% 를 중심으로 그 이상이면 HIGH 그 이하이면 LOW 로 판별함과 비교된다. 앞으로 다루게 될 AND, OR 및 XOR 논리에서 다루게 될 “0” 과 “1”의 논리는 이러한 논의를 바탕으로 한다는 점에 유의하자.

Sort:  

Excellent article. I learned a lot of new things. I signed up and voted. I will be glad to mutual subscription))))

@codingart 님 안녕하세요 ㅎㅎ
스팀잇 계정만 있으면 에어드랍 해주는 바이트볼 받으셨나요 ^^?
https://steemit.com/kr/@ganzi/3upsb7
위 링크에 쉽게 설명해 놓았습니다!
바이트볼 > 스팀달러 로 환전도 해드립니다 ㅎㅎ

Congratulations @codingart! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

You published a post every day of the week

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

즐거운 스팀잇 생활하시나요?
무더위야 가라!!!!

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 71539.00
ETH 3603.23
USDT 1.00
SBD 4.75