2019년 4월 5일 금요일

인공지능이 인간에게 깨우쳐주는 것

인공지능에 대한 회의적 시각은 아직도 만연한데, 그건 인공지능에 대한 기술적으로 들어갈수록 더 그렇지 않나 싶다.
어차피 컴퓨터로 할 수 있는 연산이라는 것이 매우 제한적인 것이고, 그것들의 파생된 혹은 복잡하게 조합된 연산이라고 해 봐야 그 한계가 뻔해 보이기 때문일 수도 있다.

하지만 빅데이터, 데이터의 분류와 결합, 데이터의 검색과 변형, 딥러닝, 상황에 따른 유동적 확률의 적용 등이 엮어내서 도출되는 그 무언가가 과연 어떤 의미를 지니겠는가 하는 건 완전히 별개의 문제이다.

컴퓨터가 쉬지 않고 이 작업들을 기계적으로 반복하고 있다고 하더라도, 그 순간순간에 도출되는 중간 결과물들에 대한 의미의 판단마저 스스로 하지 못한다면, 막대한 리소스를 투입하고도 인간들이 얻을 수 있는 결과는 아무것도 없을 수 있다.

그렇다면 과연 컴퓨터가 스스로 어떤 의미를 파악하고 판단할 수 있겠는가?

바로 이 문제가 인공지능에 대한 의구심의 핵심이다.


알파고가 바둑에서 이기고 지는 것에 대해 대체 어떤 의미를 가지고 있을까?
이세돌이 졌을 때 느꼈던 패배감 좌절을 알 수 있을까?
그리고 한번 이겼을 때의 쾌감과 자신감을 알 수 있을까?
그건 그냥 감정이라고? 의미가 아닌?

자동 통역 시스템들은 자신들이 통역해야 할 문장의 의미를 알고는 있는걸까?
그래서 통역해낸 결과도 같은 의미를 가지고 있다는 걸 알고는 있는걸까?
그 결과를 다시 역변역했을 때, 최초의 문장과 조금이라도 달라졌다면 그게 어떤 차이인지 알고 있을까?
알리가 없지 않은가?


하지만 이와같은 인공지능에 대한 강한 의구심을 떨쳐낼 수 있는 개념은 따로 있다.

'그래서, 인간은 과연 정말 알고 있는건가?'

인간들이 알고 있다고 생각하는 것들이 정말 맞는것일까?
그냥 알고 있다고 생각하는 건 아닐까?
만약 신적인 존재, 전지적인 존재가 인간들의 지식을 보면 어떤 생각이 들까?
아주 단편적이고, 아주 제한적인 시간과 공간에서만 들어맞는 자기들만의 자식을 가지고 마치 절대 진리와 맞닿아 있을거라 우쭐거리는 존재?

그럼에도 불구하고, 인간의 과학기술이 현실세계에서 적용되고 효과를 보고 있다면, 컴퓨터의 인공지능 또한 제한적인 시간과 공간에서만이라도 그 나름대로의 효과가 있지 않겠는가?
인간의 지식이라는 것이 진리와 일치하지 않더라도 어떤 효과를 가지고 나름의 발전을 해 왔다면, 인공지능이 습득한 그 무언가도 나름대로의 효과를 가질 수 있지 않겠는가 말이다.(설령 인간이 보기에는 말도 안되거나 이해할 수 없다해도)


제목처럼, 인공지능의 한계가 뻔히도 보이지만, 그만큼 인간도 한계를 가지고 있다는 자기 반성의 기회를 주고 있다.
그리고 인공지능에 새로운 기대를 걸 수 있는 이유는, 인간이 스스로도 틀릴 수 있다는 겸허함 마음을 가진 토대에서만 가능한 일이 아닐까 싶다.

2019년 3월 21일 목요일

인간의 언어(Human Languages)

통상적으로 인간이 사용하는 언어를 자연언어 Natural Languages라고 부른다.
나와 같은 프로그래머는 프로그래밍 언어 Programming Languages와 구별하기 위한 이 표현을 그냥 편의상 받아들여서 사용하고 있다.

