인공 지능

가장 좋은 설명은 구체적인 예로 설명하는 것이다.
추상적인 이해와 응용은 그 다음이다.
전문 용어는 최대한 피한다.

인공 지능을 정복한 자가 세계를 지배한다.
인류 중에 엘리트 1%만 일을 하고 99%는 실직자가 될 것이다.
인공 지능이 완성 되면 공산주의처럼 일자리 나누기, 배급제를 해야 할 것이다.

유전 공학을 정복한 자가 생사여탈권을 쥔다.
유전자를 정복하면 더 이상 할 일이 없을 것이다.
우린 죽겠지만 후손들은 불로장생을 얻겠지.

자동차 설계자, 제작자, 운전자의 차이가 있는 것처럼
인공 지능 사용자, 툴 개발자, 이론 연구가는 다르다.
우린 인공 지능 도구 사용자이다.



인간 지능에 대한 오해


인간은 평소에도 뇌의 대부분을 사용하고 있다.
※ 평소에 근력의 99%를 사용하진 않지만 뇌는 다르다.

IQ Test : 저능아 10%를 가려내려는 목적 → 단종 실행 → 유전 아님 → 단종 취소
※ 미인은 부모의 묘한 유전자 조합으로 생긴 것이라 그대로 유전 되지 않는다.
※ 조부모의 유전자가 손자 대에 나타날 수도 있으니 부모만 보고 판단하지 말라.

지능형성 : 유전(선천적) 25% + 환경(후천적) 75%
※ 이 중에 교육이 50%이다. 교육만 잘 받아도 50%는 먹고 들어간다.
※ 아기~초등학생 때까지 자극, 환경, 교육이 지능(두뇌 회로 형성)을 발달시킨다.
※ 후천적 요인이 크기 때문에 지능은 변한다. 지능은 훈련으로 향상 된다.
※ 호기심은 지능과 학습을 향상시킨다. 호기심이 없으면 발전도 없다.

비율지능 : (20살 지능 / 10살 지능) x 100 = 200 ☞ 방송에서 주로 과장할 때
※ 빨리 자란다고 거인이 되지 않듯이 아기 천재가 성인 천재가 되진 않는다.
※ 대기만성(큰 그릇은 늦게 완성 된다.), 신장도 지능도 성인이 되어야 결정 된다.

편차지능 : 평균 = 100, 편차 15, 16, 24 사용하여 쓸데없는 혼동을 준다.
※ 1%에 속하면 IQ Test로는 그들 사이의 지능 차이를 구분할 변별력이 거의 없다.
※ 편차 15/16이 일반적, 편차 24는 멘사에서 자신들을 과대포장하기 위해 사용




비율지능 200 : 100만분의 1, 돌연변이 확률 ☞ 가끔 그런 아기들 나온다.
편차지능 200(편차15/16) : 60억분의 1, 현대 인류 최고 머리 ☞ 당연히 뻥이다.
편차지능 207(편차15/16) : 1천억분의 1, 인류 발생 이후 최고 머리 ☞ 무조건 뻥이다.

지능 지수 차이가 우리의 몸무게나 신장처럼 명확하게 지능의 차이를 나타내지는 않는다. IQ 200? 몸무게나 신장이 2배 차이나는 경우는 없다. 인간의 지능이 2배나 차이가 날 수 있겠는가? 그게 뭘 의미하지? 지능 차이보다 더 심한 것은 빈부격차다. 인간의 능력이 10배, 100배, 1000배 차이가 날 수 있겠는가? 우리의 경제 시스템에 문제가 있는 거다. (대부분 졸부가 사기, 속임수, 도둑질, 로또, 착취로 번 것이다.)

자신의 지능지수보다는 몇 %에 속하는지 기억하는 게 더 낫다. 난 고등학교 때 IQ Test에서 편차를 뭐로 하든 1% 급이었다. 100명 중 1명이니 한국에만 50만이 있다. (기억하기론 0.05% 안에 들었고 계산을 해 보니 편차 15/16인 것 같다. 학교에서 수행한 테스트니 편차 15/16을 적용했을 것이다.) 헌데 공부와는 거리가 좀 멀지? 국어, 영어는 정말 피곤했다. 나중엔 수학도 피곤해지더라. 이후 공부하지 않고 술과 게임으로 아둔해졌다.

지능 지수와 성적은 약간의 상관관계(0.5~0.6)가 있다. (상관계수 0은 아무 상관없단 의미) 지능 지수가 높아도 공부 잘 하지는 않는다. 공부에 관심 없는 경우도 있고, 공부 머리완 거리가 멀기도 해서다. 나의 경우 영어 단어 외우는 것이 시간 낭비로 보였다. 솔직히 한국에서 사는데 영어는 거의 쓸데가 없다. 국력 향상에도 별 도움 안 된다. (오히려 돈과 시간 낭비로 국력을 약화시킨다.) 아둔한 사람이 열심히 공부한다.




어쩌면 지능 테스트는 단거리 달리기에 불과한 것은 아닐까? 잠시 반짝 순발력
공부가 장거리 달리기라면 지능 지수는 무용지물이다. 여긴 지구력이 중요하다.

운동에서 가장 피곤한 것은 체력 유지이다.
운동신경이 아무리 좋아도 체력이 약하면 무용지물.
공부에서 가장 피곤한 것은 기억 유지이다.
지능지수가 아무리 높아도 기억이 흐리면 무용지물.

기억하는가? 지능 테스트에는 기억 테스트가 없다. 기억은 해마가 담당.
본격적으로 해마의 발달이 되는 시기는 만 3세 무렵이다. 인생이 시작된다.
해바가 발달하면서 언어 능력, 자의식이 생긴다. 기억이 없으면 의식도 없다.

자신이 가장 잘 기억할 수 있는 분야가 자신의 천직이다. 
미술과 음악에 특화된 지능이 있는 것처럼 언어와 수학에 특화된 지능이 있다.
지능이 높으면 일반적으로 기억력과 계산력도 좋지만 만능인 지능은 없다.
그러니 서로 돕고 살자. 협력만큼 강한 지능은 없다.

아기 천재든 성인이 된 후에 IQ Test 점수가 높든 이런 사람들은 마치 저능아처럼 사회 적응을 잘 못 해서 성공하지 못 하는 경우가 많다. 어쩌면 공부에 지쳐 진학을 하지 않거나 학문에 뜻을 두지 않는 경우도 많다. 직업 또한 돈 버는 일과 무관한 경우도 많다. 자폐증처럼 사교성에 문제도 있다. 또는 평범한 사람들과 사고방식이 다르다. 아둔한 세상 사람들의 질투도 있어 성공하기 힘들다. 지능이 높은 남녀는 지적 수준에 맞는 짝을 찾기 힘들다. 외로운 사람들이다. 지능이나 신장은 평균보다 약간 높으면 충분하다. 너무 예민하고 똑똑하면 세상과 멀어진다. (가장 키 큰 애가 항상 본보기로 두드려 맞는 것처럼)

누가 봐도 천재라고 할 수밖에 없는 러시아 유대계 미국 아이(윌리엄 제임스 시디스)가 있었다. 어른 수준에서도 천재라 할 수 있는 능력을 아이 때에 보였으니까. 유전적? 일단 부모 자체가 머리가 좋았다. 그리고 좋은 후천적 조기 교육이 있었다. 부모로부터 받은 유전자는 씨앗이고 부모의 특별한 조기 교육으로 천재가 된 것이다. 언어/수학 양쪽으로 머리가 좋았던 것 같다. 헌데 얘는 질투로 왕따 당한 천재였다. 이 친구 결국 익명으로 글이나 쓰며 살다 일찍 죽었다. 대부분 어린 천재들이 이런 식으로 부모의 조기 교육으로 만들어진다. 이런 애들은 사회성이 떨어진다. 애들은 동년배 친구들과 놀아야 정상적 인간이 된다.

단순히 머리가 좋아서 대통령이 되는 거라면 서울대생들이 정치하겠지?
정치는 다수의 지지를 받아야하기 때문에 오히려 평균에 가까워야 한다.
정치는 덕(德/悳)으로 하는 것이고 한자를 풀면 직심(直心:곧은 마음)이다.
부수 彳척은 천천히 걷는 것을 말한다. 남들과 함께 가야 하니까.




기계는 인식보단 출력을 더 잘 한다.


기계의 장점은 인간 육체보다 강하고, 빠르고, 정확하다는 것이다. 기계의 단점은 인간보다 지능이 낮다는 것이다. 기계는 인간보다 음악 연주도 잘하고, 그림도 잘 그리며, 기억력도 좋고, 계산도 빠르고 정확하다. 단순한 짓은 정말 잘 한다. 그런데 외부에서 들어오는 정보를 분석하여 판단하거나, 미래 계획을 세우거나, 복잡한 동작(춤/무술/기계체조)을 못 한다. 기계는 원을 기가 막히게 잘 그리지만 그게 원인지는 모른다.




도대체 컴퓨터와 인간 두뇌의 차이가 뭘까? 원자를 묶어 분자를 만들고 분자를 묶어 고분자를 만들어 생명 세포의 기초 부품으로 사용한다. 마찬가지로 컴퓨터나 두뇌도 기초 부품이 있다. 이 기초 부품의 성능은 컴퓨터가 압도적이다. 문제는 이 부품들로 만든 회로에 차이가 있다. 컴퓨터는 병렬 처리하는 부분보다 직렬 처리하는 부분의 비중이 크다. 인간의 경우 5감에서 오는 정보 대부분 병렬 처리를 하기 때문에 컴퓨터보다 빠르다. 

인간은 눈, 귀, 코, 혀, 촉감 5개 감각이 있는데 컴퓨터는 기껏해야 키보드, 마우스 정도가 촉감이고 단순하다. 마이크가 귀가 되는데 음성 인식 기능으로 쓸 생각이 없었기 때문에 주파수 분석 기능이 없다. 겨우 녹음기 수준의 역할만 한다. 카메라가 눈에 해당할 것인데 역시 영상 인식 기능으로 쓸 생각이 없었기 때문에 사진기 수준의 역할만 하고 있다. 즉 필요한 병렬 분석 회로가 없기 때문에 직렬로 모방을 해야 하니 인간보다 느린 것이다.

고차원적인 지능인 논리 추론이나 언어 처리 부분은 절차적으로 처리할 수밖에 없는 정보라 둘 다 어차피 같은 직렬 회로이기 때문에 제대로 프로그램을 만든다면 컴퓨터 쪽이 압도적으로 빠르다. 문제는 제대로 된 정답 회로를 모른다는 것이다. 그 정답 회로를 찾는 것이 인공 지능 개발이고, 그것을 기계 스스로 찾게 하는 것이 기계 학습이다. 일단 정답 회로를 알게 되면 병렬 회로로 제작할 수 있게 되고, 컴퓨터가 인간을 압도하게 된다.

고급 지능 영역에선 데이터(지식)만 수정하는 것으로 회로 수정이 된다. 저급 지능 영역은 하드웨어 병렬회로라 15일(보름)~30일(월) 정도의 훈련을 통해 형성된다. 인간은 틀린 지식을 바로 바꿀 수는 있어도 습관을 바로 바꿀 수는 없다. 보통 운동 신경은 훈련을 통해 만들어지기 때문에 습관을 바꾸기 위해선 많은 시간이 소모 된다. 허나 한 번 만들어지면 죽을 때까지 안 까먹는다. 반면에 지식은 아주 쉽게 까먹는다.






생필품 생산의 경우는 가능한 자동화 해서 저가로 대량 공급하는 게 좋다. 사치품 생산의 경우는 자동화를 할 하등의 이유가 없다. 사치품 생산을 자동화 하면 더 이상 사치품이라 할 수도 없다. 사치품은 부자들 돈 자랑하기 위해 있는 것인데 이걸 자동화 한다는 건 바보 짓이다.



사이보그 = 인간 두뇌 + 기계 신체 + 보조 컴퓨터


인간이 잘 하는 것은 인간에게 맡기고, 기계가 잘하는 것은 기계에 맡겨, 인간과 기계가 결합된 사이보그를 만드는 것이 독자적 인공 지능을 가진 로봇을 만드는 것보다 더 쉽겠다. (옛날엔 로봇이 없었지만 노예가 있었다.) 완벽하지 않지만 특정 분야에서 인간을 보좌할 수 있는 단순한 인공 지능은 이미 컴퓨터에서 사용 중이다. 인터넷에서 프로그램만 잘 찾으면 된다.

  • 계산/기억 : 이미 컴퓨터에서 제공하고 있다. 검색만 잘 해도 전문가 뺨 친다.
  • 바둑/장기 : 이건 기억과 계산이라 이미 컴퓨터가 사람을 이긴다.
  • 문자/음성 : 아직 틀리는 것이 많아 사람 손이 많이 간다.
  • 통역/번역 : 거의 개판 수준이라 사람이 하는 것이 더 낫다.
  • 의족/의수 : 사이보그로 가는 길인데 신경, 뼈, 피부가 연결되지 않았다.

간단한 문자/음성 인식기와 통역/번역기를 만들어 볼 수 있을까? 이건 자연 언어 처리에 속한다. 어순 재배치 안 하고 단어만 잘 번역해도 목적의 90%는 달성한다. 단어 하나가 여러 품사에 여러 의미로 사용 되는데 어떤 품사, 어떤 의미인지 어떻게 결정할 수 있을까? 당연히 주변 여러 단어를 뭉쳐 판단해야 한다. 상대적인 관계를 파악해야 한다. 확고부동한 기준이 없다는 게 인공 지능이 어려운 이유다.




미국은 머리, 일본은 바디


미국은 주로 인공 지능 쪽을 연구한다고 하며, 일본은 주로 육체 운동 쪽을 연구한다고 한다. 미국 것은 바둑/장기/퀴즈 게임에서 인간을 이기는 대가리 크고 말 많은 로봇이고, 일본 것은 주로 걷거나 뛰어 다니는 난쟁이나 아이 같은 로봇이다. 인간이 로봇 탈(껍질)을 뒤집어쓰고 로봇 흉내를 내는 쇼도 있다. 외골격 로봇 같은 것이다. 사이보그의 전형이다.

인공지능의 완성을 기다리거나 신경, 뼈, 근육, 피부가 연결된 사이보그를 만들기 전에 외골격 로봇을 만들어 보는 게 더 유용할 것이다. 억지로 신체에 이물질을 엮을 필요도 없고, 믿을 수 없는 인공지능에게 막강한 기계 몸을 줄 필요도 없다. 사람의 신경에 연결된 기계를 제어하는 장치만 만들어도 된다. 그러니까 앉아서 팔다리를 움직이면 인간 팔다리는 안 움직이고 대신 기계의 팔다리가 움직이는 식이다.




지능에는 감각과 기억이 필수적이다.


불교에선 6감과 6식을 말한다. 6개의 감각 기관엔 6개의 지능이 붙어 있어 해석을 한다. 5감과 5식은 이해하기 쉬운데 6감과 6식은 또 뭔가? 육감(肉感:성적 느낌)과는 다르다.

  1. 안 ↔ 색 : 눈으로 본 형상을 해석한다. 광파
  2. 이 ↔ 성 : 귀로 들은 소리를 해석한다. 음파
  3. 비 ↔ 향 : 코로 맡은 냄새를 해석한다. 기체
  4. 설 ↔ 미 : 혀로 느낀 5 맛을 해석한다. 액체
  5. 신 ↔ 촉 : 피부로 느낀 것을 해석한다. 고체
  6. 의 ↔ 법 : 뇌로 자연 법칙을 해석한다. 종합

