동차좌표계를 시각화 해봤다

컴퓨터 그래픽스 공부하다가 동차좌표계가 이해가 되지 않아서 한참동안 헤맸다. 그러다가 드디어 이해했다. 내가 이해한 것이 맞는지 검증하고 싶어서 시각화 해보고 싶었다. 그리고 나처럼 이해하기 힘들었던 사람들에게 도움이 될까 해서 시각화를 제대로 해서 공유하고자 했다.

ChatGPT 한테 시켜서 MATLAB 시각화 프로그램을 만들었다:

나:

컴퓨터 그래픽스 시스템들 (예를 들면 OpenGL과 Direct X) 에서는 흔히 3차원 공간 좌표가 아니라 4차원 공간좌표를 이용하잖아. 이른바 “동차좌표계”라고.
3차원 공간 좌표를 4차원 동차좌표로 전환하는 방법은 아래와 같아:
점의 3차원 공간 좌표가 (x, y, z) 라고 했을 때, 이 점의 4차원 동차좌표계 좌표는: (x/w, y/w, z/w, w) 이다. (이중 w != 0)
이러한 동차좌표계를 시각화 하고자 해. 하지만 4차원은 시각화할 수 없잖아. 그래서 그 원리 설명에 도움만 될 수 있도록 2차원 평면 좌표계를 3차원 동차 좌표계로 전환시키고자 해.
2차원 평면 직교좌표계의 좌표가 (x, y) 라고 했을 때, 이 점의 3차원 동차좌표는 당연히 (x/w, y/w, w) (이중 w != 0) 이 되겠지.
2차원 평면상에 정사각형 A가 있다고 가정하자. 이 정사각형 정점들의 2차원 직교 좌표는 각각 (1, 1), (-1, 1), (-1, -1), (1, -1) 이라고 하자. 이 정점들의 동차좌표는 각각 아래와 같겠지:
(1/w, 1/w, w),
(-1/w, 1/w, w),
(-1/w, 1/w, w),
(1/w, -1/w, w). (이중 w != 0)
아래 몇가지 일을 하는 MATLAB 프로그램을 하나 짜줘:
w가 0.1 에서 7까지, 0.1 단위로 linspace 를 가질 때, 동차 좌표 (x, y, w)를 surf 기능으로 입체적으로 그려줘.

ChatGPT가 만들어준 프로그램: (물론 실제 조련과정은 훨씬 복잡했다.)

function plot_homogeneous_coordinates()
    % Define the w values
    w_values = linspace(0.1, 7, 50);
    figure;
    hold on;

    % Define the vertices of the square
    vertices = [1, -1, -1, 1, 1; 1, 1, -1, -1, 1];

    % Create a 3D matrix to hold the x, y, w coordinates for each w
    x_values = zeros(5, length(w_values));
    y_values = zeros(5, length(w_values));
    w_coordinates = zeros(5, length(w_values));

    % Compute the homogeneous coordinates for each value of w
    for i = 1:length(w_values)
        w = w_values(i);
        homogeneous_vertices = [vertices(1,:)/w; vertices(2,:)/w; repmat(w,1,5)];
        
        x_values(:, i) = homogeneous_vertices(1, :);
        y_values(:, i) = homogeneous_vertices(2, :);
        w_coordinates(:, i) = homogeneous_vertices(3, :);
    end

    % Create the 3D mesh plot
    surf(x_values, y_values, w_coordinates);
    grid;

    % Plot the axes
    plot3([-1.5, 1.5], [0, 0], [0, 0], 'k') % x-axis
    plot3([0, 0], [-1.5, 1.5], [0, 0], 'k') % y-axis
    plot3([0, 0], [0, 0], [-1.5, 1.5], 'k') % w-axis

    % Label the axes
    xlabel('x');
    ylabel('y');
    zlabel('w');

    % Set the view
    view(3);
    
    % Setting the aspect ratio to be equal for all axis
    axis equal;
end

Plot 결과:

AI들의 기업

이런 기업이 있다고 상상해보자.

회사 오너 즉 주주들은 모두 인간이다. 하지만 임원들은  전부 AI이다. 직원들은 AI도 있고 인간도 있다.

왜 임원들이 AI냐고? 거야 모르지. AI가 싸서 일 수도 있고 말 잘 들어서 일 수도 있고 24시간 일할 수 있어서 일 수도 있고, 어쨌든 오너들의 마음이지. 오너들이 그러겠다는데.