그런데 좀 우습지 않은가?
자연언어? Natural Languages?
마치 무언가 원초적인 힘을 가지고 있으며, 신성 불가침의 속성을 가지고 있다는 느낌을 주는 표현이 아닌가?


과거 자연언어 처리를 위한 방법으로 도입되었던 분석적 방법은 매우 제한적이거나 불완전한 면이 많았다.
어째서 이 방법에 문제가 많았던 것일까?
자연스럽게 인간의 언어를 이해하고 또 문장을 생성하기 위해서는 필요로 하는 문법이 너무나 많다고 할 수도 있다.
혹은 너무나 많은 예외 상황을 탓할 수도 있으며, 그나마도 어떤 예외를 적용할지 판단할 기준을 찾기가 너무 어렵다고도 할 수 있다.

사실은, 애초에 문법으로 배울 수 있는 언어는 아주 일부분이며, 단지 시작일 뿐이고, 수많은 예외 상황을 습득하는 것이 진짜 언어를 배우는 것이었기 때문일 것이다.

인간의 언어란, 아주 합리적이지도 않고, 이성적이지도 않다.
어쩌면 아주 오랜 시간을 거치면서 서로의 말이 제대로 전달될 수 있는 방법에 대해서 경험적으로 변형되어 온 것일지 모르겠다.

최근의 자연언어 처리는 빅데이터를 기반으로 하는 방법이 주로 사용되는 듯 하다.
그리고 이 방법의 문제도 많겠지만, 인간이 언어를 배우는 방법에 더 가까워 보인다.

그래야 일곱시 일곱분이 아닌 일곱시 칠분이라는 표현을 해석하고 생성할 수 있지 않겠는가.


잠깐 영어, 영어 공부에 대한 생각

한국인이 영어를 배우기 힘들어 하는 이유?
언어의 유사성이 매우 낮기 때문이 아닐까?
유사성이라함은 언어의 구조적인 유사성 뿐 아니라, 언어가 통용되는 사회 문화 철학적 유사성을 모두 함축하고 있다.

곰곰 생각해보면, 우리가 영어를 배우면서 종종 겪게되는 어려움은 이런거다.
"이러이러한 표현을 영어로 어떻게 말해야 하나요?"
그런데 간혹이긴 하지만, 이런 답변을 보게 된다.
"본토에서는 그런 식의 말을 쓰지 않는다. 그래도 굳이 영어로 표현하자면 ..."

이런 경우를 보면 정말 언어가 사고(思考)를 창조한다는 의미를 알게 된다.
언어로 표현할 수 없는(표현하지 않는) 것은 생각할 수도 없는 것이다.

유사성이 떨어지는 언어를 습득하기 위해서는 먼저 생각의 틀을 바꾸어야 한다.
한국인은 한국어로 생각을 하고 이걸 영어로 옮기려고 하지만, 이 경우에는 기존에 영어에서 쓰지 않던 새로운 표현 방식을 만들어 내야 한다.
그러니 외국인과의 대화에서 서로가 이해할 수 없어서 곤란해하는 경우가 속출하고 대화는 단절되고, 대화가 두려워지고, 관계는 서먹해지고...

원초적으로 따지면, 자신이 가지고 있던 모든 지식을 다 비우고, 영어가 사용되는 환경과 상황에서 생활하면서, 그곳에서 사용되는 표현 방식을 익히고 쓰면서 배워야 한다.
그런데 그게 가능하겠는가?
그렇다면 대안으로 외국인들이 사용하는 문장을 그냥 따라한다.
그 상황을 보면서 따라하고, 그 상황을 상상하면서 반복한다.
그렇게 한 문장 한 문장이 쌓이게 되면, 영어로 생각하는 영역과 한국어로 생각하는 영역이 다르다는 걸 알 수 있을 것이다.