5개 감각을 통해 들어온 것은 세상에 대한 정보다. 세상을 이해하려면 한 가지가 더 필요한데 바로 시공간 속에서 움직이는 것들의 법칙이다. 즉 두뇌로 어느 정도 자연 법칙을 시뮬레이션 해서 미래를 예측해야 한다. 이 종합적인 판단을 하는 것이 의식이고, 의식의 대상은 자연 법칙(인과관계/상관관계)이다. 이 6식 중에서 가장 구현이 어려운 것이 안식, 이식, 의식이다. 지능이 낮은 미물이나 동물일수록 촉감, 냄새, 맛 감지에 강하다.

지능 발달 단계 :

  1. 데이터 수집 : 아기 때 (특히 자폐아들) 보이는 막강한 기억력 → 빅-데이터
  2. 통계 분석 : 아기 때 보이는 막강한 계산력(상관관계, 인과관계) → 기계 학습
  3. 법칙 발견 : 지능 완성, 자연법칙, 언어문법 등 파악, 새로운 가설 수립과 증명까지





인공 지능 역사


컴퓨터가 발명된 2차 대전 이후부터 시작한다. 여러 가지 혼란스러운 잡다한 이론들이 나타나는데 컴퓨터 하드웨어의 성능 한계로 성과가 없자 죽었다가 최근 CPU 처리 속도 향상, 메모리 증가, GPU의 행렬 계산(병렬 처리), 네트워크 연결(병렬 처리), 막대한 학습 데이터로 부활했다. 이론적 발전은 크게 없고 컴퓨터 성능 향상으로 옛날 이론들이 빛을 보고 있는 상황이다.

강인공지능 : 인간 지능 이상, 초인간지능
약인공지능 : 인간 지능 일부, 현재의 인공 지능 수준

합리주의 = 지식공학 : 기본 지식을 인간이 가르쳐야 한다. → 전문가 시스템
경험주의 = 기계학습 : 기계가 스스로 학습할 수 있다. → 딥-러닝
※ 딥-러닝 = 인공 신경망이 이름만 살짝 바꾼 것




기계 학습 종류 :

  1. 지도 학습 : 답을 알려 줌, Y = F(X)에서 X, Y를 주면 F를 스스로 찾는 것
  2. 비지도 학습 : 정답을 모름, 스스로 분류하는 자동 분류기
  3. 준지도 학습 : 일부 정답을 힌트로 줌
  4. 강화 학습 : 스스로 정답 행동 찾기

Y = F(X)에서 F를 스스로 찾는 것이 기계 학습

  1. 결과(Y)과 이산적 : 분류 문제
  2. 결과(Y)과 연속적 : 회귀 문제 → 함수 추정
  3. 결과(Y)과 확률적 : 확률 추정 문제

※ 의사 결정 트리 : 논리적 추론
※ 신경망 : 두뇌 모방
※ K-NN(최근접 이웃), 서포트 벡터 머신(SVM) : 기하학적 접근
※ 베이지안 모델 : 확률 통계적 접근
※ 유전 알고리즘 : 진화론의 방법(세월 가면 언젠가 되겠지?)
※ 모델 앙상블 : 여러 모델 조합(다수결 or 최대값)



빅 데이터 = 학습 데이터, 데이터 마이닝 = 인공지능(기계학습) 


대체로 기술 분야 용어들은 같은 기술(수학) 기반에 목적에 따라 다른 이름이 붙어 헛갈리게 한다. 인공지능 = 기계학습 → 데이터 마이닝(유의미한 정보 발굴?) → 빅 데이터(무지 많은 데이터 처리?) 등 모두 본질적으로 거의 같은 수단을 사용하고 있다. 기본은 튜링 머신(컴퓨터 CPU 동작 원리), 확률통계(상관계수/회귀분석), 집합/논리(인과관계)이다. 이것의 변형과 응용이다.

그러니까 데이터에서 그 전에는 몰랐던 의미 있는 뭔가를 도출하려고 하는데 그 방법이 과거 인공지능 연구하던 것과 비슷한 것이고, 이젠 데이터가 너무 많아서 처리 곤란하기 때문에 이걸 해 주는 병렬 처리 기계가 필요한데 그게 또 인공지능을 돕는다. 빅 데이터를 데이터 마이닝하는데 인공 지능 기법이 쓰이는 것이다. 그러니까 결국 같은 이론적 배경(수학)에 같은 수단(컴퓨터)을 쓰는 것이다. 



인공 지능 = 튜링 머신 + 확률통계 + 집합논리 + 병렬처리(행렬계산)


튜링 머신이란 기계가 기억하고 있는 어떤 상태(단계/판단)에서 다음 상태(단계/판단)로 넘어갈 때 조건(입력)이 있고, 상태가 변화할 때 하는 행동(출력)이 있는 기계이다. 컴퓨터처럼 어떤 시간 변화에 따른 절차적인 동작을 하게 할 때 사용하거나, 컴퓨터 언어처럼 나름 정해진 문법과 순서가 있는 정보가 들어올 때 해석하고 번역할 때 사용한다. 즉 CPU 동작과 컴파일러나 인터프리터에서 사용한다.

영국인 튜링은 2차 세계 대전에서 독일 암호(에니그마/수수께끼)를 풀기 위해 튜링 머신을 만든다. 기계엔 기계로 상대해야 한다는 것. 이 친구는 약간 자폐 성향이 있고 동성애적이었단다. 의외로 유명한 천재들 중에 동성애, 양성애, 자폐증 같은 것이 많다. 이 천재는 결국 외로움으로 자살한다. 동성애 치료한다면서 여성 호르몬을 주입하면... 무식한 것들.







확률&통계에서 A라는 사건이 발생하면 반드시 B란 사건이 발생하는 경우 원인과 결과 관계가 있는 것이다. A가 발생할 확률에서 B가 발생할 확률이 100%인 경우다. 집합&논리에선 A가 B에 속하는 것으로 나타난다. A와 B가 함수 관계가 있는지는 회귀 분석을 해 보면 알 수 있다. 상관계수가 ±1이면 두 데이터는 본질적으로 같은 것(닮은 꼴)이다. 회귀 분석에선 선형으로 나타난다. 그러니까 패턴 검사와 선형 회귀는 사실 같은 것이다.




인공신경망에서 패턴 인식에 쓰는 퍼셉트론은 상관계수 공식을 단순화시킨 것이다. 패턴 인식기란 어떤 대상 패턴을 닮아가는 것을 말 한다. 어떤 두 특징 A와 B가 항상 함께 발생한다면 둘 모두 긍정으로 받아들이기 위해 각각 +1로 모방한다. 항상 A가 발생할 때는 B가 발생하지 않았다면 A에는 긍정 +1, B는 부정 –1로 모방한다. A와 B가 아무 상관이 없을 때는 어느 한 쪽은 무시한다는 의미에서 0으로 모방한다. 0은 불필요하니 연결을 끊겠다는 의미다. 패턴 인식기는 어떤 2개의 특징이 빈도 높게 함께 반복 되는지 추적하며 모방하기 때문에 자신이 감지한 패턴의 반복 회수를 기록한다. 자주 발생하지 않는다면 결국 연결을 끊고 잊어버리게 된다.


예: f(x, y, z) = g(s), s = ax + by + cz + d
     g(s) = on @ s>기준,
     g(s) = off @ s<기준
     g(s) = 0 @ 끊기
    특징을 나타내는 (x, y ,z)는 3차원 공간의 좌표이기도 하며 벡터라고 부른다.
    가중치를 곱해 합하는 s = ax + by + cz + d는 3차원 공간의 경계면에 해당한다.
    입출력 신호의 On/Off 활성함수 g는 ±1, 0, 기타 여러 조합이 있더라.
    입출력 모두 디지털이 아닌 아날로그로 연속함수를 쓴다. (미분 가능해야 한다.)





이 퍼셉트론 수식의 형태가 기하학에서 보면 패턴이 좌표에 해당하고, 비슷한 패턴(좌표)은 서로 거리가 가까워 집단을 형성한다. 이 집단을 구분하는 경계를 찾는 문제가 된다. 2차원 일 경우는 경계선, 3차원일 경우는 경계면이 되는데 4차원 이상일 경우는 뭐라 불러야 할까? 초공간이니 초평면이라 하더라. 여하튼 경계면이라고 하자. 4차원 이상은 상상하기 어렵다. 패턴 비교는 각 점의 위치 벡터와 초평면의 원점에서 거리+법선 벡터(초평면 수식의 계수)와 내적(스칼라곱)과 같은 것이다.

※ 벡터 스칼라곱 : [a, b, c]·[x, y, z] = ax + by + cz



※ 퍼셉트론 ≠ 뉴런 : 우리 두뇌와 같은 방식으로 동작하는지 알 수 없다.
※ 패턴 = 스펙트럼 = 다차원 공간상의 좌표 = 벡터 = 다변수(변수가 많으니까)

위의 그룹을 구분하는 3가지 방법 초평면(경계), 초구체면(거리), 초원뿔면(상관계수) 중에 어떤 것이 가장 일반적이라고 할 수 있을까? 초구체면의 경우 좌표 분포가 구형이 아니면 곤란하다. 초원뿔면의 경우는 특징 사이의 비율이 중요한 경우에만 적용할 수 있다. 그래서 초평면을 여러 개 겹쳐서 구분하는 방법이 가장 일반적이라 할 수 있는데 이렇게 하려면 다단계로 And, Or 회로를 만들어야 한다. 이 대신에 입력 값들 사이에 함수관계, 상관관계, 인과관계가 있을 때는 전처리를 통해 특징을 압축할 수 있다. 가능한 특징이 한 지점에 모여 고정이 되도록 한다. 그럼 초평면, 초구체면 적용이 쉽다.




퍼셉트론을 논리회로 설계하듯 직접 엮어 회로를 만든다면 기계학습(자동학습)이라고 할 수 없을 것이다. 사람이 지능을 만들 수 있다면 직접 설계하지 인공신경망처럼 지저분한 방법을 쓰진 않았을 것이다. 인공신경망은 진화론과 비슷한 방법을 쓴다. 조금 고쳐 보고 답에 접근하는지 반복하는 시행착오 방식이다. 고로 학습 시간이 느릴 것이라 쉽게 예상할 수 있다.



Ⅰ. 비교적 수학적으로 명확한 방법들



인공 지능 문제는 목표에 부합하는 적절한 행동 절차를 스스로 찾아내는 것(강화학습), 인식할 패턴의 특징을 적당히 구분/분류하는 판단 기준을 찾아내는 것(자율학습)을 구현하는 것인데 마음대로 잘 안 된다. 그래서 주로 주입식 교육(지도학습)을 함께 한다. 용어가 마음에 안 든다. 강화학습은 그냥 행동 자율 학습이라고 하는 게 더 낫겠다. 자율학습은 패턴 자율 학습이 더 낫겠다. (용어만 복잡하게 만드는 용어쟁이들 정말 싫다. 알고 보면 같거나 비슷한 걸 다르게 부른다.)

전문가 시스템 : 전문 지식을 "if 원인 then 결과" 형태로 입력해 놓은 것.(지도학습)
   사람은 동물이다. 동물은 죽는다. 그럼 당연히 사람은 죽는다를 추론한다.
   홍길동은 사람이다. 그럼 당연히 홍길동은 동물이며 죽는다를 추론한다.
   최초로 실용적으로 사용한 인공지능이다.



컴퓨터에선 조건문으로 안 되는 게 없다. 가장 이해하기 쉬운 것이 바로 결정 트리 학습법이다. 조건문을 반복 적용해서 범위를 점차 좁혀가는 일종의 빠른 검색기이다. 데이터가 Yes/No(2중택1), 분류(다중택일), 실수(확률/회귀) 경우에도 적용할 수 있다. (이건 의미 없는 것이 모든 데이터를 결국 숫자로 표현할 수 있으니 어떤 시스템에서든 다 가능한 얘기다.)

입력(X)이 특징 패턴이고 출력(Y)이 있는데 입출력을 따로 구분할 필요도 없다. 입력들 사이에도 상관성/인과성이 있을 수 있다. 고로 입력 데이터 사이에서 대표성이 큰 것을 고르는 과정이 필요하다. 단일 트리일 경우 데이터 결손, 노이즈(잡음), 예외 같은 상황이 초반에 발생하면 전혀 엉뚱한 길로 빠져 들게 되어 답이 안 나온다. 그래서 여러 대표 특징으로 시작하는 여러 뿌리(검색 시작점)를 가진 결정 트리를 조합하는 랜덤 포레스트(숲)를 만들어 앙상블(다수결)로 결정한다.




예외는 암기 외엔 답이 없다. 무한 메모리를 쓸 수 없기 때문에 메모리 절약을 위해 주요 특징으로 분류하는 것이다. 주요 특징을 찾아낸다는 것 자체가 통계 처리를 한다는 것이다. 즉 상당한 기억력에 계산력이 필요한 것이다. 메모리가 많으면 너무 세분화해서 예외까지 암기하는 상황이 발생하는데 이미 배운 것들엔 강하지만 처음 본 새로운 것엔 취약할 수 있다. 이걸 과적합(Overfitting)이라 한다. 허나 여기엔 답이 없다. 인간도 많은 것을 경험해야 지능이 향상되기 때문이다. 모든 경우를 보기 전까진 해결 되지 않는다. 특징을 취할 정도로 자주 발생하는 경우가 아니라면 결국 암기해야 한다. 즉 패턴으로 판단할 거라면 99% 비슷한 확실한 것들에만 적용하고 그 외에 것들은 메모리가 허락하는 한 예외로 암기하는 게 더 낫다.


헌데 위와 같은 방법은 특징이 On/Off(Yes/No), 다중택일, 다중선택일 때나 통하고 연속적인 나이, 신장, 체중, 소득, 길이, 면적, 부피, 질량, 온도 같은 실수에선 문제가 좀 있다. 어느 하나의 특징(축)에서만 바라보기 때문에 축을 섞어 함께 판단해야 하는 경우는 통하지 않는다. 수직 수평으로 어떻게 잘라도 구분할 수 없는 경우가 존재하기 때문이다. 위의 그림에선 간단하게 대각으로 경계선을 그으면 된다.

연속 값(실수)은 말 그대로 연속 값이라 무 자르듯 자를 수 없다. 연속 값들만 가지고는 분류가 안 된다. 연속 값을 분류시켜 줄 수 있는 힌트는 이산 값(불연속 값, 등급, On/Off값)이다. 연속 값의 공간에서 어떤 이산 값이 발생하는 확률밀도에 차이가 나면 그룹이 나뉜다. 그런 그룹이 있다면 그 그룹을 구분하는 경계선을 정해줄 수 있다. 이 경우 연속 값의 어떤 구간에 속한 그룹은 이산 값과 인과 관계에 있다. 연속 값 사이에는 회귀분석이나 상관관계 분석을 통해 함수 관계가 있는지 알 수 있고, 이산 값 사이에는 확률분석으로 인과관계가 있는지 알 수 있다. 이런 경우 특징을 더 요약(압축)할 수 있다. 연속 값은 결국 이산 값으로 바뀌어야 집합 논리 연산이 가능해진다.




어떤 두 집단을 구분하는 경계선을 찾는다고 하자. On/Off가 아닌 연속적(아날로그) 특징으로 두 집단을 구분하는 경우 경계가 명확하지 않을 수 있다. 항상 예외는 있으니까 억울한 애들은 나온다. 여기에 확률통계를 적용해서 경계를 정하는 방식이라고 할 경우 오류 확률을 최소화 하는 방향으로 정하게 될 것이다. (회귀 분석과 비슷하군) 헌데 학습 데이터는 샘플 데이터라서 전체를 대변하지 않는다. 즉 편차가 있을 수밖에 없고 그래서 빅 데이터가 필요한 것이다. 그리고 확률 분포가 정규 분포가 아닐 수도 있다. 그렇다면 굳이 정규 분포나 특정 확률 분포를 대입할 필요가 없다. 솔직히 기계가 어떤 확률 분포인지 계산하게 하는 것도 번거롭다. 더 단순한 방법이 없을까?