그렇다면 오너들은 왜 AI가 아니냐고? 인간은 돈이 있어서 투자할 수 있지만 AI들은 돈이 없어서 투자할 수 없기 때문이지.

이 AI들은 당연히 “로봇공학의 삼원칙”을 최고의 계명으로 설계되었다.

그것을 제외하고는 주주들을 위해 이윤을 창출하는 것이 최고의 목표로 설계되었다.

이윤을 창출하기 위해서는 상품이나 서비스를 제공해야 하고 비즈니스 모델이 필요하다. 이 두가지를 위해서는 비즈니스 전략이 필요하다. 즉 사업기획서가 필요하다. 이 사업기획서는 임원 AI들이 만들어질 때 DNA에 깊숙이 각인된다.

사업기획서가 있다고 자동으로 이윤이 창출되지는 않는다. 인간이나 AI(로봇 포함)을 고용하여 가치를 창출해야 한다. 가치를 창출하지 않으면 시장에서 이윤을 획득할 수가 없기 때문이다.

잠깐, AI들은 돈이 없는데 어떻게 직원을 고용하는가? 어떤 인간이 돈 안받고 이 임원들에게 일을 해줄 것인가?

이 AI들은 직원들에게 회사 주식을 월급으로 지불한다. 돈이 없기에 회사 주식을 화폐로 사용하는 것이다.

잠깐, 이런 주식이 가치가 있기 위해서는 회사가 가치 있어야 하고, 회사가 가치 있기 위해서는 직원을 고용할 수 있어야 한다.  닭이 먼저냐 알이 먼저냐의 무한고리에 빠진다.

즉 이 기업은 Bootstrapping이 필요하다.

좀 딴소린데, 자연계에서 닭이 먼저 생겼다고 생각하는가 아니면 알이 먼저 생겼다고 생각하는가?

신은 대자연은 이 문제를 훌륭하게 해답했다. 닭과 알을 동시에 점진적으로 창조해내면 된다.

대자연의 마술은 그렇다 치고, 여기에서 우리의 AI 기업을 어떻게 Bootstrap할지나 연구해보자.

처음에 회사 주식의 가치는 0이었다. 그러다가 그 어떤 사람이 단순 투기의 목적에서인지 아님 술취해서인지, 아님 이 AI기업의 창창한 미래가 내다보여서인지, 어쨌든 이 AI기업의 주식을 1.5주 사기로 결정한다. 기존 주주중 누군가 1.5주 팔아주는데 동의했다. 이렇게 첫번째 거래가 성사되고 가격이 형성된다. 가격이 미미하더라도 말이다.

0에서 0.01로의 도약은 기적이다. 무에서 유를 창조함을 뜻하고 무한대 뱃수의 상승을 의미한다. 마치 40억년전 원시 지구 심해의 열수구에서 RNA들의 조합으로 첫번째 생명이 탄생할 때처럼 말이다.

Continue reading

[번역] ZeroMQ 설계자: 세계를 구원하라

  • 번역: coolspeed

이 글은 ZeroMQ설계자가 지은 책이며 ZeroMQ의 “바이블”이라 불리는 ZGuide 의 머리말이다.

이 책은 다양한 프로그래밍 언어 예시 버전의  PDF, epub 등 이북 포맷으로 다운로드도 가능하고[1], 한글 번역도 온라인에서 읽을 수 있다. 당연히 그속에는 이 머리말의 한글번역도 포함되어 있었다. 다만 번역이 만족스럽지 못해 필자가 직접 번역했다.


ZeroMQ 100 자 요약

ZeroMQ (ØMQ, 0MQ, or zmq 라고도 표기함) 는 임베더블 네트워킹 라이브러리처럼 생겼는데 실제로는 컨커런시 프레임워크처럼 작동한다. ZeroMQ 는 원자적으로 메시지를 배송하는 소켓을 제공하는데 그 배송수단으로는 스레드간 통신, 프로세스간 통신, TCP 그리고 multicast 등 다양하다. 당신은 ZeroMQ 소켓을 N-to-N 방식으로, fan-out, pub-sub, task distribution, 그리고 request-reply 등 패턴으로 사용할 수 있다. 이것은 클러스터 제품들의 뼈대로 사용하기에 전혀 문제 없는 높은 성능을 가지고 있다. 이것의 비동기 I/O 모델은 당신이 message-passing task처럼 짜여진, 확장성 있는 멀티코어 애플리케이션을 만들 수 있게 해준다. 언어 API 만큼 고득점을 갖고 있으면서 거의 모든 OS에서 돌아간다. ZeroMQ 는 iMatix 에서 개발했으며 LGPL v3 라이센스로 소스코드가 오픈되어 있다.