애초에 이런 생각의 영역이 다를 거라는 생각은 없이, 언어가 단지 생각을 표현하는 수단이라고만 여겼기에 영어 공부는 틀렸던 거다.
언어는 생각을 표현하는 수단이기 이전에 생각을 만들어내는 도구다.
이 도구가 없다면 생각도 불가능하다.

한국어라는 도구가 만들어 내는 생각과, 영어라는 도구가 만들어 내는 생각은 아주 많이 다랐던 것이다.

2019년 2월 9일 토요일

malloc()의 구현 방법?

C 언어에서 흔하게 사용되는 메모리 할당 함수인 malloc()은 어떻게 구현되어 있을까?
함께 짝으로 사용되는 free()는 어떻게 구현되어 있을까?

흔하게 공룡책으로 불리우는 Operating System Concepts에서 배웠던 기억으로는 first-fit과 best-fit이라는 전략이 있다는... 어렴풋한 기억이 있을 뿐이다.
당시의 그 책은 매우 유용하기도 했지만, 다분히 교과서적이고 개념 위주였기에 실제 구현과는 거리가 좀 있었던 것으로 기억한다.

아무튼...
커다란 메모리 공간을 확보해서 힙으로 사용하도록 정한 후에, malloc()이라는 함수를 통해 메모리 할당 요청이 들어왔을 때, 그리고 메모리를 다 사용한 후에 free()라는 함수를 통해 메모리를 반납할 때, 이들을 어떤 식으로 처리하는 것이 좋을까?

우선은 잠시 생각해 본 아이디어를 끄적여 보겠다.

- 일단은 first-fit으로 구현.

- 메모리의 할당과 반납의 반복으로 힙은 여기 저기 조각난 상태가 될 것인데, 이 경우에 메모리 할당 요구가 발생하면, 비어있는 조각들 중에 크기가 맞는 것을 골라서 할당해 주어야 한다.
- 이를 위해 메모리 할당 테이블과 같은 별도의 정보를 관리하는 것도 하나의 방법이지만, 아주 작은 메모리의 할당이 많이 발생하면 관리를 위한 정보가 급격히 늘어나는 문제가 있다.
- 예전에 어떤 프로토콜 스택을 사용하면서 소스를 살펴보니, 이런 관리 정보를 힙 내부에 보관했던 기억이 있다. 즉, 사용하지 않은 힙의 메모리 내부에 비어있는 메모리 블럭들에 대한 정보를 저장하여 관리하는 것.
- 비어있는 메모리 블럭의 시작 부분에 블럭의 크기와 이전 블럭의 주소, 다음 블럭의 주소를 가지고 있는 구조. 최초의 힙은 블럭의 크기가 힙의 크기와 일치하고 이전 블럭의 주소와 다음 블럭의 주소는 null 값이 될 것이다. 전역 변수로 비어있는 첫번째 블럭의 주소만을 가지고 있으면 되고, 이 변수의 최초값은 힙의 시작 주소와 일치.
- 메모리 할당 요청이 들어오면 전역변수로 첫번째 빈 블럭부터 시작하여, 할당할수 있는 크기의 블럭이 나올 때까지 링크드 리스트처럼 연결된 블럭을 순회한다.
- 할당 가능한 블럭이 나오면, 할당 요청된 크기만큼을 할당하여 돌려주고, 블럭의 남은 조각을 새로운 블럭으로 리스트에 넣어주면 된다.

- 메모리 반납은 시작 주소만 있을 뿐, 크기는 없다. 위와같은 구조에서 해당 주소만이 주어졌을 때, 크기는 어떻게 알아내야 하는가?
- 할당된 메모리의 앞 부분에 할당된 블럭의 크기를 넣는다? --> 오케이.
- 그러면 비어있는 블럭의 맨 처음에도, 할당된 블럭의 맨 처음에도 그 블럭의 크기가 들어가는 셈.

- 메모리 얼라인먼트 문제?
- malloc()함수에서 할당 크기가 아니라, 메모리 단위와 개수로 할당을 받는 이유는 뭘까?