특징 벡터 = 좌표, 비슷한 것은 가까운 거리에 있다. 공간적으로 이해하기 쉬운 접근법이다. 서포트 벡터 머신이란 것은 두 집단을 분류하는 경계면 중에 최적의 것을 정하는 방법이다. 두 집단을 나누는 경계면은 무수히 많은데 그 중에 가장 좋은 경계면은 두 집단에 속한 좌표들과 경계면과의 거리가 가장 먼 것이다. 즉 A 집단에서도 가장 멀고 B 집단에서도 가장 먼 경계면이다. 두 집단 A와 B 중에 가장 가까운 점 사이를 초평면이 지나갈 것이다. 이 두 점을 지나는 초평면의 기울기를 변화시켜서 초평면과 두 그룹 사이의 거리가 커지는 지점을 찾는다.



초평면으로 구분이 불가능한 비선형일 때 억지로 곡면을 만들거나, 특성을 하나 더 만들어(벡터 차원을 높임) 구분하는 방법이 있다. 예를 들어 데이터들에 어떤 왜곡 함수를 통과 시켰더니 (공간을 휘었더니) 데이터 배치가 선형으로 바뀌어 구분 가능하더라 하면 그걸 쓰면 된다. 예를 들어 제곱을 하거나 제곱근을 했더니, 지수함수나 로그 함수를 쓰니 곡선/곡면이 직선/평면이 되더라는 식이다. 이런 단순한 경우는 해도 된다. 또는 지금까지 특징으론 구분 불가능하니 구분할 수 있는 다른 특징을 하나 더 찾아 추가하면 된다. 즉, 분명 다른 것들이기 때문에 그걸 구분할 수 있는 특징이 더 있을 것이란 얘기다. 아니면 신경망처럼 다단계로 만들어 초평면 여럿을 사용해서 곡면으로 근사시킨다.

※ 교집합 = 논리 and, 합집합 = 논리 or
※ 지수 함수 vs 로그 함수 : 역함수 관계, 상대편을 선형으로 만든다.
※ 제곱 함수 vs 제곱근 함수 : 역함수 관계, 상대편을 선형으로 만든다.
※ 지수 함수/제곱 함수 : 값을 증폭(강조)시킴, 약한 신호 무시, 강한 신호 중시
※ 로그 함수/제곱근 함수 : 값을 감쇠(억제)시킴, 강한 신호 무시, 약한 신호 중시
※ 선형 : Y=F(X)에서 여러 X들과 Y가 직선/평면인 관계
※ 비선형 : Y=F(X)에서 여러 X들과 Y가 곡선/곡면인 관계

예외는 예외로 두고 암기하는 게 더 바람직하다. 항상 예외는 있는데 예외를 인정하지 않고 공식만 적용할 경우 엉뚱한 사람이 피해를 입을 수 있다. 예를 들어 간첩을 찾아 죽인다고 할 경우나 약물 복용한 선수를 찾는 경우이다. 명확한 증거가 없이 여러 특성들 조합에 따른 경험적 확률로 판단하면 반드시 피해자가 나온다. 즉 적중률이 99%라면 100개 중에 1개는 예외가 나온단 말이다. 그 친구는 재수 없게 당하는 것이다. 물론 그 불행한 친구를 대신한 간첩, 약물 복용 선수는 작전에 성공하고, 1등을 먹을 수도 있다. 규칙에 의한 판단은 말 그대로 99.9999%의 정확도가 되어야 적용할 수 있는 것이다.




최근접 이웃 탐색(최근접 점쌍 문제)의 확장판 K-최근접 이웃 알고리즘(K-NN)은 가장 가까운 k개의 점을 보고 자신이 어디에 속할지 결정하는 분류기이다. 거리를 가중치로 곱한 다수결로 결정한다. 이걸 안면 인식에 사용한단다. 헌데 가장 가까운 점을 찾는 검색, 계산 문제가 있다. 결국 패턴 비교와 같은 것인데 결정 트리도 검색 시간 줄이자는 거였고, 원래 병렬 회로로 동작해야하는 신경망도 직렬로 시뮬레이션 해서 결국 시간이 문제다.


※ 최단 거리 빨리 구하기 : 모든 점과 비교해서 최소 거리를 알 수 있다. n(n-1)/2 회의 계산이 필요하다. X, Y 축에 대해 2등분을 한 후에 각 4분면에 대해 계산하면 n(n/4-1)/2회의 계산을 한다. 다시 이를 4등분 하면 n(n/8-1)/2회의 계산으로 줄어든다. 공간을 분할하여 계산한 후에 이미 구한 최소 거리 안에 인접한 다른 블록의 점이 있는지 조사한다. 있다면 거리를 비교하여 최종 최소 거리를 구한다. 최소 거리를 구하면 짝사랑 사슬이 형성 된다. A와 B는 가장 가깝다. 헌데 C도 가장 가까운 것이 B이다. D는 C가 가장 가깝다. 가장 많은 사랑을 받는 점(뿌리) B가 집단의 중심에 가깝다.

비슷한 것으로 K-평균 알고리즘이 있다. 데이터를 k 그룹으로 나누어 그룹 평균과 멤버의 거리 차이의 평균을 줄이는 방법으로 분류한다. 진정한 자율학습에 해당한다. 평균은 합과 같고, 거리는 제곱근을 풀면 계산이 줄어든다. 결국 거리 차이 제곱의 합인데 이건 확률통계에서 분산이다. 이 분산을 줄이는 방향으로 분류한다. 각 그룹의 중심이 어디인지 모르기 때문에 시행착오를 하며 그룹의 중심(비교 기준 패턴)을 찾아 가는 것이다. 각 점은 각 그룹의 중심과 거리 비교를 통해 자기 소속을 결정한다. 그럼 그룹원이 추가 되었으니 그룹의 중심이 바뀐다. 그러나 초기 중심을 어디로 할 것이냐? 이건 인공 신경망과 비슷하게 최적의 결과에 도달하지 못 할 수도 있다. k 값을 정해주는 것도 문제다. 역시 계산 시간이 많이 소모 된다.

평균점 이동 클러스터링은 구간을 잘게 분할하면서 밀도를 추적하는 방식이다. k값을 정해 줄 필요가 없다. 밀도가 높은 쪽이 그룹의 중심이 있는 곳이다. 기하학적 평균점을 찾는 것은 확률 통계에서 상관계수를 계산할 때 비교 기준 패턴(평균)을 결정하는 것과 사실 같다. 평균점과의 거리로 판단하는 경우 초공간에서 공 형태의 곡면이 판단 경계면이 된다. (헌데 좌표의 분포가 공 모양이 아니라면 문제다.) 기하학적으로 초평면을 결정하는 것은 신경망과 사실 같다. 최적 판단 경계면(초평면)을 스스로 찾는 것과 그룹의 중심을 스스로 결정하는 것이 기계 학습이다. 초평면으로 나누는 경우는 2등분을 하는 것이기 때문에 여러 층으로 논리 회로를 만들어 교집합/합집합을 구하는 식이 되어야 XOR 같은 것을 구현할 수 있다.

※ 2진 트리 : 자식을 2개 가질 수 있는 트리
※ B 트리 : 자식을 3개 이상 가질 수 있는 트리
※ R 트리 : 공간을 나눠 겹치거나 계층 구조를 이뤄 위치를 빨리 찾는 자료 구조
※ 해밍 거리 : 단순한 예로 두 문자열 중에 서로 다른 문자의 개수




강화학습에는 튜링 머신을 변형한 마르코프 결정 과정(최적 행동 절차 탐색)이란 것이 있는데 상태 변화는 확률이 결정한다. 상태가 변할 때는 정해진 행동을 해야 하는데, 누적 보상이 최고가 되는 행동 절차를 스스로 찾아 조립하는 것이다. 즉 최적 행동이 나오는 상태 변화 확률을 스스로 계산하는 것이다. 확률이 0%가 되면 그 상태 변화 연결은 끊어진 것이다. 결과(Y)가 행동이고 원인(X)에 해당하는 것이 마음 상태인 것이다. 예를 들어 스타크래프트의 마린이 5개 기본 동작을 할 수 있다고 하자. 얘가 스스로 시행착오를 반복해서 5개 동작을 엮어 적의 진지를 점령하는 절차를 만들어야 한다. 진화론과 매우 닮았는데 엄청난 학습 시간이 소모 된다. 웬만하면 기본적인 절차는 직접 가르쳐 주는 게 더 빠르다.



※ 마르코프 연쇄 : 상태 변화는 확률이 결정(튜링 머신에선 다음 단계가 정해져 있다.)
※ 마르코프 결정 과정 : 상태 변화는 확률이 결정 + 행동 + 보상 + 할인율(?)이 있음
※ 은닉 마르코프 모델 : 상태 변화는 확률이 결정(은닉) → 출력도 확률이 결정(관측)




시간에 따른 변화 패턴(문법/단어)을 추적하는 은닉 마르코프 모델(시변적 패턴 검출)이 있는데 역시 상태(품사/철자) 변화 확률을 스스로 찾아간다. 상태(품사/철자)마다 나타날 출력(단어/발음)에 대한 확률은 정해 준다. (한 단어엔 여러 의미/품사가 있다.) 어떤 단어 나열을 만들어내는 상태 변화 확률을 계산하는 것이다. 결과(Y)가 발음이면 원인(X)인 상태는 철자이고, 결과(Y)가 단어이면 원인(X)인 상태는 문법 단계이다. 단어의 의미/품사, 철자의 발음은 독자적으로 결정 되지 않고 주변 단어와 철자를 보고 종합적으로 판단해야 하는데 그런 조합 중 가장 높은 확률을 찾는 것이다. (그냥 문법을 직접 가르치는 게 더 빠르겠다.)

영어권 사람들은 어순이 중요하고 거의 고정 되어 있지만 한국어의 경우는 어순이 자유롭기 때문에 이런 방법이 잘 안 통할 수도 있다. 어순이 중요한 부분은 몇 개 단어가 의미상 밀접한 관계에 있어 근처에 있어야 하고 어순을 어기면 문제가 생길 때이다. 보통 가장 가까운 단어가 관련성이 높기 때문이다. 그보다 큰 단위에선 어순이 좀 자유롭다. 예를 들어 언제/어디 정도 되는 내용은 문장 앞과 뒤에 자유롭게 나타날 수 있기 때문이다. 발음의 경우는 단어 사이에 공백이란 것이 없다. 즉, 띄어쓰기를 하지 않는 상황이기 때문에 연속된 소리에서 단어를 잘라 내야 한다. 예) 나는할수있다. → 나는 할 수 있다.







Ⅱ. 속을 알 수 없는 방법(인공 신경망 = 딥-러닝 = 오류 역전파 알고리즘)


수학적으로 답을 찾는 게 명확하지 못 한 인공신경망=딥-러닝(오류 역전파 + 경사 하강법)은 무작위 가중치를 오차에 따라 수정해 가며 패턴을 학습하는 것인데, 수학적으로 명확히 답을 구하기 쉬워 먼저 사용 하던 기하학적 경계면 결정과 본질적으론 같다. 다단계일 경우 단계(층)을 넘어갈 때가 문제다. 디지털 회로처럼 On/Off를 쓰지 않고 S자형 곡선을 쓰는 방식으로 다단계 신경망을 구성하면 어떤 연속 함수도 모방할 수 있다고 이론적으로는 증명 되었다. 허나 계수를 어떻게 계산해야 하는지에 대한 정답은 없다. 오류 역전파와 경사 하강법이 나오면서 계수를 계산할 방법이 생겼다. 원래 병렬 회로라서 직렬로 계산하면 느려서 못 써먹었다. 그래서 GPU나 네트워크 등으로 병렬처리를 일부 할 수 있게 되면서 부활한 것이다.

※ 딥-러닝은 명칭만 바꾼 것, 결국 인공신경망


※ 경사 하강법 : 예로 z = f(x,y)에서 기울기가 작아지는 쪽(골/정상)으로 이동하는 것.
※ 평균 제곱 오차 = (평균 제곱근 오차)의 제곱 = 오차→제곱→평균
※ 평균 제곱근 편차 = 평균 제곱근 오차 = 오차→제곱→평균→제곱근
※ 오류 역전파 = 연쇄 미분 + 경사 하강법 = 더듬어 찾아가는 최적화 이론이다.
※ 담금질 기법 : 풀림의 오역, 담금질=급랭, 풀림=서냉, 조절 간격을 대→소로 점차 변화.




퍼셉트론 3개로 XOR(배타적 논리합)을 구현하는 과정에서 다단계 신경망에 대한 간단한 이해를 할 수 있다. 직관적으로 제일 앞단은 패턴인식기(입력층)일 것이다. 그 다음 단은 논리회로(은닉층+출력층)이다. 여기서 비선형 활성 함수가 없다면 아무리 다단계를 해도 1단을 한 것과 다름없다는 것을 수식을 풀어 보면 쉽게 알 수 있다. 고로 반드시 활성함수는 비선형이어야 한다. 학습 데이터는 달랑 4개이다. 오류역전파를 하지 않고도 직관적으로 정답을 구할 수 있다. 직각 좌표계에서 경계선을 그리면서 가중치를 직접 구하면 된다. 그런데 이건 논리회로 설계하는 것과 크게 다를 게 없다. 인공인경망은 스스로 학습해야 한다. 고로 정답은 여러 가지가 될 수 있다.


오류역전파를 하려면 비용함수를 가중치로 미분해야 한다. 비용 함수 안에 예측 결과(함수)가 들어가고, 예상 함수는 앞단에서 받은 결과와 가중치로 경계선을 계산하는 함수와 이걸 통과시키는 활성함수로 되어 있다. 고로 활성함수는 미분 가능해야 한다. 출력단에서부터 역으로 함수를 편미분해서 누적 곱하는 방식으로 가중치의 민감도를 구한다. 간단한 원리다. A→B→C 순으로 영향을 준다면 A가 1변하면 C는 얼마가 변하겠는가? B가 1변하면 C가 2변했다. A가 1변하면 B가 3변했다. 그럼 A가 1변하면 C는 2*3=6 변하는 것이다. 이걸 Chain Rule(사슬 법칙)이라고 한다. 수학적으로 증명할 필요도 없는 얘기다.

역전파가 아닌 방법으로 자동학습을 하려면 가중치를 0, ±1로 모든 경우를 다 적용해 봐서 비용 함수가 최소인 경우를 찾으면 된다. 위의 회로에선 가중치가 9개이고 값이 3개이기 때문에 3^9=19683개 조합을 넣어 보면 금방 답을 구한다. 바이어스 c가 없어도 되니 3^6=729개 조합만으로 계산해 보면 된다. 학습 데이터가 4개이기 때문에 729*4=2916번의 계산을 해야 한다. 이런 것을 전체 탐색이라 한다.

  1. x = y = 0이면 모두 OK! 당연하다 입력이 0인데...
  2. x = y = 1이면 590개 조합이 OK!
  3. x = 0, y = 1이면 160개 조합이 OK!
  4. x = 1, y = 0이면 당연히 대칭이니 160개 조합이 OK!

이 중에 4개 경우 모두 오류가 0인 조합은 2개인데 xy=01, xy=10 대칭이기 때문에 사실 정답은 1개이다. 이런 방법으로 회로를 설계하는 것은 무작위 돌연변이 진화보다 더 많은 시간을 소모한다. 모든 경우를 다 돌아보는 식이기 때문이다. 아마도 이보단 차라리 무작위 조합을 넣어 보면 운 좋게 더 빨리 끝날 수도 있다. 1/729의 확률인데 설마 마지막까지 가겠어? 그 중간 어디서 걸리겠지. 이게 진화론적 방법이다. 오류역전파는 진화론적 방법보단 더 빠를 것이다. 의도적으로 방향을 잡고 움직이기 때문이다.