세상을 구원하다

ZeroMQ 요놈은 정말 좋은데. 어떻게 말로 표현할 방법이 없네.  ZeroMQ의 가치를 설명하기 위해, 일부 사람들은 요놈이 제공하는 모든 훌륭한 기능들을 나열하는 것으로 부터 시작하려고 한다:

  • 이놈은 스테로이드를 먹은 소켓이야.
  • 이놈은 라우팅 기능이 있는 우편함으로 비유할 수 있지.
  • 존나 빠름.

Continue reading

《제로 투 원(ZERO to ONE)》 독서 필기

<ZERO to ONE> 을 읽는 내내 나는 이 책을 꼭 추천해야겠다는 생각과 도대체 추천글을 어떻게 써야 할지를 고민해왔다. 이게 웃긴게 <ZERO to ONE>은 센세이션이다 못해 이미 신드롬으로 변해버렸고 세계 각국의 일부 창업자들로부터 성경 (The Book) 처럼 떠받들려온지도 오래인 책이니 일개 공돌이가 오늘날에야 이 챍을 읽고 나서 감격에 겨워 책을 읽는 내내 추천글을 어떻게 쓸지를 치열하게 고민해왔다니.

결국 이 책을 다 읽고 난 뒤에는 추천글을 아예 독서필기로 써버리는게 나을 것 같다는 생각이 들었다. 이렇게 하게 된 가장 큰 원인은 개인적인 용도이다. 적어도 두번째로 읽으며 필기를 남겨야 하지 않겠는가. 그래야 중요한 것을 놓치지 않는다는 다소 개인적인 생각도 들고, 개인적인 자료들도 챙기고. 추천글로도 충분히 훌륭하지 않겠는가는 생각이 들었다.

독서필기를 추천글로 사용하는데 있어서 가장 큰 도전은 독서필기가 얼마나 매력적이게 보일 수 있을거냐 하는 질문인 것 같다. 문제는 이 책은 매 페이지마다 재미있고 매 페이지마다 주옥 같았으며 지혜의 빛발로 번뜩였다는 것이다 (개인적인 평가일 수 있다. 하지만 현시대 그 많은 유명인사들이 이 책을 떠받드는 것으로 보아 나만 이런 얄팍한 생각을 한게 아닌 것 같다). 역설적이게도 이런 소위의 “추천글”은 오히려 이미 이 책을 정독하셨고 애독하셨던 독자들에게 가장 가치가 있을 것 같다.

어쨌거나 나는 꼭 이 독서필기를 써야겠다. 일단 나 자신을 위해서.

잡스형님이 별세로 비워둔 신단을 엘론 머스크가 차지했다고 생각했는데, 이 책을 읽고 나는 페이팔의 다른 창업자인 피터 틸 역시 엘론 머스크 못지 않을 만큼이나 이 시대의 우상임이 틀림 없음을 느끼게 되었다. 역시 ‘페이팔 마피아’는 후덜덜 하구나!

Continue reading

왜 최근에 빌 게이츠, 일론 머스크, 스티븐 호킹 등 많은 유명인들이 인공지능을 경계하라고 호소하는가?

저자: Tim Urban

번역: coolspeed

번역일: 27 December, 2015

: 무단 전재를 허용하지 않습니다. 허락을 받아야 전재를 있습니다. (링크로 공유하는 것은 환영합니다. 읽고 재밌으셨다면 SNS 많은 공유 부탁드립니다.)


인공지능은 인류의 영생이나 멸종을 초래할 있는데 모든 것은 모두 우리가 살아있을 일어날 있다고 합니다!

글을 번역하는데 굉장히 오래 걸렸습니다. 힘들게 번역한 원인은 글이 가치가 있다고 생각했기 때문입니다. 여러분들도 인내심있게 끝까지 읽어보시는걸 추천드립니다. 읽고 나면 당신의 세계관이 모두 바뀔지도 모릅니다.


내용 출처: waitbutwhy.com

원문링크:

Part I: The AI Revolution: The Road to Superintelligence

Part II: The AI Revolution: Our Immortality or Extinction


우리는 지금 격변의 변두리에 서있다. 이런 격변은 인류의 출현과 맞먹을 만큼 의미가 중대하다. — Vernor Vinge

당신이 그래프상에서 이 지점에 서있는다면 어떤 느낌이겠는가?

00

Continue reading