2019년 2월 7일 목요일

인공지능의 의미

인공지능은 한때, 흥미로운 SF의 소재였을 뿐 UFO나 외계인, 예티처럼 현실 세계에는 거의 아무런 영향을 끼치지 못하는 '꿈'의 기술이었다.

알파고의 출현은 가히 충격적이었다.
바둑이라는 게임에 한정된 것이었지만, 그 위력과 영향력에 대한 희망과 두려움은 전세계인에게 분명한 흔적을 남겼음에 틀림없다.
물론, 그 이후론 이렇다할 충격적인 인공지능의 출현이 보도되지 않아, 다시금 예전의 일상으로 돌아온 듯 하지만, 이제 우리의 생활이 큰 변화를 맞을 수 있다는 사실은 인정할 수 밖에 없어 보인다.

어쩌면 그렇게나 큰 충격은 다분히 우리가 생각하는 인공지능에 대한 무지에서 비롯된 것이 아닐까 싶다.
기계는 쉬지 않고 엄청난 속도로 학습하고 빠르게 진화할 수 있다고 생각하지만, 틀림없이 그건 아주 어려운 일이다.
마치 모든 분야에 속속들이 인공지능이 침투할것이라고 생각하겠지만, 그러기위해 필요한 자원(?)은 막대한 수준을 넘어 현재로썬 불가능할지도 모르는 수준일 것이다.

딥러닝, 빅데이터, 서칭 알고리즘, 데이터의 분류, 분산된 데이터의 적절한 결합, 이를 바탕으로 한 새로운 추론 등등...
각 기술의 작동 방식을 이해하기도 어렵지만, 이해한다 해도 어떤 데이터가 수집되어 있는지에 따라 결과는 큰 차이를 보일 것이기에, 인공지능 기술이 어떤 결과를 가져 올지는 예측하기 쉽지는 않다.

즉, 인공지능이 인간의 생활을 근본부터 바꾸리라는 희망이자 두려움에 대해서는 약간 냉정함을 가질 필요는 있어보인다.
상상처럼 '완벽한' 인공지능, 광범위한 영역에 단일한 메커니즘으로 운영되는 그런 인공지능은 여전히 '꿈'의 기술인 듯 하기 때문이다.


오히려, 인공지능에 대한 기대감과 시각을 바꿀 필요가 있어 보인다.

아마도 인공지능의 발전은 기대만큼 빠르지 못하고, 많은 자원을 필요로 하기에 중간중간 그 효용성에 대한 의문이 제기될 소지가 많다.
그럼에도 불구하고 꾸준히 발전시켜야할 분야라고 생각하는데, 그 이유는 이렇다.

수치나 논리로 설명을 하긴 어렵지만 직관적으로 이런 생각이 들곤 하는데,
가령 IQ가 80인 사람들이 제아무리 많이 모여도, 제아무리 많은 시간을 투자한다고 해도 아인슈타인의 상대성이론을 만들 수는 없겠다 싶은 생각.
물론 그 사람들이 모두 모여 덧셈 곱셈을 해 내는 속도는 이인슈타인보다 훨씬 빠르겠지만.

자칫, 타고난 지능에 대한 차별로 보일 수 있겠지만, 이건 오히려 그 반대의 상황이다.
즉, IQ가 80인 사람들이 아무리 노력하고 아무리 많이 모여도 이룰 수 없었던 수준에 도달하는 '방법'에 대한 얘기인 것이다.

과연 그런 방법이 존재할까?
만약 그 방법이 존재한다면, IQ 150인 사람이 IQ 200의 수준에 도달하는 방법도 찾을 수 있으며, 인간이 외계인 혹은 신의 수준에 도달하는 방법도 찾을 수 있을지 모른다.

인공지능은 바로 그 '방법'의 하나이다.
계산만 빠르게 하던 컴퓨터가 인간의 사고방식 수준에 도달하는 '방법'