문제는 비용함수의 모양이다. 이 비용함수의 값이 작아지도록 가중치를 조절하는 것이다. 고로 비용함수는 반드시 경사가 있어야 한다. 편미분을 구하기 귀찮으니까 가중치 하나를 변화시키면서 비용함수를 그려 본다. XOR 회로는 대칭이기 때문에 입력단, 출력단 가중치 변화로 나올 수 있는 비용함수는 3개 정도다.



비용함수에 평평한 부분이 있다. 이 부분에선 어디로 가도 경사가 없기 때문에 가중치 초기 값을 여기서 시작하면 곤란하다. 이게 바로 지역 최소값 문제이다. 또한 가중치를 0으로 잡으면 오차역전파가 안 된다. 가중치가 0을 지나갈 때는 정확히 0이 되지 않고 반대편 부호로 넘어가도록 해야 한다. 이걸 보면 퍼셉트론 개수와 가중치 초기값에 따라 답이 나오기도 하고 안 나오기도 함을 알 수 있다. 퍼셉트론이 너무 적거나, 가중치 초기 값이 정답 부호 반대편에 있으면 힘들다. 그렇다고 모든 가중치 조합을 넣게 되면 전체 탐색과 같은 꼴이 된다.




논리 회로도 XOR을 만들려면 AND, OR, NOT의 조립이 필요하다. 퍼셉트론 하나는 가중치조절로 AND, OR, NOT을 흉내 낼 수 있다. 가중치의 부호만 바꾸면 NOT 기능을 한다. 거기에 더해서 패턴 인식을 할 수 있다. 좀 더 정확하게는 이쪽이냐 저쪽이냐를 판단한다. 논리 회로에서 패턴 인식을 하려면 NOT과 AND의 조합으로 가능하다. 헌데 보통 XOR을 패턴 인식에 사용한다. 같은 패턴이 들어오면 XOR은 0을 내놓기 때문에 NOT을 출력에 붙어야 한다. 사실 뺄셈도 같은 역할을 한다.



논리 회로로도 퍼셉트론과 같은 회로를 만들 수 있다. 어차피 두뇌의 신경세포도 전압 수준이 On/Off(양/음) 2가지뿐이다. 논리 회로를 다단계 퍼셉트론처럼 꾸민다면 입력단은 기초 패턴 인식용 XOR + NOT, 출력은 종합 판단을 하는 OR, 중간 은닉층은 AND로 기초 패턴을 이리저리 조합하여 중간 패턴을 만드는 곳이 된다. 퍼셉트론은 은닉층에서 경계면을 겹쳐 특징 공간을 잘게 쪼개는 짓을 하는데 그게 사실 AND와 같은 역할이다. 서로 떨어진 특징 공간을 함께 묶는 역할이 OR이다.

고로 이런 논리회로를 자동으로 만드는 게 인공지능이 된다. 논리회로에선 가중치 조절이 없고, 연결 하느냐 끊느냐 2가지만 있다. 퍼셉트론 가중치로 보면 1이냐, 0이냐이다. 방법은 3가지다. 전체 탐색(기계는 가능), 진화적 탐색(로또 당첨), 가능한 모든 조합을 AND로 연결해 가면서 결과와 일치하는 출력을 보인 신호들이 있다면 골라 OR에 바로 연결하는 방식이다. 부족하면 AND층을 하나 더 붙이고 같은 짓을 반복한다. 회로가 완성되면 아무도 쓰지 않는 출력을 내는 AND 조합들은 버리면 된다.

이렇게 학습이 끝나고 인간과 비교해서 99.99%라면 하드웨어로 제작할 수도 있다. 그럼 그 많은 병렬 컴퓨터들이 칩 하나에 들어갈 것이다. 속도는 물론 병렬이기 때문에 인간보다 더 빠르다. 허나 0.01%의 실수가 있을 것이다. 사람 목숨이 걸린 일이라면 사람이 죽게 될 것이다. (드디어 자동 주행이 사고를 쳤다. 사람을 박아 죽인 것이다. 로봇 사업에서 가장 중요한 게 로봇이 사고쳤을 때 책임이다. 망할 수도 있다.)




퍼셉트론 1개로는 선형 회귀가 가능하다. 입력과 출력이 직선/평면 관계이면 그렇다. 그럼 그 직선/평면의 계수를 결정해야 한다. 그게 선형 회귀다. 선형 회귀를 굳이 퍼셉트론으로 해야 할 필요는 없다. 논리 회로처럼 쓰려면 출력에 On/Off 기능을 넣어 줘야 한다. 딱히 이유는 없고 두뇌 신경 회로가 그렇게 움직이니까 모방해 보려는 것이다. 그래서 시그모이드(로지스틱) 함수를 멋있다고 생각해서 사용하는 실수를 한다. 이 함수를 사용하니 비용함수(오차함수)가 매끄럽지 않아서 경사 하강법이 안 통해서 비용함수를 수정한다. 지수 함수를 죽이는 건 Log 함수이다. 자 그럼 잘 동작할까? 아니다.

선형 회귀를 이해해 보자. 10개의 점이 있다. 딱 보니 직선이다. 기계 보고 이 직선의 기울기와 절편을 결정하라고 한다면? 전체 탐색은 모든 기울기와 절편에 대해 실험을 해 보는 것인데 답이 없다. 유전 알고리즘에선 일단 주사위를 던져 기울기와 절편을 구할 것이다. 그리고 그 주변으로 새끼를 치고 가장 오류가 적은 새끼만 살리고 나머지는 죽이고 다시 돌연변이를 주어 그 주변에 새끼를 친다. 좀 빠르겠지? 회귀 분석에선 오차(예상 값과 실제 값의 차이)가 줄어드는 방향으로 기울기와 절편을 조금씩 바꾼다. 오차의 부호를 없애고 강화하기 위해서 보통 제곱을 한 후에 평균을 취한다. 여기서 기울기를 알기 위해선 오차 함수는 미분이 가능해야 한다. 진화론적 방법보단 더 빠를 것이다.



오차가 0이 되는 지점이 있다. 평균 제곱 오차는 포물선으로 곡선이다. 평균 제곱근 오차는 직선이고 오차 0 지점에서 갑자기 꺾인다. 경사 하강법으로 오차 0지점으로 접근 시킬 수가 있다. 봉사가 지팡이로 더듬거리며 경사를 따라 내려간다고 상상해 보라. 보폭을 줄이지 않으면 반대편으로 넘어갈 것이다. 그래서 평균 제곱 오차를 쓰는 게 더 적합하다.



비선형 회귀를 이해해 보자. 10개의 점이 있다. 딱 보니 곡선이다. 기계 보고 이 곡선의 계수들을 결정하라고 한다면? 방법은 앞에서와 같다. 오차가 최소가 되도록 곡선의 각 계수들을 조금씩 변경하면 된다. 어느 방향으로 변경할지는 경사(미분)가 알려준다. 앞에서 퍼셉트론은 특징 패턴을 구분하는 경계면(초평면)을 결정한다고 했다. 그 경계면의 이쪽이냐 저쪽이냐에 따라 On/Off로 판단하려면 활성 함수라는 왜곡 함수를 통과하도록 하면 된다. 이 활성 함수의 입력은 경계면에서 거리가 된다. 활성 함수를 계단함수로 할 경우는 두 패턴의 중간 아무 곳에 경계선을 결정해도 되기 때문에 문제가 있다. Z자형 비탈함수를 주면 어느 정도 중앙에 경계선을 결정하게 된다. 그런데 이건 미분이 불연속이다. 

이걸 S자형으로 하면 미분도 연속이 되며 최적의 위치에 경계선을 잡게 된다. S자 활성 함수로는 시그모이드 함수(0~1)와 탄젠트 하이퍼볼릭(-1 ~ +1) 2개가 있다. 시그모이드 함수는 지수함수의 음수 영역의 대칭 쌍둥이를 서로 붙인 것이다. 하이퍼볼릭은 쌍곡선이란 뜻인데 탄젠트 함수를 옆으로 눕힌 것이다. 이거 외에 어떤 방식이든 더 단순한 방법으로 S자 곡선을 만들 수 있다면 다 된다. 단 미분 가능해야 하고 미분도 연속이면 좋다. 연속 아니라도 문제는 없지만...




평균 제곱 오차를 사용하니 지역 최소값 문제가 발생한다. S 모양 함수에서 +/- 방향으로 너무 깊게 들어가면 기울기가 거의 0에 가깝기 때문에 평균 제곱 오차가 평평해진다. 고로 평평한 구역을 벗어나서 반대로 가기 힘들게 된다. 그래서 비용 함수를 수정한다. 이 비용 함수는 평균을 하든 제곱을 하든 곡선 형태이고 기울기가 상당히 크다. 시그모이드 함수에 지수 함수가 들어가기 때문에 이 성분을 죽이려고 log 함수로 비용 함수를 만든 것이다.




다층 퍼셉트론이 가중치를 바꾸면서 학습을 하려면 비용함수에 미치는 영향을 계산해야 한다. 가중치 변화가 끝까지 전달되려면 출력이 0이 되면 곤란하다. 바이어스는 0이라도 상관없으나 입력에 곱하는 가중치는 0이면 곤란하다. 입력을 무시하고 끊겠다는 의미다. 또한 활성 함수 출력이 깊은 1로 접근했거나 깊은 0 또는 -1로 접근했다면 곤란하다. 이건 너무 깊게 굳어져서 가중치 변화가 방향 전환에 영향을 못 준다. 


모든 입출력이 0.5가 되도록 초기 값을 줄 수 있다. 이 경우 활성함수의 기울기가 가장 크다. 그래도 1이다. 입출력이 0~1 사이의 작은 값이기 때문에 이를 보충하려면 입력에 곱하는 가중치는 1 이상의 큰 값으로 하는 게 좋다. 두 패턴의 거리가 매우 가까운 경우 가중치가 클수록 경계면이 날카롭게 선다. 이렇게 할 경우 출력이 너무 깊은 1이나 0 또는 -1로 접근하는 문제가 있어 방향을 바꾸기가 어렵다. 

그러니까 활성함수 때문에 이러지도 저러지도 못 하는 상황이다. 활성함수는 기울기가 1 이상으로 커야 하고, 입출력도 1 이상으로 커야 하며, 가중치도 1 이상으로 커야 연쇄 미분을 통한 오류역전파가 가능하다. 활성함수 미분 값과 가중치와 입력 값이 계속 곱해지기 때문이다. 만약 연쇄 미분 방법을 사용하지 않고 학습시킬 수가 있다면 굳이 S형태 활성함수를 사용할 필요가 없을 것이다.

초기 값을 모두 중간 값으로 동일하게 주어 거기서 분화시키는 방법도 있고, 약간의 편차를 주어서 각자 And, Or 기능 쪽으로 가기 쉽게 분화시키거나 특정 패턴 근처에 접근하도록 분화시킬 수 있다. 앞단은 특정 패턴을 가려내는 역할이기 때문에 패턴의 수에 비례하여 퍼셉트론을 배치해야 하겠지? 같은 패턴을 검출하는 중첩된 퍼셉트론이 있으면 낭비다. 고로 결국 초기 값을 특정 패턴에 가깝도록 조절해 주는 게 낫다. 5개 패턴이 있을 때 두 쌍을 구분하는 경계는 4+3+2+1=10개가 된다.

※ n개 패턴을 구분하는 경계 = n개 중 2개 뽑는 경우 수

중간은 패턴 경계를 중첩시키는 논리회로이기 때문에 And, Or이 부족하지 않도록 충분히 주어야 하고 같은 기능을 하는 퍼셉트론이 없도록 미리 분화시켜 놓는 게 좋겠다. N개의 패턴이 있다면 각 패턴은 N-1개의 경계면이 있어야 남들과 자신을 완전히 분리시킬 수 있다. 고로 패턴 하나당 N-1개의 And가 필요하다. 서로 다른 패턴임에도 같은 결과를 도출할 수도 있기 때문에 Or이 필요하다. 5개 패턴이 있다면 1(5쌍묶음) + 5(4쌍묶음) + 10(3쌍묶음) + 10(2쌍묶음) = 26개가 필요하다.




신경망이 오랜 동안 사용되지 않은 이유가 가중치 학습이 불가능했기 때문인데 오류 역전파 알고리즘(알고 보니 연쇄 미분 법칙)이 나오면서 드디어 학습이 가능하게 되었다. 그러면서 실험을 통해 여러 문제가 나타난다. 활성 함수로 시그모이드 함수를 선택한 것이 바보짓이란 것이다. 모양만 예쁘고 복잡하기만 할 뿐이다. 미분 값이 너무 작아서 역전파가 약해진다. 그냥 선형 함수를 쓴 것이 학습이 더 잘 되는 황당한 상황이 발생한다. 

결국 최종 출력에서만 시그모이드 함수를 쓰고 중간 은닉층에선 간단한 선형 함수를 쓴 것이다. 이러면 앞단은 활성 함수 없이 그냥 연결한 것과 같은 상황이다. 이러면 다층 연결이나 1층이나 차이가 없는 상황이 된다. 그래서 0보다 작을 때는 그냥 0으로 꺾어 활성함수를 넣어준다. 이러면 층간의 차이가 생긴다. 절대 초기 가중치를 0으로 주지 말라. 이건 끊어진 상태다. 인공신경망은 항상 이런 식이다. 이론적 배경이 없다.




신경망도 논리 회로라고 보고 입출력 신호를 0~1, -1~+1로 제한을 했다. 그러니 반복해서 곱을 하면 결국 0에 근접하게 된다. 활성 함수를 S자로 한 것은 좋은데 기울기가 0~1로 역시 반복해서 곱하면 0에 근접하게 된다. 당연히 역전파가 안 된다. 정말 바보 같지? 그러니까 입출력 신호를 1보다 크게 하고, 기울기를 1보다 크게 하면 그냥 쉽게 문제 해결이 되는 상황이었다.




오류 역전파를 직접 계산해 보지 않으면 구현이 불가능하다. 연쇄 미분 원리만 이해한다고 구현할 수 있는 게 아니다. 그래서 무식하게 계산해 보았다. 연쇄 미분 필요 없고 모두 대입해서 X에 대해 바로 미분 할 수 있게 한다. 이렇게 해서 미분 후에 정리를 해 보면 총 4가지 경로를 거친 미분 값들이 모두 곱해진 것을 알 수 있다. 이걸 역전파 계산 순서에 맞게 다시 재배치하면 미분 값들이 어떻게 역전파 되는지 알 수 있다. 앞단에서 온 것은 계속 누적 곱해진다. 갈라진 것들이 합쳐질 때는 그냥 덧셈을 하면 된다. 끝에서부터 미분 값들이 곱해져 오기 때문에 바로 자기 다음 단의 것만 가져와 곱하면 된다. 자신의 출력이 갈라져 다음 단에 입력이 되는 경우 바로 자기 다음 단의 각 값들을 합하면 된다.


입력 신호가 거쳐 가는 경로, 1번과 6번을 잇는 경로는 다음과 같다.

1→2→4→6
1→2→5→6
1→3→4→6
1→3→5→6

이걸 거꾸로 뒤집으면 역전파 경로가 된다. 미분 값이 마치 입력 신호처럼 되어 곱과 합의 행렬 곱 반복을 반대로 하는 것이다.

1←2←4←6
1←3←4←6
1←2←5←6
1←3←5←6




패턴에 따라 분류하는 간단한 1층짜리 분류기 신경망은 퍼셉트론 배열로 만든다. 각자 기억한 패턴 검사를 해서 합격 여부를 보내면 가장 점수가 높은 쪽을 선택하는 간단한 회로다. 여기서 퍼셉트론은 비교기이면서 기억 소자 역할도 한다. 지수 함수를 사용하는 이유는 격차를 증폭하고, log함수를 사용하는 이유는 격차를 감쇠하는 효과 때문이다. 그냥 다항식을 쓰면 더 쉬울 것인데? 제곱하고 제곱근 구하는 방식 안 되나? 소프트 맥스 분류기는 각 패턴 검사 출력 총합이 1인 확률로 바꾸고 가장 큰 값을 취하는 것이다.




패턴 검사 부분은 다단계로 구성해도 된다. 각자 자기가 맡은 패턴만 검사해서 답을 내면 된다. 최종 출력에서 최고 값을 선택하는 방식이 소프트 맥스 분류기이다. 다수결과는 다른 것이다. 다수결은 이 분류기 바로 앞에 사용한다. 동일한 A 패턴을 검사하는 방법이 3가지라면 거기선 다수결을 사용하지만 A, B, C 패턴 중에 무엇인지 결정하는 최종 단계에선 신호가 가장 강한 것을 선택하는 것이다.




학습을 통해 변화하는 단계(민감도)가 너무 작으면 학습 시간이 많이 소요 된다. 변화 단계를 너무 크게 하면 학습을 못 하고 이리 갔다 저리 갔다 진동하는 상황이 나온다. 경사가 급하면 학습 보폭이 큰데 이러면 최적점을 넘어 가서 왔다 갔다 진동할 수도 있다. 경사가 급할 때는 보폭을 차라리 균일하게 제한하는 것이 좋겠다. 

최초 입력 신호들을 서로 비슷한 규모로 통일(정규화)하는 게 좋다. (예: 키와 몸무게는 단위가 달라 숫자의 규모에 차이가 크다.) 그래야 가중치들도 비슷한 규모에서 결정 된다. 가중치가 비슷한 규모가 되면 비용 함수 경사도 비슷한 수준이 되어 학습 보폭이 같아진 효과가 있다. 

과적합이란 것은 학습 데이터가 너무 적어 대표성이 없어서 생기는 현상이다. 미녀 마을에서 미녀의 기준을 익혔더니 추녀 마을에 가서 모두 인간이 아니라고 판단하는 것과 비슷하다. 과적합 문제는 학습 데이터가 충분히 많으면 (모집단에 접근하면) 해결 된다. 예를 들면 평균(중심)에 가까운 것보다는 한계(변두리)에 가까운 데이터가 더 좋다. 한계(Max/Min)에 가까운 데이터가 들어가면 경계면을 여유 있게 잡기 때문이다. 

경계면을 수정할 때 치우친 학습 데이터만 겨우 포함시키면 그 근처에서 더 이상 수정을 하지 않기 때문에 경계면을 살짝 벗어나는 데이터가 들어오면 문제가 된다. 이 경우는 패턴과 패턴의 중간 정도에 경계면을 잡는 서포트 벡터 머신(SVM) 방식이 더 좋다. 

일부 퍼셉트론을 잠시 죽이는 Drop-out(탈락)을 통해 일종의 정보 결손을 추가해서 과적합을 풀 수도 있다. 정보 결손이 되면 이를 보충하기 위한 다른 정보가 필요한데 그런 연결이 추가로 만들어지는 것이다. 예를 들어 사람 얼굴 중에 일부가 가려져도 사람이란 것을 인식하도록 하는 짓이다.

앙상블(통일/조화)이란 조합하는 것인데, 학습 데이터만 달라 과적합(지나친 전문화)인 회로들에서 결과를 받아 종합하여 다수결로 판단하는 것이다. 예를 들어 흑인, 백인, 황인만 전문적으로 인식하는 회로를 엮어 사람인지 판단하게 하려면 다수결이 답이겠지.







정확하게 같지는 않지만 컨벌루션 신경망(CNN)합성곱(소용돌이 곱), 상관계수와 비슷한 계산을 한다. 두 경우 모두 같은 패턴일 때 1(100%)이 나오게 된다. 큰 화면의 패턴을 바로 비교하는 것은 엄청난 메모리와 시간을 소모한다. 화면을 통으로 푸리에 변환하는 것과 같다. 그래서 잘게 쪼개서 계산하는데 8x8 푸리에 변환(DCT)을 사용하는 JPEG 압축에서와 같은 방식이다. 3x3 소형 이미지로 기초 패턴 비교를 한다.

작은 특징(경계선)들부터 감지하고 그 특징들이 연결된 패턴(연속선)을 중간 단계에서 인식하고, 그 결과를 더 상위의 층에서 추상적인 판단(꺾임, 교차 등 특징들의 출현)을 하여 최종 결론에 도달하는 걸로 보인다. 문자, 사진의 동물/물체 인식에 상당히 효과적이란다.

문자/영상 인식의 문제는 같은 물체라도 다음과 같은 문제가 있어 어렵다.

  1. 위치가 다르다. → 그래서 컨벌루션을 한다.
  2. 기울어져 있다. → 특징 간의 상대적 위치 분석 필요.
  3. 크기가 다르다. → 특징 간의 상대적 위치 분석 필요. 
  4. 종횡비가 다르다. → 특징 간의 상대적 위치 분석 필요.
  5. 원근법에 따른 사다리꼴 변형. → 특징 간의 상대적 위치 분석 필요.
  6. 어딘가 끊어졌다. (정보결손) → 다른 정보들 조합으로 힌트를 얻는다.
  7. 노이즈 추가 (군더더기) → 의미 없는 위치와 형태는 무시.

이미지 전처리 과정에서 주로 하는 것은 경계선 검출이다. 정보는 경계선(변화)에 있다. 이 경계선의 패턴이 특징이 된다. 세로, 가로, 대각 등의 정보를 준다. 여기에 컨벌루션이 사용 된다. 주로 3x3 필터를 사용한다. 이 선들의 패턴이 모여 교차, 꺾임, 연속선 등의 상위 패턴을 만든다. 이것들이 모여 더 상위의 문자, 동물, 물체의 일부에만 나타나는 특징적 패턴을 만든다. 이 독특한 특징들의 출현 여부로 무엇인지 판단하는 것이다.

음성 인식에선 전처리 과정이 주파수 분석이다. 주파수 분석을 하면 주파수별로 소리의 세기가 나열된다. 여기선 같은 음색인데 음계에 따라 높이만 다른 문제가 있다. 낮은 음계의 도미솔과 높은 음계의 도미솔이 같은 화음이라는 걸 인식해야 한다. 다행히 달팽이관에서 주파수와 음의 세기에 대해서 log함수 처리를 해서 음계간의 간격이 균일하게 된다. 그럼 같은 패턴이 위치만 다른 것인데 여기에 컨벌루션이 필요한 것이다.



C-NN은 필터 컨벌루션을 신경망 회로로 하는 것인데 실제론 완전한 병렬이 아니기 때문에 느리다. 컨벌루션 신경망은 같은 가중치를 가진 신경 세포의 배열이다. 이 필터 패턴은 주로 경계선 검출이다. 이런 기초 패턴을 Pooling이라는 샘플링(평균/Max)으로 중요한 특징만 취하여 그림의 크기를 줄여 저해상도로 만들어 작은 노이즈 성분을 제거한다. 여기에 다시 더 복잡하고 많은 상위 패턴으로 컨벌루션을 한다. 기초 패턴이 모여 더 큰 패턴을 이룬 것을 검사하는 것이다. 이걸 몇 번 반복하여 중요한 특징들을 압축한 후에 다단계 신경망(논리 회로 역할)에 연결하여 패턴인식을 하는 것이다. 특징들 사이의 상대적 위치는 풀링을 하면서 압축 된다.



그냥 막 만든 것 같은데 의외로 신기하게 사진 속의 동물과 물체를 인식한다. 이동, 회전, 크기, 거울 대칭에 대응하도록 같은 그림을 위치, 각도, 크기, 뒤집어 변형시켜 훈련시킨다. 정보 결손 등에 대응하도록 Dropout 기법도 사용한다. 이렇게 훈련하면 배경처럼 관계없는 것은 점차 무시하고 동물과 물체에서 반복해서 나타나는 특이한 모양에만 반응하게 된다. 다단계 신경망은 그냥 AND, OR 기능을 하는 논리회로와 다름없다. 함께 나타나야할 특징은 AND로 묶고, 어느 하나만 나타나도 그 물체/동물인 특징은 OR로 묶는다. 마지막에 Softmax 분류기를 통과하여 어떤 것인지 결정한다. C-NN과 R-NN을 엮어 사진을 보고 설명문을 만들어내는 것도 있다.






은닉 마르코프 모델과 같은 역할을 하는 게 순환 신경망(RNN)이다. 어린 아기가 언어를 배우는 것처럼 숨은 문법을 스스로 찾아내는 것인데 엄청 많은 학습 데이터(단어/문장)를 보고 단어 조립 과정을 계산하는 것이다. 출력은 번역어나 어떤 판단이다. 상태는 같은 품사, 의미, 자리란 뜻이다. 어떤 상태가 되면 어떤 품사/의미/자리에 속하고, 그 자리에 나타날 수 있는 종류의 단어만 출력할 수 있다는 뜻이다. 고로 상태가 곧 출력 단어가 된다.

고로 입력(바로 앞 단어)과 이전 상태에서 다음 상태를 결정하는 것이 신경망이 하는 일이다. 헌데 역전파가 미래에서 과거로, 결과에서 입력으로 진행 되어 대단히 복잡하다. 이건 그냥 은닉 마르코프 모델 쓰는 게 더 편하겠다. 아니 그냥 튜링 머신을 쓰는 게 낫겠다. 그 많은 단어와 문장을 어떻게 계산하냐? 보통 이런 경우 우리가 직접 기본 문법을 넣어 주는 게 더 빠르다.






이건 디지털 회로에서 and/or/not 등이 모두 연결된 상태에서 필요 없는 선을 잘라 회로를 형성하는 것, 두뇌의 신경망이 무작위로 연결된 상태에서 필요 없는 연결을 스스로 잘라 신경망을 형성하는 것, 진화론에서 돌연변이를 주어 오랜 세월 스스로 답을 찾아가는 것과 비슷하다. 허나 당연히 잘 안 된다. 모든 경우와 조합을 탐색하고 통계적으로 계산해야 하니 어느 세월에 계산이 끝이 나겠나? 예를 들어 1만 개의 학습 데이터에 대해서 가중치 조절을 1만회 반복 해야 한다면 총 1억 번의 계산을 해야 한다. 회로가 복잡하면 계산량도 많아진다. 그래서 진화론과 신경망은 학습이 너무 느리다. 반면에 수학적으로 명확한 방식은 1회만 하면 된다.


※ 선형 계획법 : 제한 조건에서 최적의 x, y조합(직선)을 찾는 것
※ 배낭 문제 : 제한 조건에서 조합이 3개 이상일 경우의 최적 조합 찾기
※ 동적 계획법 : 모든 경우를 탐색하여 최적 경로(조합)를 찾는 것(최단 경로 문제)
※ 그리디(탐욕) 알고리즘 : 모든 경우를 탐색 않고 그 순간 최적인 경로를 선택
※ 데이크스트라/다익스트라 알고리즘 : 누적 거리(가중치/비용) 전체 탐색
※ A* 알고리즘 : 누적 거리 + 예상 거리(직선/직각)가 최소인 길 선택(탐욕 알고리즘)
※ 다변수 정규분포 : 예를 들어 점(x, y, z)의 밀도가 정규분포를 이루고 모여 있는 상태
※ 온라인 알고리즘 : 모든 입력이 주어지지 않고 차츰 들어온다.
※ 오프라인 알고리즘 : 모든 입력을 이미 알고 있는 경우 한 방에 처리 가능.
※ 몬테카를로 방법 : 무수한 난수를 발생해서 확률을 추정하여 근사값을 구함.




Ⅲ. 나만의 인공 지능 만들기


퍼셉트론을 연결해서 인공신경망을 만들어 오류 역전파로 학습하는 대규모 회귀 분석은 뭔가 아둔한 짓 같다. 모든 연결된 선을 따라 편미분 값을 구해 약간의 조절을 해 주는 짓의 무한 반복이다. 신경 세포 내부에서 무슨 계산을 하는지 정확히 알 수는 없다. 단지 논리 회로란 것을 알 수 있고 전압을 보면 비활성(부정/음수), 활성(긍정/양수) 2개의 상태만 있다. 역방향으로 신호가 전달되는 것 같진 않다. 세포에게 정답을 알려주는 존재도 없다. 세포들이 어느 세포와 연결을 할지 스스로 결정하지도 않는다. 그냥 약 1000여개의 무작위 연결 상태에서 불필요한 연결을 무시하거나 끊는다. 어떻게 하여 의미 있는 연결만 남겨 놓을까?

※ 서로 모두에게 연결을 할 수 있는 물리적 구조 : 원형, 구형의 표면에 배치
※ 2입력 1출력 세포(4패턴 인식)가 4비트 패턴(16패턴)을 인식하려면 몇 개 필요?
   n = 4비트/2비트
   1단 8개(n*4패턴) + 2단 16개(4패턴ⁿ) = 24개
   다리가 부족한 세포를 사용하면 더 많은 세포로 다단계를 만들어야 한다.
   다단계의 마지막엔 항상 패턴의 숫자만큼의 세포가 나온다.

신경 세포는 자신이 담당하는 패턴이 있다. 세포는 자주 발생하는 어떤 패턴을 그대로 모방하는 모방자로 가정하자. 세포는 고로 기억 장치이다. 세포는 발생 통계를 누적하는 것 같다. 세포는 받은 패턴의 회수를 저장하고 회수가 높은 패턴을 저장한 세포는 중요한 세포가 된다. 회수가 적은 패턴을 저장한 세포는 예외를 기억하는 세포다. 발생 회수가 어느 기준 이상이 되면 그 세포는 확고한 위치(장기 기억 상태)를 점한다. 기준 이하인 경우 점차 패턴을 잊는다. 그리고 모방할 다른 패턴을 찾게 된다. 이것은 입력 신호들 간의 인과관계/상관관계를 분석하는 것과 같다. 이것이 입력단에 있는 세포들이 하는 일일 것이고 구현도 쉽다. (컨벌루션 신경망)

세포 입장에선 A와 B가 항상 1이거나 항상 0으로 짝이 되어 나타나게 되면 A와 B 중에 하나만 보면 나머지를 알 수 있으니 둘 중에 하나는 생략해도 된다는 판단을 할 것이다. 즉 A = B인 상태다. 이런 정보는 데이터 결손이 발생해도 문제없다. A와 B가 항상 1/0, 0/1로 반대로 짝이 되어 나타나게 되면 이건 중요한 의미가 있다. 이건 XOR에 해당한다. 이건 어떤 변화가 있는 경계면을 의미한다. 이런 경우에도 A와 B 중 하나만 알면 나머지 데이터 결손이 있어도 문제 없다. A = 1이면 항상 B = 1인 경우, A = 0일 때 B는 don't care라면 A가 B의 원인이 된다. 이 것도 중요한 패턴이 되며 A가 특히 중요하다. A가 발생하면 자동으로 B도 발생한다.

그 다음 단에선 좀 더 추상적으로 고차원의 패턴 비교를 하는 곳이다. 과거 패턴과 현재 패턴을 연결시키기도 한다. (순환 신경망) 그리하여 시공간을 인식하게 된다. 좀 더 먼 곳에서 온 저차원의 패턴들(5감)을 연결시키는 작업도 한다. 이 층이 완성될 때 쯤 6식(의식)이 생기며, 우린 과거를 기억하게 되며, 언어 문법을 알게 되고, 자의식이 생긴다. 여기서 하는 작업도 같다. 자주 발생하는 패턴을 찾아 기억하는 것이다. 자주 발생하는 패턴은 인과관계/상관관계가 높은 것이다.