사람은 개와 고양이를 구별할 수 있지만, 컴퓨터로는 그게 어려웠다고 한다.
사람들은 모두 언어를 구사하지만, 컴퓨터가 사람의 언어를 이해하는 건 아주 어려운 일이었다.
사실 그렇게 어려웠던 건, 사람들이 그런 능력을 공짜로 부여받았기에, 특별한 어려움 없이 습득한 능력이기에, 어떻게 그걸 하는 것인지 그들 자신도 그 '방법'을 모르고 있었던 것이다.

사실, 이제는 컴퓨터가 고양이와 개를 구별할 수 있다고 한다. 인간의 언어를 이해하고 명령대로 이행하고 번역이나 통역도 한다고 한다.
그게 단지 빅데이터를 통해 단순히 비교 검색하는 것으로 이루어지는, 컴퓨터의 인간 '흉내내기'에 불과한 것이 아닐까 생각하지만, 우리들 스스로도 우리가 어떻게 구별하고 어떻게 이해하고 있는지 모르는데, 컴퓨터의 그것을 비난할 수 있겠는가.

2018년 11월 16일 금요일

컴퓨터의 이상한 증상 - 고장의 과정?

글을 시작하기 전에 몇가지 핵심적인 단어를 포함하는, 간단한 문장의 결론부터 밝히고 시작을 하겠다.


* 오래된 컴퓨터에서 하드디스크에 이상이 발생하기 시작했다.
 - 하드디스크의 속도가 현저히 느려지기 시작한 것.
 - 이대로 두면 하드디스크의 데이터를 모두 잃게 되리라 생각했고
 - 새 하드디스크를 구입해서 새 OS를 설치했다. (Windows 7)
* 그리고 사용한지 2달 정도 되었다.
* 사용 중에 네트워크가 끊기는 현상이 가끔 발생하더니 빈도가 차츰 많아졌다.
* 이벤트 뷰어를 보니 네트워크 칩의 오류가 기록되어 이었다.
* 뿐만 아니라 디스크 콘트롤러에서도 오류가 발생하는 것을 확인했다.
* 디스크 포트를 변경하는 것으로 문제가 상당히 완화 되었다.
* 하지만 여전히 발생한다.
* 혹시나 Windows 7의 문제일까 의심했다.
 - 그리고 새 하드디스크의 성능을 시험하고, 맛이 가려던 하드디스크를 함께 시험했다.
 - 문제는 SATA 포트에 있었고 하드디스크에는 문제가 없었다.
* 예전의 하드디스크, 예전의 OS (Windows XP), 단지 SATA 포트만 바꾸어 옛날로 돌아갔다.
* 예전의 상황에서도 네트워크 끊어짐의 현상이 발생했다.
 - 주로 비디오와 네트워크를 동시에 사용하는 경우에 주로 발생했다.
 - 보드에 내장된 네트워크를 disable 시키고, 오래된 PCI 네트워크 카드를 설치했다.
* 또 다시 하드디스크의 속도가 느려졌다.
 - 보드에는 4개의 SATA 포트가 있다. 4개중 2개가 이상해졌고, 그 2개가 모두 Master에 해당하는 포트였다.
 - 될까 싶었지만 Slave 포트에 연결했는데, 다행히 잘 부팅했다.
* 오디오에서 이상한 현상이 나타났다.
 - 처음 오디오가 켜질 때에 스피커에서 딱~ 하는 큰 소리가 났다.
 - 마치 갑자기 쇼트된 것처럼.
* 얼마간 잘 쓰다가 다시 하드디스크의 속도가 느려졌다.
 - 마지막 남은 SATA 포트에 연결했다.