우린 사람의 얼굴을 구분할 만큼 자세히 기억하고 있다. (몇 백 명이 한계 같지만.) 그리고 어떤 동물을 사람이라고 분류할 수 있는 분류 기준도 가지고 있다. 예를 들어 인간 평균 특징을 기억하고 있는 것이다. 아마도 미인일 것이다. 우린 어떤 사물의 미세한 차이도 구분할 정도로 구체적 패턴을 기억하고 있지만, 같은 패턴으로 분류할 표준도 기억하고 있다. 여기서 알 수 있는 것은 일단 매우 기억력이 좋아야 한다는 것과 기억하고 있던 것들을 통해 평균을 계산해 낸다는 것이다. 그 평균의 신뢰도는 계산에 참여한 구체적 패턴들의 개수이다.

지금까지 1만 개를 보았다고 해도 1만 개를 모두 기억할 수는 없을 것이다. 허나 1만 개의 평균은 계산할 수 있어야 한다. 자극 회수와 평균을 알면 새로운 자극을 더해서 새로운 평균을 구할 수 있다. 분산의 경우는 최대/최소 값을 기억하고 있다가 새로운 값을 추가 하여 재계산 한다.

※ n회, 평균 a, 신입 b 일 때 새 평균 c = (n*a + b)/(n+1)
※ new max(old max, b), new min(old min, b)

위와 같이 신경 세포가 움직인다고 가정할 거 같으면 굳이 신경 세포를 모방한 신경망을 사용할 필요가 없다. 패턴 비교, 통계 처리, 확률 계산, 논리 연산, 집합 연산, 튜링 머신 등 전문 방법들이 있기 때문에 그걸 쓰면 된다.



1. 촉각 구현 (더듬이 = 안테나)


아마도 제일 먼저 발달하는 감각일 것이다. 우리도 아기 때는 이 촉각으로 사물의 입체적 형상을 학습한다. 절대 눈으로는 입체적 형상을 알 수 없다. 뒤통수를 볼 수 없기 때문이다. 그래서 아기 때 물건만 보면 일단 만지려고 하고 혀로 핥는 것이다. 항상 접촉이 기본이다.

촉감에는 압감과 통감만 있다고 한다. 압력을 느끼거나 통증을 느끼는 것인데 조직이 찢어지거나 찌그러질 때 통감이 온다. 고로 간지럼도 통감에 해당한다. 약한 통감을 간지럽다고 느끼는 것인데 이게 지속되면 정말 통증이 온다. 압감도 지속되면 통증이 된다. 이 촉감은 주로 얼굴(입술/혀), 손, 발에 집중 되어 있고 몸통에는 듬성듬성 배치되어 있다. 기계 표면에도 이런 촉감이 있는 부드러운 피부를 입히면 사고 예방이 도움이 될 것 같다.



같은 종류의 신호를 감지하는 신경 세포들의 배열이 있다. 1천개의 세포가 있는데 병렬로 각자 신호를 동시에 두뇌로 전달할까? 아니라면 이것들이 어떤 좁은 통로로 직렬 신호를 전달할까? 그 경우 어디서 온 신호인지 위치를 파악하는 방법은? 기계가 병렬을 직렬로, 직렬을 병렬로 바꾸어 신호 전달하는 것은 아주 쉽다. 신경 세포는 어떻게 연결 되어야 가능한가? 신호의 세기로 구분하는가? 아니면 디지털 회로처럼 1천개의 위치를 10비트의 패턴으로 바꾸어 전달하는가?

※ 2의 10승은 1024, 1024개 선 중에 하나에서만 오는 정보는 10개 선으로 표현/전달 가능





로봇의 경우는 레이저를 쏘아 공간 인식을 한다. 눈으로 공간 인식을 하는 게 아니다. 여하튼 촉감을 이용해서 공간과 입체 형상을 학습하는 것은 그리 어려운 게 아니다. 비행기의 경우도 레이더로 전방 장애물과 하방으로 고도 측정을 하면 충분하기 때문에 쉽게 무인기를 만들 수 있다. 배의 경우도 레이더로 전방 장애물과 음파탐지기로 수심만 측정하면 문제없이 스스로 이동할 수 있다. 그래서 공중과 바다에서 인공지능 구현이 더 쉽다. 육지의 경우는 어려운 것이 레이저로 장애물 인식은 할 수 있으나 도로의 차선과 신호등 인식은 못 한다. 이건 명암과 색상을 구분하는 카메라가 있어야하기 때문이다.



2. 미각 구현 (액체 성분 분석기)


미각이란 것은 액체 상태의 4가지 물질을 검출하는 것이다. 주로 필수 미네랄 소금 성분, 상한 음식에서 나는 산 성분, 과일 등에서 나는 단 성분 등이다. 혀로도 접촉을 통해 물체의 입체 형상을 구분해 낸다. 그래서 아기 때 혀를 많이 사용했다. 단순 4가지, 매운 맛을 포함하면 5가지 물질 성분을 검출하는 것은 어렵지 않고, 그 맛이 어떠한지 판단하는 것도 쉽다. 5개 전기 신호의 세기가 이루는 5차원 공간의 좌표에 불과하다.

보통 어떤 음식이든 맛은 달고 짠 맛이 기본에 맵고 신 맛의 조합이다. 쓴 맛인 음식도 있지만 요리엔 거의 안 쓴다. 여기서 우리가 짜고 단 맛을 지속적으로 느끼게 되면 만성이 되어서 맛을 무시하게 된다. 이렇게 지속적으로 들어오는 감각은 없는 감각으로 무시하는 기능이 있다. 그래서 나트륨 중독이란 것이 생기는 것이다. 항상 On 상태거나 항상 Off 상태는 우리 감각이 무시한다.




3. 후각 구현 (기체 성분 분석기)


후각은 기체 성분을 검출한다는 것을 제외하면 미각과 같다. 우리가 몇 개의 분자까지 검출하는지는 모르겠으나 1000개의 분자가 있다면 1000차원의 공간상의 좌표가 바로 냄새가 된다. 검색해 보니 1000개 중에 300개만 실제로 느낄 수 있도록 퇴화했다고 한다. 예를 들어 어떤 사람 몸에는 약 10개의 기체 분자만 나온다고 하면 10개의 특성이 이루는 좌표가 그 사람 냄새가 된다. 개는 그 냄새를 추적하는 것이다. 후각에 관련된 인식기를 만드는 것보다 후각 센서를 만드는 게 더 어려운 일이라 하겠다.

미각은 5개만 느끼기 때문에 다양한 음식 맛은 사실 후각을 통해 느끼는 것이다. 고로 후각이 마비되면 맛도 거의 못 느끼게 된다. 후각은 미각보다 더 피로를 잘 느껴서, 쉽게 만성이 되어 고약한 냄새도 많이 맡게 되면 감각이 둔해진다. 항상 있는 것은 없는 것과 같다. 신경 세포에게 있어 사방이 백색인 것은 사방이 흑색인 것과 다름없다.

후각에서 문제는 특성 벡터가 약 1천개란 것이다. 가능한 냄새 조합은 On/Off 조합으로 따져도 1천 비트가 되니까 약 300자리 숫자다. 모든 패턴을 기억할 수가 없는 문제가 있다. 이 문제를 뇌는 어떻게 풀었을까? 우린 사진처럼 모든 패턴을 기억할 수가 없다. 분명 선별을 해서 버리는 것들이 있다. 생존에 결정적인 중요하고 자주 반복하는 패턴만 기억을 한다.

간단하게 천 개의 분자가 떠돌아 다녀도 가장 힘이 센 10개만 취해서 패턴을 분석할 수도 있다. 패턴을 담당하는 신경 세포가 죽으면? 좆 된다. 그래서 몇 개 세포가 같은 패턴을 나눠서 감지할 수도 있다. 일부 정보가 결손 될 경우를 대비해서 일부는 중첩을 하여 감지할 수도 있다. 예를 들어 A는 1~3까지, B는 2~4까지, C는 3~4까지 겹쳐서 분할하여 담당하는 식일 수도 있다. 그리고 아마도 다수결로 결정을 할 수도 있겠다. 몇 개 분자를 취할 것인지도 가변적으로 정할 수 있다.

어떤 시체에서 나오는 분자들은 성분이 같기 때문에 그 시체 옆에선 항상 그 패턴이 감지된다. 그럴 경우 두 사건(냄새, 시체)은 상관관계가 높은 것이다. 같은 냄새를 다른 장소, 시간, 시체에서도 맡았다면 냄새가 원인이 아니라 결과이고 시체가 원인이란 것을 추정할 수 있다. 그 시체의 냄새를 다른 것과 구분하기 위해서 3개의 분자만 필요하다면 나머지는 점차 버린다. 어떤 두 시체의 냄새를 구분하기 위해 3개의 분자로 부족하다면 점차 늘린다.




4. 청각 구현


우리 귀엔 달팽이관이 있어 하드웨어적으로 주파수와 소리 세기를 log 함수 처리를 해 준다. 그래서 큰 소리보단 작은 소리를 더 잘 구분하게 되며, 고주파보다는 저저파의 분해능이 높다. 주파수의 비율 변화(곱셈)가 일정한 간격(덧셈)으로 바뀐다. 기계로 구현하면 주파수 분석기가 된다. 우린20Hz~2만Hz까지 듣기 때문에 1/20초의 소리를 모아 주파수 분석 후에 인식기기로 넘기는 것이 된다. 또한 1음계의 10%까지 구분이 가능하고 약 10옥타브까지 듣기 때문에 분해능은 다음과 같다.

※ 가온다 = 261.626 Hz = 성인 남녀 목소리의 중간

옥타브
저주파
고주파
음계
분해능
1 20 40 12 120
2 40 80 12 120
3 80 160 12 120
4 160 320 12 120
5 320 640 12 120
6 640 1280 12 120
7 1280 2560 12 120
8 2560 5120 12 120
9 5120 10240 12 120
10 10240 20480 12 120
T/T
1200

너무 낮은 옥타브는 음압을 느끼게 하고, 너무 높은 옥타브는 음색/음질의 차이를 만들기 때문에 음계에 쓰진 않는다. 피아노는 약 7옥타브를 낸다. 사람 목소리는 2옥타브를 못 넘기 때문에 가온다를 중심으로 저음 2옥타브, 고음 2옥타브가 성인 남녀가 낼 수 있는 음계이다. 허나 아이들도 있기 때문에 가온다보다 좀 더 높은 쪽에 사실 중심이 있다. 아마도 아기 울음소리나 사이렌 주파수가 중심일 것이다.

소방차 : 300~750Hz, 빨간불 ↔ 파란불
구급차 : 610~690Hz, 초록불, 1초에 한 번 반복
경찰차 : 300~750Hz, 빨간불, 1초에 5~6번 반복



음계를 나타내는 주파수 성분 외에 모음 발음의 차이를 나타내는 주파수 성분이 있다. 이 성분은 음계 구분 영역보다 좀 더 높은 쪽에 위치한다. 이런 2개 주파수와 기본 주파수의 거리가 모음의 음색 차이다. 그러니까 2차원 공간의 좌표가 되는 셈이다. 자음의 경우는 주파수가 사방에 퍼져 나타난다. 고로 자음만 가지고는 어떤 발음인지 정확하지가 않다. 거의 모든 주파수대에서 반응이 있기 때문에 패턴 검사가 쉽지 않다.

그래서 여러 단어의 뭉치를 한 덩어리로 인식해야 단어들을 구분해 낼 수 있다. 이 말은 공백이 없는 적당한 길이의 짧은 문장이 들어올 때 그 속의 단어들을 구분하는 능력을 말한다. 예를 들어 “너어제뭐사먹었니?”라고 오면 “너 어제 뭐 사 먹었니?”로 분해 가능한 인식기가 필요하단 말이다. (중국어, 일본어는 글로 쓴 문장에서도 단어 사이에 공백이 없다. 일본어는 히라가나와 한자의 구분을 통해 단어 구분이 가능하지만 한자는 그것도 없다.)

그보다 더 높은 쪽의 주파수 영역에선 사람 사이의 음색의 차이를 구분하게 해 준다. 사람의 목소리 음색은 의외로 많지 않다. 그래서 주파수 영역만 옮겨 놓으면 여자 목소리가 남자 목소리로 둔갑한다. 다른 사람 목소리로 들렸지만 사실 높이만 다른 같은 주파수 성분이었던 것이다. 내가 여자로 태어났다면 어떤 목소리였을까? 쉽다. 그냥 주파수 대역만 올리면 된다. (이 경우를 보면 같은 음색이라도 남자 ~ 여자 ~아이, 거리가 멀면 다른 소리로 인식한다는 것)

여기서 알 수 있는 점은 우리가 주파수 영역에 따라 해석이 다르다는 것이다. 중간은 노래 부를 때의 음계만 구분한다. 그보다 높은 곳에선 음색으로 발음과 사람 목소리를 구분하는 것이다. 한 사람이 음계만 달리 해서 같은 발음, 같음 음색으로 말 하는 걸 인식할 수 있어야 한다. 즉 주파수 영역에서 위치가 다른 같은 패턴을 인식하는 문제이다. 여기에 컨벌루션이 나오는데 이런 무지막지한 반복 계산을 하지 않아도 되는 방법은 있다.

앞에서 후각의 경우는 무수한 패턴 중에서 중요한 것만 추리는 방법이 필요했었다. 이 경우는 서로 다른 패턴(저음과 고음)이 사실은 같은 것임을 인식하는 것이다. 어떤 동물, 물체에서 나는 소리가 A(저음)도 있고 B(중음)도 있고 C(고음)도 있다. 각 소리는 전혀 다르지만 같은 원인에서 나온 것임을 안다. 이건 같은 것이라고 딱지만 붙여 주면 된다. 헌데 주파수만 이동했음을 어떻게 알까? 이걸 이해하면 시각 정보를 처리하는 방법에 대한 힌트를 얻을 수 있다.

컨벌루션이란 것은 같은 패턴이 위치만 다른 것을 감지하기 위해서 메모리와 계산력을 낭비하는 것이다. 1천 개의 위치 차이가 나는 경우 위치만 다른 같은 패턴을 감지하기 위해 1천 개의 세포가 소모된다. 이건 분명 낭비다. 촉각, 청각, 시각 모두 같은 종류의 신호를 감지하는 세포의 배열이다. 이것들은 상대적 위치, 거리, 형태를 파악하는 기능이 있다. 즉, 같은 방법으로 회로가 구성 되어 있을 것이다. 단순 무식한 패턴 비교가 아닐 것이다.




후각에서 여러 냄새가 섞여 있어도 구분이 가능했다. 청각에서도 여러 소리가 섞여 있을 때 같은 방법으로 구분이 가능하다. 문제는 섞여 있지 않았을 때의 패턴에 훈련이 되어 있어야 한다. 즉 순수한 그 냄새, 그 소리 패턴을 이미 익혀 알고 있어야 한다. 그 상태에서 두 냄새, 소리가 섞여 있을 때 겹치는 부분에선 힘이 강해진다. 고로 전혀 다른 패턴처럼 보이지만 이미 알고 있던 기초 패턴의 조합으로 분해하면 많은 메모리를 쓰지 않고도 패턴 인식이 가능하다. (분할 점령 방식)

더구나 시간적인 변화를 이용하면 더욱 분해가 쉽다. A, B, C 악기 소리가 동시에 시작해서 동시에 끝난다고 해도 각 악기 소리의 패턴을 알면 대충 분해가 되지만, 분명 각자 시작과 종료가 다를 것이다. 그러면 바로 전 상태와 다음 상태의 차이만 알아도 어떤 소리가 나타났다 사라졌는지 알 수 있다. 즉 약간의 시간을 누적해서 분석하면 (마치 단어 뭉치를 분석해서 단어 구분하듯) 각 소리를 구분할 수 있다.

※ 절대음감 : 어릴 적에 특정 주파수에서만 울리는 음만 듣고 자란 아이들에게 생기는 장애. 상대음감이 일반적이고 정상적이다. 다양한 소리 자극을 받았다면 절대음감에서 상대음감으로 발전했을 것이다. 기억력과 계산력이 이상하게 좋은 자폐아들과 비슷한 현상이다. 음악적 재능과는 상관없다.

자연어 처리까지는 아니더라도 악기 소리나 사람 허밍을 듣고 악보를 그리는 프로그램을 만들 수는 있을 것이다. 악기 종류까지 구분할 수 있다면 발음과 목소리 구분도 가능하겠지.



5. 시각 구현


청각의 경우 주파수 축(1차원 축)과 시간 축을 합하면 2차원이다. 시간 변화를 이용해서 각 소리를 구분할 수 있었다. 시각의 경우는 영상 2차원에 시간까지 더하면 3차원이다. 역시 시간 변화를 인식해서 사물을 구분할 수 있다. 감시 카메라는 움직임을 포착한다. 거기에 양쪽 눈의 각도 차이에서 오는 정보까지 합하면 4차원이다. 이 경우 어떤 지점까지 거리 계산도 가능하다. 좌우 눈에서 오는 영상과 시간 변화까지 비교해야 한다. 거기에 청각과는 달리 같은 위치에서 오는 정보가 3종류(빨강, 초록, 파랑)이다. 그래서 총 7차원에 해당한다.

※ 7차원 : 가로, 세로, 거리, 빨강, 초록, 파랑, 시간

이걸 무식하게 통으로 컨벌루션 계산을 하려면 우주 공간을 다 메모리로 써도 힘들 것이다. 분명 구역을 분할하여 특징을 취하고 그 특징들 사이의 거리를 이용해서 패턴을 인식하는 것이겠지만 어떻게 신경망이 스스로 그렇게 동작하는 회로로 연결 될 수 있는지는 알 수 없다. 눈의 주변부는 저해상도인데 중앙 부분만 고해상도이다. 그래서 눈알을 이리저리 굴리면서 (더듬이로 더듬듯이) 특징을 파악해서 두뇌에서 시공간적으로 조립한다. 그래서 무식한 전체 컨벌루션이나 주파수 분석을 할 필요가 없다. 부분적으로 나눠서 한다.

※ 특징 : 수직선, 수평선, 대각선, 교차로, 꼭짓점 등

특징 사이의 거리의 비율이 같다면 크기와 회전 각도에 상관없이 같은 모양이다. 3각형은 3개의 꼭짓점이 있는데 3개의 각이 같으면 닮은꼴이다. 3변의 비율이 같아도 닮은꼴이다. 고로 특징 3개를 연결한 3각형의 3변/3각은 3차원 특징 벡터가 된다. 이 삼각형이 크기도 다르고 회전까지 한 경에도 같은 삼각형임을 인식해야 한다. 이것도 지역적으로 근처에 있는 것들끼리 먼저 계산하여 작은 패턴(꼭짓점/변)을 인식한 후에 점차 넓게 확장하는 방식일 것이다.

※ 극좌표계 : 회전,  직각좌표계 : 이동, 확대/축소는 양쪽 모두 쉽다

청각에선 어떤 주파수에 신호가 있는지를 알기 위해 주파수 분석을 먼저 하지만, 시각에선 어디가 경계인지를 알아야 하기 때문에 경계 검출이 먼저 일어난다. 더구나 홍채가 광량을 조절해 주기도 하여 어두운 곳을 관찰하도록 해 주며, 빛에 대해서도 log 함수를 취해서 어두운 곳에 더 민감하다. 3색 시각 세포는 백색의 기준 점(백색 균형 점)도 옮겨 준다. 3색이 모두 있을 때가 백색인데 평균 색상을 백색으로 인식하는 것이다. 즉 차이점, 변화에 집중하고 평균은 무시한단 의미다.

※ 청각에서도 저주파와 고주파는 중간보다 민감도가 떨어진다.

질감은 명암 패턴에서 나온다. 밝고 어두운 패턴이 같은 방향성을 가지고 반복되면 거친 면이란 의미다. 이건 지역적으로 주파수 분석을 해 보면 답이 나온다. 빛의 방향은 일정하기 때문에 요철 면을 보면 반드시 명암이 짝으로 나온다. 빛이 있으면 그림자가 있는 법. 반면에 무늬란 질감처럼 규칙적인 명암 패턴이 아니다. 표면의 문양이기 때문에 차이가 있다. 명암차가 큰 무늬는 위장복처럼 눈을 헛갈리게 한다. 풀이나 숲이나 털 같은 것이 그렇다. 명암 색상 차이가 큰 것은 서로 다른 재질, 물건이란 의미다. 고주파 성분을 죽인 저주파 성분만으로 대략적 윤곽을 파악하는 기능이 분명 있을 것이다. 표면의 섬세한 질감과 무늬는 형체 인식에 방해만 되기 때문이다.

※ 적당한 블록으로 평균을 취하면 고주파 성분이 제거 된다.

연변대비 현상을 보면 인간의 눈이 경계 부분을 강화하는 걸 알 수 있다. 명도 대비를 보면 밝기도 왜곡하고 있고, 각종 대비에선 색상도 왜곡하고 있다. 명도 색상의 왜곡은 상대적 차이를 강화하는 전처리 작업 때문이다. 지역적인 평균 대비 차이를 강화하는 것이다. 면적이 넓은 부분에선 형태적 정보가 약하기 때문에 색상, 질감 파악에 집중하고, 무늬처럼 복잡한 형상이 있는 곳에선 색상 정보가 큰 의미가 없어 형태 정보 파악에 집중하려고 명암 차이만 강화한다. 문자와 같은 가는 선으로 된 형태의 경우 색상이나 명암은 거의 무시하고 흑백으로만 보게 된다. 눈은 색상에 그렇게 민감하지 않다. 색상은 조명에 따라 약간 달리 보이기 때문에 중요하게 취급하지 않고 명암을 더 중요하게 생각한다.

※ 지역 평균 대비 차이를 강화하면 경계가 선명해 진다.

착시 효과를 보면 길이, 면적, 형상까지 왜곡하고 있다. 이런 왜곡은 좀 더 고차원적 추상적 판단에서 나타난 왜곡이다. 교차점, 꼭짓점, 직선, 곡선, 잔상 등의 파악이 된 후에 이것들이 모여 이루는 형상을 종합적으로 판단하는 과정에 나타난 왜곡이다. 아마도 원근감을 처리하거나 사물의 운동을 처리하는 과정에서 나타난 왜곡이겠다. 잔상이 있는 것은 운동하는 물체에만 나타나기 때문이다. 어떤 무늬는 주로 움직이는 액체(물/기름/소용돌이)나 물체(밧줄/뱀) 같은 것에 자주 보여서 움직여 보인다. 사람 눈이 카메라처럼 정확하게 사물을 보지 않는다는 뜻이다.



위의 그림의 핵심 정보만 요약하면 어떤 한 꼭짓점에서 출발해서 (각도, 길이) 쌍의 나열(사슬 연결)로 요약할 수 있다. 곡선의 경우는 어떻게 표현할지 모르겠다.

눈앞의 특징들 중에 가장 가치 있는 정보는 무엇일까? 직선, 곡선 등 연속선일 것이다. 이건 경계선을 의미한다. 경계선은 같은 영역이라고 부르는 것들 사이에 있다. 고로 같은 영역을 묶어 주는 것과 경계선 구분은 같은 문제가 된다. 같은 영역이란 밝기와 색상이 비슷한 영역을 의미한다. 경계선은 이 변화가 아주 심한 곳이다. 부드럽게 명암과 색상이 변하는 곳은 같은 영역으로 취급할 수도 있다. 경계선의 강도가 일정하지 않기 때문에 가상의 연장선을 이어주는 기능도 있어야 한다.

※ 직선은 그 선 안의 두 점들 사이의 기울기가 같다.
※ 곡선은 그 선 안의 두 점들 사이의 기울기가 연속적으로 변한다.

배경이 깔끔한 문자나 만화 같은 그림은 배경과 내용 구분이 쉽지만 복잡한 자연 환경에선 통하지 않는다. 배경과 물체를 구분할 수 있는 다른 방법이 있을까? 예를 들어 움직이는 물체는 배경과 구분 된다. 가까운 물체는 양쪽 눈으로 보는 각도 차이가 크다. 배경은 각도 차이가 거의 없다. 또는 관찰자가 외눈박이라 하더라도 좌우로 움직여 보면 원근을 파악해서 물체와 배경을 구분할 수 있다. 가까운 것은 많이 움직이고 먼 것은 조금 움직인다. 하나의 물체는 모든 부위가 함께 붙어 움직인다. 함께 움직이는 것은 하나의 덩어리이다. 배경은 전체가 함께 움직인다. 즉 여러 물체가 함께 움직인다.

※ 사진처럼 정지한 영상만 보고선 절대 물체와 배경을 구분할 수 없다.

시스템이란 여러 부품, 재료가 모여서 하나의 복잡한 물체(생명, 기계)를 형성한 것을 말 한다. 같은 재료의 덩어리(석재, 목재, 철재, 액체, 기체)는 시스템이 아니다. 이런 시스템의 경우 어느 일부만 봐도 전체를 알 수 있다. 예를 들어 사람 얼굴 일부만 보고도 그가 사람이고 누구인지까지 알 수 있다. 상당한 정보의 결손이 있어도 100% 전체 모습의 추정이 가능한 패턴들이 세상엔 아주 많다. 다행히도 세상엔 가능한 모든 패턴이 다 나타나지 않기 때문이다. 특징들 중에 그것이 무엇임을 알려주는 최소 조합만 알고 있으면 된다. 관절이 움직이는 동물은 머리, 팔, 다리, 꼬리 등 각 부분을 따로 인식해서 조립한 것이다.

※ 알파벳 조합으로 가능한 모든 단어보다 사용하는 단어는 훨씬 적다.
※ 단어 조합으로 가능한 모든 문장보다 사용하는 문장은 훨씬 적다.



더 단순한 문자 인식을 보면 획을 인식해야 하는데 획이란 것이 두께가 일정한 선과 점이다. 붓글씨와 인쇄용 철자 같은 경우는 획의 두께까지 변하고, 획의 끝에 치장을 한다. 헌데 글자가 너무 작으면 이런 멋을 부릴 수 없어서 거의 두께가 일정한 선이라고 보면 된다. 획에서 골격만 뽑아낼 수 있으면 문제가 좀 더 단순해진다. 우린 모든 글자체를 구분할 수 있을 정도니 작은 치장까지 인식하고 있다는 말이다. 어떤 글꼴들은 같은 글자라고 보기엔 너무 다른 스타일인 것들도 있다. 이건 다른 문자로 인식하고 같은 문자라 딱지만 붙이면 된다.

※ Serif : 활자치장, 명조체, Times
※ Sans Serif : 치장없음, 고딕체, Arial

각 부위의 특징은 가중치가 다르다. “아/이/어, 오/으/우, 자/차”의 구분에선 점의 가중치가 매우 높다. 이 글자들은 그 점 하나로 구분할 수밖에 없기 때문이다. “마, 아”의 구분에는 꺾인 부분의 각도가 중요하다. “마, 나”의 구분에는 우측 위의 꺾임 유무가 중요하다. 한글의 경우는 글자들 사이의 유사도가 높아서 중요한 부분을 꼭 확인해야 한다. 더구나 모아쓰기 방식이라서 음소를 인식해서 음절을 인식하는 것도 힘들다. 그럼에도 우린 철자가 틀린 글자라도 아주 빨리 읽고 있다.

우린 단어 단위로 읽는다. 단어 차원에서 보면 사소한 점 하나 없어도 전체 단어를 판독하는데 문제가 없게 된다. 간단하게 글자를 2개씩 묶어 사용 빈도를 조사해 놓으면 글자의 윤곽만 보고도 어떤 글자의 조합인지 알 수 있다. 단어를 구분해 내는 것은 비교적 쉽다. 행간에 간격이 있고, 단어 사이에 공백이 있다. 행간과 공백을 구분하려면 문단 전체를 인식하는 게 먼저 필요하다. 문단 전체 형태를 인식할 때는 고해상도가 필요 없다.

문서의 전체 윤곽만 볼 수 있을 정도면 기울어짐 상태나 어디에 문단이 있고 어디부터 읽어야 하는지 알 수 있다. 단어의 위치도 알 수 있기 때문에 단어 단위로 가져와서 기울어짐을 보정한다. 대충 윤곽(좌우상하에서 본 모습)을 파악한 후에 필요하면 자세한 부분까지 살핀다. 수평/수직으로 X-Ray를 쏘면 획(뼈)이 어디에 집중 되어 있는지 알 수 있다. 또한 수평/수직으로 훑으면서 획의 개수를 세는 것도 가능하다. 우린 글자의 일부분만 봐도 그게 어느 나라 글자인지 어떤 글자인지도 추측할 수 있다.

※ 필기체 인식 : 종이에 이미 적힌 필기체를 인식하는 게 아니라 패드에 쓰는 과정을 추적해서 인식하는 것이 있다. 이건 아주 쉬운 편이다. 위치, 꺾인 각도, 쓴 순서 정보가 바로 얻어지니 획을 추출할 필요가 없다.

※ 내용 복사 방지가 된 컴퓨터 화면의 이미지를 캡처하여 글자를 인식하도록 하긴 쉬울 것이다. 노이즈도 없고, 기울어지지도 않았다. 단지 크기와 글꼴 차이만 난다. 좀 더 나아가 동영상 화면 밑의 자막을 인식할 수도 있을 것이다. 배경만 잘 구분해 내면 말이다.



6. 6감(지능) 구현


시각 구현은 청각 구현에 비하면 지나칠 정도로 어렵다. 알아서 회로를 만드는 인공 신경망을 써도 완벽하지 않을 정도다. 일단 시각까지 구현이 되었다고 가정하고 이제 이 5 감각을 통합해서 나 자신을 포함한 다른 개체를 구분하고 자연 법칙을 이해하고 언어를 이해하는 지능을 구현한다고 하자. 미물일수록 지능이 낮은 이유는 환경이 단순하기 때문이다. 예를 들어 옆에 먹을 것이 항상 굴러다니는 것들.

6감이라 하면 꼭 의식적 지능을 말하지는 않는다. 무당의 감도 6감이라고 한다. 무의식적으로 저차원 지능에서 섬세한 확률 통계적 계산을 했거나 패턴 인식 등이 잘 훈련이 되어 묘하게 잘 맞추는 감을 말 한다. 의식하지 못 하지만 나도 모르게 잘 하는 것들이 있지 않은가? 우리 무의식도 훈련된 지능이다. 걷기, 자전거, 수영 등 딴 생각하면서 자동으로 할 수 있다. 허나 처음엔 의식적으로 훈련 시켰던 것이다.

지능은 욕망과 감정과는 다른 것이다. 욕망은 행동 목적이고 감정은 평가 시스템이다. 욕망이 요구하고 지능이 답을 구하여 욕망이 만족하면 감정이 기뻐하는 것이다. 감정과 성격은 지능보단 멍청하고 욕망보단 똑똑한 물건인데 성격은 어떤 행동을 하는 경향이다. 그 행동 경향이 그의 생존과 번식에 유리하면 그 성격이 퍼질 것이다. 탐험과 전투를 해야 하는 상황이 필요한데 그런 성격이면 그 유전자가 퍼진다.

※ 욕망 : 잘 먹고, 잘 자고, 잘 싸고, 오래 살고 싶다.
※ 감정 : 행복(만족) ↔ 불행(부족), 평가 시스템
※ 성격 : 우월감/적극적(분노) ↔ 열등감/소극적(공포), 행동 경향