* 갑자기 블루스크린 발생
 - 며칠간의 간격으로 발생한 듯 하며, 간격이 점차 줄어든다는 느낌.
 - 주로 크롬브라우저에서 동영상(유튜브 혹은 기타 동영상)을 보는 중에 많이 발생했으며,
 - 마지막은 크롬 브라우저로 일반 사이트를 접속해서 사용하던 중, 그 사이트의 다른 페이지로 링크를 타고 넘어가는 순간... 한동안 응답이 없고, 브라우저 하단에는 "캐시를 기다리는 중"이라는 메시지가 보이다가 블루스크린이 떴다.
 - 이 현상이 발생할 때면, 하드디스크의 작동 LED는 들어와 있으나 메모리 덤프가 끝나지 않아 블루스크린 상태를 계속 유지하고 있으므로 강제로 파워를 꺼야만 했고,
 - 다시 새로 시작한 후에는 항상 Event Log에 디스크 콘트롤러 오류, 디스크 읽는 중 패리티 오류, 디스크 에러 등의 이벤트가 발생했었다고 나온다.


이상의 문제 현상들이 나타났을 때, 문제의 원인들을 찾아 보려고 노력했는데 아직까지도 정확한 원인은 찾을 수가 없었다.

1. 하드디스크의 노후
  - 이 부분은 원인이 아니었음이 밝혀졌다.
  - 새 디스크로 바꾼 후에도 문제가 타나났고, 노후된 하드 디스크로도 포트만 바꾸어서 정상이 되었다.

2. 파워의 부족
  - 위의 과정에서 중간 즈음에 이 문제를 의심해 보았다.
  - 본격적으로 의심한건 마지막 블루스크린이 뜨는 때 부터였다.
  - 블루 스크린이 발생하고 바로 다음날 파워를 뜯어서 분해해 보았지만 아무 문제도 찾지 못했다.
  - 사실 파워서플라이의 파워 부족을 어떻게 찾아내는지 그 방법도 모호했다.
  - 현대 내가 가지고 있는 멀티미터로는 12V/5V의 전원 핀에서 정상적인 전압이 나오는지 확인해 보는 것 뿐인데, 현재의 파워는 물론이고, 예전에 쓰다가 고장났다고 생각했던 파워도 전압 자체는 정상으로 나오고 있음을 확인했다.
  - 파워는 전압은 물론이고, 충분한 전류도 공급이 되어야 하지만, 전류를 측정하는 건 만만치 않은 작업이다.

3. 보드의 문제
 - 네트워크가 끊어지는 문제를 처음 본 다음부터 이 문제를 의심했다.
 - 육안으로 확인해 본 결과로는 부풀어오른 콘덴서 한개가 보였는데, 인터넷으로 구한 이 메인보드의 회로도를 통해서 확인해 보니 이 콘덴서는 전혀 상관이 없는 IEEE 1394에만 사용되는 콘덴서였다.
 - SATA 포트가 돌아가면서 문제를 일으켰으니 이 부분을 확인해 보았지만, 포트와 포트 주변의 회로는 매우 간단했으며 문제를 찾을 수 없었다.
 - SATA 포트가 연결되는 곳은 사우스 브릿지인 ICH7 칩인데, 이 칩의 주변에서도 특별한 문제점을 찾을 수 없었다.
 - 네트워크의 문제점이 발생하는 경우가 대부분 비디오와 함께 사용하는 경우였던 점을 생각하면 노스브릿지도 생각해 볼 수 있다. 하지만 이 칩의 주변에도 문제는 없어 보였다.
 - 결국 문제는 있지만 원인은 발견할 수 없다는 것.
 - 하지만 여기에서 한가지 의심스러운 정황은 IEEE 1394와 관련된 콘덴서가 부풀은 점.
 - 사용하지도 않았던 저 콘덴서는 왜 부풀은 것일까? 내가 구한 회로도가 잘못된 것이고, 실제로는 영향이 있는게 아닐까? 아니면 저 콘덴서를 부풀게 만든 어떤 원인이 다른 부분에까지 영향을 끼쳐서 문제가 된 건 아닐까?


지금으로썬 할 수 있는 방법이,
1. IEEE 1394에서 사용된다고 생각했던 콘덴서의 교체.
2. Video Card의 교체
3. 파워서플라이 교체
의 정도가 아닐까 싶다.

아니면... 이제는 놔줘야 하는걸까.

CPU : Intel Pentium D 920 Presler
Memory : DDR2 6400 1G x 4 (Dual Channel)
Main B'd : Gigabyte (GA-8i945PMF)
Video Card : NVidia GeForce 9500GT 512M
HDD : Hitach 1TB (HDS721010CLA332)

2018년 9월 16일 일요일

지구 종말에 대비해 소수를 선발하는 알고리즘?

곧 추석이 다가온다고 그러는지, 주말에 공중파 방송에서 외화들을 방영했다.
대단한 신작은 아니고 개봉한지 한참을 지난 영화지만...딥 임팩트라는 재난 영화였다.

지구로 돌진하는 소행성을 맞이하여 고군분투...그러나 역부족... 극소수만이 방주로 피신하고 대다수는 포기해야만 하는 암울한 종말.

이 영화에서는 무작위 혹은 인류에게 꼭 필요한 인재들을 선발하여 피신시킨다는 대목이 나오는데, 비슷한 재난 영화로 2012에서는 거금의 기부를 한 재벌들과 소수의 꼭 필요한 인재들을 선발해서 방주에 승선하는 대목이 나온다.


과연, 정말로 이런 상황이 닥친다면, 어떤 사람을 어떤 식으로 선발해야 하는 걸까 하는 고민을 해 보았다.

좀 극단적인 경우를 가정해서, 지구가 아닌 다른 행성으로의 이주를 하는 경우라면?

아주 대략적으로만 알고 있고, 세세한 부분은 알지 못하며, 어떤 상황이 닥칠지 예측이 불가능한 그런 곳에서 인류가 충분히 생존하기 위해서는 무엇이 필요할까?


다윈의 진화론을 인정한다면, 인류 진화의 방향은 사방 팔방 모든 방향으로 뻗쳐 나간다는 것을 인정해야 한다.
인간은 큰 키와 작은 키, 큰 몸집과 작은 몸집, 큰 용량의 뇌와 작은 용량의 뇌, 어떤 것도 치우치지 않는다.
진화의 방향은 "다양함"에 있다.
그 다양함은 전체 인간 종족의 입장에서는 환경에 대한 적응의 확률을 높이기 때문이다.


미지의 세계로의 이주를 위해서는, 가능한 다양한 분포를 이루도록 선발해야 할 필요가 있다.
어떤 요소를 대상으로 할 것인가가 실제로는 매우 중요한 요소가 되겠지만, 이것이 일단 정해졌다고 가정을 하자.
아마도 특정 요소를 기준으로 사람들의 분포를 모두 조사하면 가우시안 분포를 보일 것이다.
하지만, 이건 지구라는 환경에 적응한 결과일 뿐이다. 새로운 세상에서는 중심 축이 이동할 가능성은 얼마든지 있으며 이 또한 예측 불가능하다.


자, N개의 평가 요소가 주어졌다.
선발 대상으로 주어진 사람은 모두 M이라고 하자.

이제 M명의 사람들에 대해서 N개의 평가 요소에 대한 일종의 점수가 모두 매겨져 있다면,
과연 어떤 방법으로 선발을 하는 것이 가장 고른 분포를 이루게 할 것인지,
또 대단히 큰 수의 M명에 대해서 어떻게 효율적으로 빠르게 이 계산을 끝낼 수 있을까?
(단, 각 평가 요소는 서로에 대해 독립적이라고 가정한다.)

2018년 8월 23일 목요일

카카오톡 친구 차단에 대한 진실?

카카오톡을 아주 최근에야 설치하게 되었다.(바로 이틀 전이다.)

지금까지 카카오톡을 설치하지 않았던 이유는,
 - 주소록에 있는 사람들이 자동으로 친구로 등록된다는 문제.
 - 나의 근황을 알리고 싶지 않은 사람도 있고, 그런 사람들에게 관심을 일으키고 싶지도 않었다.
 - 개인적으로 사람들과의 교류는 적정한 거리가 필요하다는 평소의 생각도 한몫. 너무나 쉬운 연결 통로는 나의 개인적인 시간과 여유를 침범할 것이 자명하기 때문이었다.