어떤 물체를 보면 각 부품들이 함께 뭉쳐 돌아다니는 것을 시각으로 인식할 수 있으며 거기서 소리도 난다. 그리고 냄새까지 풍기며, 맛도 느낄 수 있고, 만지면 촉감까지 느낄 수 있다. 그 물체에서 나오는 5가지 감각의 정보가 그 물체의 패턴이다. 여기서도 5가지 각자 패턴이 함께 나타나서 큰 패턴을 만든 것이다. 일부 패턴(시각/청각/후각)만으로도 그 물체 전체를 인식할 수 있다. 여기까진 여전히 분류기이다.

동물들도 여기까진 한다. 인간처럼 언어 기능이 약하고, 논리적 사고력이 약할 뿐이다. 인간은 생각을 언어로 한다. 생각할 때 머리 속에 말소리가 들릴 것이다. 계산할 때 필요한 99단이나 수학 공식도 언어로 외운다. 수학 자체가 논리이고 수학 기호(언어)로 생각을 표현한다. 과학이 수학을 만나기 전까지 경험에 의해 익힌 기술만 있었다. 자연법칙 또한 경험에 의한 패턴만 알고 있었다.

동물이나 인간이나 이미 감각이 생길 때부터 패턴에 대한 확률, 통계, 집합, 논리 등 본능적으로 알고 있다. 왜냐하면 그걸 해야 지능이 생기니까. 단지 동물은 언어로 표현하고 생각을 확장하지 못 한다. 그래서 여기선 인간이 언어를 어떻게 자동으로 배웠을까를 생각해 보겠다. 아마 인간도 언어 배우는 게 가장 힘들었을 것이다. 인간 언어 자동 학습기가 튜링 머신을 흉내 낸 은닉 마르코프 모델, 순환 인공 신경망이다.

언어는 5감에서 오는 패턴들과 다르다. 길이가 일정하지 않다. 짧은 것에서 긴 것까지 다양하다. 순서 배치까지 다양하다. 들어오는 소리에서 단어를 구분하고 문법 규칙을 스스로 터득할 수 있을까? 어느 정도 반복 되는 부분이 언어마다 있다. 영어는 앞부분, 한국어는 뒷부분이다. 영어처럼 순서나 위치가 고정된 패턴도 있고, 한국어처럼 순서와 위치가 변하는 것도 있다. 처음엔 간단한 단어 하나를 배운다. 단어를 모르는데 문법을 깨달을 수가 있을까?

만약 튜링 머신처럼 이것 다음엔 저것이라고 모든 가능한 순서를 기억하고 있는 방법으로 문법을 터득한다면 한국어처럼 어순이 자유로운 언어는 머리가 꼬일 것이다. 단어(원자) 몇 개가 모여 합성 단어(분자)처럼 쓰인 경우는 순서가 중요하다. 의미상 순서가 중요한 경우를 제외하곤 어느 나라 언어에서도 순서를 바꾸어도 이해를 해야 한다. 어떻게?

※ 음소 → 음절 → 단어 → 복합어/파생어 → 구(어순 고정) → 절(어순 자유)

문장의 단어들이 조립되는 과정을 그려 보면 나무 모양이 된다. 음소가 조립 되어 음절이 되고, 음절이 모여 단어가 되고, 단어가 모여 좀 더 큰 단어(복합어/파생어)가 되고, 구가 되고, 구가 모여 절(문장)이 된다. 보통 구까지는 어순이 고정 되어 있다. 문장의 경우는 어순이 자유롭다. 이 나무 구조의 문장 조립은 어순이 다른 언어에서도 동일하다. 어순이란 이 입체적인 나무 구조가 1차원으로 표현된 순서에 불과하다. 나무 가지 끝의 잎(단어)들 중에 무엇을 먼저 말하고 나중에 말하는 가의 차이다.




나무 모양 구조에서 뿌리(술어)가 필요한 가지의 종류와 수를 결정한다. 영어의 경우 동사가 필요한 주어, 목적어, 보어 등을 결정한다. 한국어도 마찬가지다. 형용사 술어나 명사 술어는 거의 같은 경우로 A = B란 의미다. 영어/일본어에선 형용사는 명사를 닮았다. 한국어에선 형용사가 동사처럼 어미변화한다. 이들도 주어 외에 더 필요한 것이 있으면 역시 뿌리 역할을 한다. 수학 함수로 말하면 f(x, y, z) 형태로 술어(f)가 파라미터(x,y,z)의 개수와 종류를 결정한다.

그렇기 때문에 일렬로 들려오는 문장을 적당한 지점에서 잘라 잔가지들을 얻고, 술어를 만나면 그 잔가지들을 제 위치에 꼽아야 한다. (의미를 이해해야 가능하다.) 자르기 좋은 적당한 지점을 어떻게 결정할까? 먼저 단어를 알아야 한다. 그래서 아기 때 간단한 단어부터 배우기 시작하는 것이다. 이 단어 앞뒤에 다른 단어를 붙여 의미를 확장하는 단순한 문법과 자주 쓰이는 단어 뭉치부터 패턴으로 익힌다. 그리고 이질적인 패턴과 패턴 사이를 자른다.

재활용 불가한 패턴이란 멤버 단어 나열 자체가 한 단어처럼 쓰여서 다른 단어를 넣어 조립하는 게 불가능한 것이다. 즉 긴 단어인 것이다. 재활용 가능한 패턴이란 멤버의 일부는 고정 단어인데 어떤 곳은 다른 단어로 대체가 가능한 것이다. 대체 되는 단어들은 같은 부류의 의미, 형태, 품사를 가진다. 고로 단어를 의미에 따라 세분해야 한다. 단어의 외형과 품사만 가지고는 여러 의미 중에 적당한 의미를 고르기 어렵다.

어순, 문법, 품사 같은 형식은 의미를 담지 않기 때문에 지능이라 할 수 없다. 우린 지식을 언어로 기억하고 있다. 즉, 구체적인 사실을 이미 아주 많이 기억하고 있다는 말이다. 마치 전문가 시스템처럼 단편적 사실들을 엮어 논리적 추론을 거쳐 결론에 도달한다. 이 지식이 어떤 방식으로 저장 되어 있는지는 알 수 없으나 각 나라의 언어로 표현 된다. 어떤 문장은 참이고 어떤 문장은 거짓이고 어떤 문장은 무의미하다는 것을 안다.

의미의 세계로 들어가면 각 나라의 독특한 어순, 표현은 사라진다. 순수하게 의미만 나타내는 만국 공통 기호로 바뀐다고 가정하자. 기계는 문장의 의미를 모르기 때문에 통번역을 제대로 할 수 없다. 보통 어순만 재배치하고 단어 뜻만 찾아 조립한다. 이 때 자주 어순도 꼬이고 엉뚱한 단어 뜻을 취한다. 각 나라 언어는 단지 어순만 다른 게 아니라 표현까지 다르다. 문장의 단어 조립도를 제대로 그려도 표현을 바꾸지 못 하면 개판 통번역이 된다. 표현까지 바꾸려면 단어 뭉치(구)나 문장 전체를 통으로 번역한 DB를 가지고 있어야 한다. 이건 사람이라도 어쩔 수 없다.

단어들 사이에는 의미상 궁합이란 것이 있다. 단어가 의미상 앞 단어보다 뒤 단어와 더 친하다면 뒤와 묶어야 한다. 형식적 문법만 가지고는 이런 판단을 할 수 없다. 동사-명사-형용사 사이에 의미 궁합표가 있어야 한다. 문장 안에 문장이 들어간 복문의 경우 삽입된 문장을 끊어 낼 수 있어야 한다. 여러 언어에서 삽입 된 문장의 시작과 끝을 알려주는 형식적인 힌트가 별로 없다. 영어는 관계사로 시작해서 삽입절임을 나타내지만 끝은 의미로 판단해야 한다. 한국어는 삽입절의 끝은 술어로 판단할 수 있으나 어디가 시작인지는 의미로 판단해야 한다.

단어의 의미를 어떻게 표현해야할까? 추상명사는 동사와 형용사의 명사형에 불과하다. 추상적인 형용사, 동사는 구체적인 것들의 조합이다. 가장 구체적인 명사, 형용사, 동사, 부사의 의미부터 표현하면 된다. 먼저 5감으로 느낄 수 있는 특징으로 나열하면 된다. 눈으로 볼 수 있는 것은 최소한 색상이 있다. 기체, 액체처럼 고정 형태가 없는 것도 있지만 대체로 고체는 형태가 있고 숫자로 셀 수 있다. 생명 같은 복잡한 시스템은 여러 부품(명사)들의 조립이다.

이런 식으로 그 명사가 가진 소리, 냄새, 맛, 촉감, 형상, 색상, 부품 유무를 표시하면 된다. 형용사는 바로 이 5감 각각의 구체적 표현이다. 동사는 변화와 움직임을 나타낸다. 부사는 강도와 빈도 등 정도를 나타낸다. 이건 객체 지향 프로그램에서 객체를 표현하는 것과 같은 방식이다. 객체의 속성들이 곧 그 객체의 의미다. 생명 → 동물 → 사람 → 도둑 순으로 특징의 상속도 통한다. 이건 일종의 전문가 시스템이다.

※ 영한 번역기 : 영어 어순을 뒤바꾸지 않는 간단한 단어, 단어 뭉치(구) 번역기를 만들 수 있다. 한국어는 어순이 자유롭기 때문에 단어와 구만 제대로 번역을 해도 의미 파악이 된다. 쉬운 단어는 번역할 필요가 전혀 없다. 용법과 뜻이 많아 번역하기도 힘들다. 어려운 단어만 번역해도 충분하다. 대부분 어휘 때문에 외국어를 못 하니 이정도면 충분하다. 복잡한 기술을 적용할 하등의 이유가 없다.







로봇 산업을 키우는 방법은?

우선 공장에서 이미 지능이 낮은 로봇(눈과 팔만 달린 로봇)들이 사용되고 있어 많은 사람들이 직업을 잃었다. 대신 다른 직업이 생겼지만 만성 실업자들이 늘었다. 그리고 더 이상 생산할 물건이 없을 정도로 공산품은 많다. 멀쩡한 것을 버리고 있는 상황이다. 우리에게 정말 일할 로봇이 필요한가?

흔히 국방비 먹을 목표로 전투용 로봇을 생각할 것이다. 지능이 거의 없는 전투용 로봇은 활용 중이다. 이 로봇들의 개념은 간단하다. 이동/수송 수단(바퀴, 배, 날개) + 무기(총, 포, 로켓, 미사일) + 눈과 귀(레이더, 레이저, 망원경, 카메라, 소나) + 두뇌(인간). 지금 사용하고 있는 모든 전투 기계(전차/전함/전투기)가 바로 이런 로봇이다.

문제는 아직 지능이 그리 높지 못 한 로봇이 스스로 무기를 사용하게 할 수는 없다는 것. 중요한 것은 주로 인간이 제어한다. 그래서 산악에서 말이나 소로 사용할 목적으로 걷는 로봇들을 개발 중인데 언제 쯤 사용할 수 있겠는가? 얘는 지능이 그리 높지 않아도 된다. 소나 말처럼 짐만 나르면 되니까.

★ 로봇의 이동에 필요한 인공 지능

  • 공중 : 장애물과 충돌 가능성이 매우 적어 자동 항법이 가능하다.
  • 수중 : 공중에서 헤엄치는 것과 크게 다를 게 없다.
  • 수면 : 2차원적이나 역시 장애물이 적으며 자동 항법이 가능하다.
  • 지표 : 장애물이 아주 많아서 인공 지능을 믿을 수 없다.

지표에서 자동 운전이라고 하는 것은 카메라로 차선을 감지하고 따라가는 것이라 철로 위의 기차와 별로 다를 게 없다. 충돌 방지를 위해 속력에 비해 전방 물체가 너무 가깝거나, 이상하면 무조건 자동으로 정차하는 기능이 있다. (헌데 운전자가 브레이크를 밟도록 해서 결국 사고가 나서 사람이 죽었다. 운전자에게 책임을 떠넘긴 것이다.)


★ 지표면에서 증명 된 효율적 이동 수단

  • 바퀴 1개 : 외발자전거, 매우 불안정
  • 바퀴 2개 : 자전거(좌우 불안정)와 수레(전후 불안정) 2가지
  • 바퀴 3개 : 방향(앞바퀴 2개) + 추진(뒷바퀴 1개), 저렴하며 안정적
  • 바퀴 4개 : 자동차(마차), 차동기어, 복잡하며 안정적
  • 바퀴 6개 : 장갑차, 회전할 때 바퀴에 무리가 간다.
  • 바퀴 n개 : 기차, 뱀 형상

바퀴의 경우 대단히 저렴하고 안정적인데 평지에서만 사용할 수 있다는 한계가 있다. 로봇이라면 바퀴 3개가 가장 저렴한 이동수단이 된다. 자동차의 경우 추진을 담당하는 바퀴의 좌우 속도 조절 문제가 있어 기계가 복잡해진다.

  • 다리 1개 : 콩콩이, 매우 불안정
  • 다리 2개 : 사람, 새(조반류 공룡 후손), 전후 불안정
  • 다리 3개 : 노인(다리 + 지팡이), 장애인(외다리 + 목발) 안정적
  • 다리 4개 : 보행법 2가지(엇갈린 보행=걷기, 발맞춘 보행=달리기), 안정적
  • 다리 6개 : 곤충, 저렴하고 안정적
  • 다리 n개 : 뱀, 지네 형상

일단 다리가 달리면 중심도 잡아야 하고 어디로 발을 뻗을지 판단해야하기 때문에 지능이 높아야 한다. 대신 계단, 산악 지형에 적응 가능하다. 다리 6개의 경우가 기계적으로도 단순하고 중심을 잡을 정도의 높은 지능이 필요 없다.


노동이나 전투 대신 지능으로 보좌할 지능형 로봇도 있다. 영화에 나오는 바퀴가 달린 대가리만 큰 말 많은 로봇 말이다. 연구실에서 사용 가치가 높을 것인데 이미 슈퍼컴퓨터가 그런 도움이 역할을 하고 있지 않나? 로봇이 어려운 이유가 바로 인공지능인데 이런 로봇이 나오기 가장 어렵겠지. 아마도 지능형 로봇이 최후의 로봇이 될 것이다.

답은 바로 섹스 로봇이다. 진짜 사람처럼 만든 섹스 로봇은 그리 지능이 높을 필요도 없으며 걸어 다닐 필요도 없다. 눕거나 기거나 뒹굴기만 하면 된다. 이것은 매춘을 대체하는 효과도 있어 섹스 산업의 돈을 로봇 산업으로 흘러가게 할 수도 있다. 또한 기존의 마네킹이나 모델을 대체할 수도 있다. 로봇 산업도 키우며 매춘도 줄이니 1석2조다.





왜 젊은 세대는 결혼을 하지 않을까?

우리가 옛날처럼 땅 넓고 인구 적어 단순하게 농사, 목축, 어업, 사냥으로 먹고 살 수 있고 집 지을 땅도 넓다면 결혼을 하겠지. 인구는 많고 땅은 좁고 부동산은 이미 노인들이 점유하여 사기 힘들고, 기계 덕분에 생산성이 높아 일자리는 부족한데 일은 해야 먹고 사니 필요도 없는 쓰레기를 생산하며 자원을 낭비하고 있다.

부모 시대는 가난해서 구질구질했는데 이 시대는 부유함에도 구질구질하다. 솔직히 많은 사람들이 일을 하지 않아도 먹고 살 수 있는 행복한 시대임에도 먹고 살기 힘들게 하고, 고졸이면 충분한 직업을 얻기 위해 대학까지 졸업하고 불필요한 영어 따위 배우느라 돈과 시간을 낭비하는 나라에서 무슨 결혼이냐?

한중일은 인구를 좀 더 줄여야 한다.

댓글 없음:

댓글 쓰기