그럼에도 불구하고 카카오톡을 설치한 이유는,
 - 몇몇이 함께 만나는 모임에서 약속 시간과 장소를 정하기 위해서 누군가 문자메시지를 모두에게 중복해서 발송해야 하고, 또 다른 사람의 의견이나 사정을 나머지 인원에게 재전송해야 하는 어려움을 겪고 있었다. 그래서 모두가 한번에 모여 얘기할 단톡방이나 채팅 공간이 필요했다.
 - 처음에는 녹색창 회사의 밴드를 쓰려 했는데, 누군가가 안쓴다고 해서, 결국은 모두가 쓴다는(나를 제외하고) 카카오톡을 선택.
 - 위에서 내가 우려했던 문제들은 적절한 설정을 통해서 방지할 수 있다는 친구의 설명을 들었다.



인터넷에서 검색을 해 보니, 실제로 카카오톡의 설정에서 "자동 친구 추가"를 해제함으로써 내가 우려했던 문제들이 해결된다는 글들이 여럿 보였다.

그리고, 용기를 내어 카카오톡을 설치하고, 본인 인증도 하고, "자동 친구 추구"나 "친구 추천"등의 설정을 모두 막아놓고 일단락.

모임의 친구들은 다음날 추가하려고 생각하고 잠이 들었다.



다음 날, 가족들이 만든 단톡방을 틍해서 누이가 톡을 보내왔다. 드디어 가입했구나, 축하한다, 어서 와라.... 허걱

인사도 뒤로 미루고, 대체 어떻게 알게 된건지 추궁하자 아버지의 스맛폰에 내가 친구로 올라왔다는 것. 그걸 보고 누이도 확인하고 톡을 보내왔다는 것.

대체 무슨일이 벌어진걸까?

잠시후에는 더 놀라운 일들이 벌어졌는데, 내 주소록에 있는 사람들 중 대다수가 친구로 올라왔다는 것. 나는 황급하게 가족과 몇몇의 친구들을 제외하고는 모든 친구들을 일일이 차단했고, 프로파일 비공개까지 설정을 해 줘야 했다.



가족들 모두 톡을 나누는 동안 카카오톡의 고객센터 항목에서 문의하기에 장문의 글을 올렸다.
그리고 다음날에야 답변이 올라왔다.


내가 올린 질문의 요지는, "나는 자동으로 친구가 추가되는 것을 원하지 않아서 모든 설정에 이와 관련된 것들을 모두 해제해 두었다. 그런데 원치 않는 상대방에게는 내가 친구로 보여졌다. 대체 무엇이 잘못된 것인가? 내가 설정을 잘 못한 것이 있는가?"

그리고 답변의 요지는, "카카오톡은 주소록에 저장된 번호의 사람이 카카오톡에 가입하면 친구로 등록되는 것이 기본 메커니즘이다. 따라서 니가 설정을 어떻게 하든지, 누군가 주소록에 너를 등록해 두었다면 그 사람에겐 니가 친구로 나타난다."라는 거....ㅆㅂ



그리고 더더욱 반가운(?) 사실은, 일단 상대방에게 친구로 나타나면, 니가 뭘 어떻게 하든지 상대방의 친국 목록에서 뺄 수 있는 방법은 없다는 거... 푸하하핳ㅎㅎㅎㅎㅎㅎㅎㅎㅎ


모두가 이런 사실을 알고 있는걸까?
아마 사용하고 있는 사람이라면 누구나 다 알고 있을 듯도 하지만,
아직 사용하지 않고 있는 사람이라면, 인터넷에 떠도는 그런 낭설을 믿고 안심해서 가입했다가 낭패를 보는 일은 없었으면 한다.

카카오가 프라이버시라는 단어의 의미를 알고는 있는 걸까?