[카테고리:] 학술

  • 청각정보 저장하기

    하는김에 청각도 저장해 보자.

    청각은 꽤 쉽다. 현재 인간이 사용하는 MP3파일 포맷의 경우, 128kBPS에 44100Hz로 샘플링하는 경우 1분에 1MB정도 나온다. 비트레이트를 올려서 3배 정도 좋게 만든다 해도 1분에 3MB다. CD의 경우 1분에 10MB라고 한다. 그럭저럭 깨끗하게 들을만한 CD음질로 샘플링해서 평생을 기록한다면?

    하루는 24*60분 = 1440분이다. 1년은 525600분이다. 평생을 100년이라고 치면 52560000분이다. 1분에 10MB니까 525600000MB가 필요하다. (너무 간단한가…-_-)

    이걸 우리가 아는 단위로 바꾸면 513281.25기가바이트가 나온다. 테라바이트로는 501 테라바이트.

    지금 1테라바이트가 10만원대니까, 대략 5천만원정도면 평생 듣는 모든 소리를 저장할 수 있다.

    흠…

    CD는 1장에 77분이 들어간다. 1년을 기록하는데는 CD가 6825장이 필요하다. 평생을 기록하는데는 대략 70만장 정도의 CD가 필요하다고 추산할 수 있다. CD의 두께가 1.2mm라고 하는데, 그럼 이걸 일렬로 쌓으면 819미터 정도. (근사 계산을 많이 해서 수십미터 정도는 틀릴 수 있다.) 하드디스크 500개, 또는 CD 70만장. 그것이 당신의 일생동안 듣는 모든 소리이다.

    CD보다 더 좋은 음질을 바라는가? 요즘 최신 유행인 7.1채널로 녹음한다고 하면, 비용과 용량이 약 4배 늘어나면 된다. (CD는 2채널이고, 7.1채널은 8개의 채널을 녹음하니까. ) 그래도 2억이다. 시각정보 저장하는데 들어간 비용 (7천억원~5조원)과 비교하면 껌값.

  • 후각정보 저장하기

    과학계의 전설에 따르면, 인간이 구별할 수 있는 냄새의 종류는 약 375가지라고 한다.


    http://www.sciencetimes.co.kr/article.do?atidx=0000030110

    그럼, 1바이트로 표현할 수 있는 정보의 가짓수가 256개니까, 2바이트면 인간이 구별할 수 있는 냄새를 충분히 표현할 수 있다. (256*256 > 375)

    냄새의 경우, 시각과는 다르게 1초당 1회의 기록 정도로 충분할 것이다. 인간이 살아있는 한 숨을 쉬어야 할 것이고, 대략 1초에 1회 숨을 쉰다면 냄새 신호가 생성되는 주기도 대략 1초에 1회로 볼 수 있기 때문이다. 즉, 1초당 2바이트의 정보를 기록해야 한다. 전에 계산했듯이, 1년은 31536000초에 해당한다. 여기에 2를 곱하면 63072000바이트가 된다. 이것을 우리가 잘 아는 단위로 바꾸면 약 60메가바이트 정도 된다. 확실히 시각정보보다 싸다. 1년치가 겨우 60메가바이트라니. (시각의 경우, 1초당 17기가바이트…압축 해도 1기가바이트는 족히 넘을 것이다.)

    아무튼, 그럼 평생을 100년이라고 쳐도 6기가바이트면 충분하다.

    후각은 더이상 계산할 필요가 없다. 인간이 평생 맡게 되는 냄새를 전부 저장하는데 6기가바이트라니. “시간”에 대한 인덱스를 따로 붙인다면 평생의 초 수를 셀 수 있는 용량이 추가적으로 필요한데, 이것은 3메가바이트로 충분하다. 6기가바이트에서 조금 남은 자투리로 OK

    싸게 갑시다…ㅋ

    자. 추가로 하나 더 해보자. 인간의 코에는 후각세포가 약 500만개가 있다고 한다. 그럼, 이 500만개의 신호를 전부 샘플링해서 저장한다면? 세포 1개당의 샘플링은 2바이트를 이용하자. 그럼, 위에 계산한 값에 500만을 곱하면 간단히 끝난다. 대략 3천만 기가바이트정도 필요하다는 뜻. 그럼 대략 3만 테라바이트정도 되고, 1테라바이트의 하드디스크가 10만원이라는 설정을 감안한다면, 약 30억원정도의 예산이 필요하다. 갑자기 이렇게 하니까 청각보다 비싼 감각이 되었다. (하지만 500만개의 세포를 모두 쓰는건 아니니까…인식한 냄새 종류에 따라 구별하는 처음의 아이디어가 더 좋을 것 같다. 싸니까…)

  • 시각정보 저장하기

    오늘은 산수 공부를 해 보자.

    인간의 눈은 약 1억 화소 정도에 해당한다고 알려져 있다.


    http://withrobot.tistory.com/tag/%ED%99%94%EC%86%8C%EC%88%98

    그렇다면, 인간이 평생동안 살면서 얻는 모든 시각정보를 저장한다면 하드디스크는 얼마나 필요할까?

    인간의 망막에 있는 시각세포들 대부분이 흑백 영상을 처리하고, 3백만 화소 정도가 컬러를 처리한다. 하지만 흑백이라 하더라도 인간의 시각세포의 민감도를 고려해서, 대략 1억화소 전부가 컬러라고 가정하자.

    1화소당 필요한 정보의 양은 R, G, B 각각 1 바이트씩 사용한다면 3바이트가 된다. 이것은 우리가 컴퓨터 영상에서 트루컬러라고 부르는 24비트 이미지에 해당한다. 대략 1600만 컬러의 구별을 가능하게 한다.

    1억화소이므로, 전체 화소를 처리하는데는 3억바이트가 필요하다. 이것은 1프레임에 해당한다. 눈은 2개이므로 두배로 하자. 1프레임당 6억화소다. 내가 링크한 블로그를 참고하면, 초당 최소한 20프레임 이상으로 처리되고 있다고 한다. 인간의 눈은 30프레임 이상의 영상은 잔상 효과로 인식하지 못한다고 알려져 있으므로, 적당히 초당 30프레임을 처리한다고 하자. 그럼 1초당 저장해야 하는 동영상의 용량은 180억 바이트가 된다. (그래봐야 17기가바이트 정도.)

    숫자 단위가 커지므로 17기가바이트를 기준으로 해서 계산을 이어가자. 1년은 31536000초이다. 따라서 1년간 536112000기가 바이트가 필요하다. (숫자가 정확해진건 계산기에서 붙여넣었기 때문이다)

    이 용량은 다시 523547테라바이트에 해당한다. 1테라바이트짜리 하드디스크가 최근 13만원정도 하니까, 요즘 시세로 1년치 영상을 저장하려면 약 680억원 정도의 예산이 필요하다.

    인간의 수명을 80년이라고 가정하면 41883750테라바이트가 필요하다. 여기에 필요한 예산은 5조 4천억원.

    물론 저장장치 용량은 늘어나고 가격은 싸지니까 이보다는 적게 들어갈 수 있다. 대략 5조원 정도라고 하자.

    이것이 만약 10년전, 즉 99년이었다면 예산은 100배정도 올라간다. 그땐 100GB이하의 하드디스크가 대세였으니까.

    그렇다면, 10년쯤 후에는 100TB하드디스크가 대중화 된다면?

    일단 10년치를 저장하는데 6800억원이 필요하고, 다시 그 다음 10년치 저장하는데는 70억원, 그리고 그 다음 10년치는 7000만원…

    이런 식의 등비급수라면 80년치 전부를 저장하는데 7000억원이면 충분하다. 지금 모든 하드디스크를 사둘 필요 없이 가득 찰 때마다 새로 사면 된다.

    잠깐 딴 생각으로, 1테라바이트를 채우는데는 얼마나 걸릴까? 1초에 17기가바이트니까, 1024/17=60초. 즉, 1분에 1개씩 사야 한다. 이 하드디스크를 보관하는 것도 문제다. 물론 기술이 계속 개발되면 같은 크기에 100배 이상 늘어난 용량을 저장할 수도 있을 것이다. (그 전에 물리적 한계에 도달해서 크기를 줄이지 못할수도 있지만…)

    참고로, 초당 17기가바이트를 전송하려면 어떻게 해야 할까? 지금 나오는 가장 빠른 하드디스크가 SATA2방식일텐데, 대략 초당 100MB를 전송하는 것 같다. 그렇다면 1700MB를 1초에 전송해야 하니까, 이론적으로는 SATA2방식의 하드디스크 17개를 RAID 0으로 묶으면 된다. (말이 되는지 안되는지는 모르겠다.)

    음…

    추가.

    자꾸 계산하다보니까, 1조~5조원에 달하는 예산이 다른 감각에 비해서 수천배나 비싸서 감당할 수 없는 지경에 이르렀다. 일단 화소 수를 줄이자. 1억화소를 1천만화소 정도로 줄이면, 예산은 천억원~5천억원대가 된다. 여기에 초당 30프레임을 초당 20프레임으로 줄이자. 그럼 예산은 7백억원~3천억원대가 된다. 여기에 압축을 써 보자.


    http://mediaexperiences.tistory.com/entry/%EB%86%92%EC%9D%80-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%95%95%EC%B6%95%EB%A5%A0%EB%A1%9C-MPEG-%EB%8C%80%EC%B2%B4%ED%95%98%EB%8A%94-H264


    여기를 참고하면, MPEG-2가 2시간 저장하는데 20GB가 필요하고, h.264코덱은 이보다 2배의 압축률이 나온다고 한다. 즉, 1시간 저장하는데 5GB면 된다는 뜻이다. 즉, 이것은 초당 1.4MB를 뜻한다. 1초당 17기가바이트에 비해 1만분의 1로 줄어든 크기이다. 3천억원의 1만분의 1은 3천만원이다. 갑자기 너무 많이 싸졌다. 화소 수를 다시 1억화소로 올리자. 그럼 3억원이 된다. 동영상 압축을 하면 80년치 저장하는데 3억원이면 대충 된다. (풀프레임으로 해도 5억원…아무리 많아도 10억은 안 넘는다.)

  • 푸리에 변환으로 곱셈 계산하기


    http://en.wikipedia.org/wiki/Multiplication_algorithm#Fourier_transform_methods

    이런게 있다.

    번역을 해 보자.

    Strassen의 아이디어다. (1968년)

    가장 큰 정수 w를 고른다. w는 오버플로우는 내지 않도록 한다.

    곱해야 할 두 수를, w비트인 m개의 그룹으로 나눈다.




    그럼, 이제 이게 된다.



    m보다 큰 i, j에 대해서 a와 b를 0으로 놓고, c는 a와 b의 convolution으로 놓는다.

    convolution 정리에 따르면,

    1.a와 b에 대해서 빠른 푸리에 변환을 한다.

    2.두 계산 결과를 각각의 항 별로 곱한다

    3.푸리에 역 변환을 계산한다

    4.2^w보다 큰 c_k를 c_{k+1}에 더한다

    이 계산 방법은 2007년 Furer에 의해 조금 개선되어서, 현재까지는 가장 빠른 곱셈법으로 알려져 있다.

    Strassen의 원래 아이디어의 계산 복잡도는 대략 $\theta(n*ln(n)*ln(ln(n)))$정도이고, Furer 방법의 계산 복잡도는 $\theta(n*ln(n)*2^{(\theta(ln(n))})$ 정도라고 한다.

    봐도 모르겠다…

    나중에 논문 찾아서 읽어봐야지.

    mult.pdf에 액세스하려면 클릭하세요.



    Furer의 논문이다. Strassen 알고리즘의 논문은 독일어 저널에 독일어 제목으로 실려 있는 것 같아서…보고싶지 않다…



  • 운명

    친구가 나에게 “만약 애인이 있는데, 다른 사람이 자신의 운명적인 만남이라는 느낌이 든다면 어떤 선택을 할거냐?”라고 물어보았다.

    그런 고민이라면 애인이 생긴 다음에 하는게 원칙이지만…

    난 운명이나 신, 또는 유전자에 의한 필연적인 결과라든가 하는것을 신경쓰지 않는다.

    미래가 정해져 있다면 내가 어떤식으로 선택하든 그것은 “정해진 결과”이다. 즉, 나는 내 맘대로 선택했지만 그것은 이미 정해진 결과였다는 것이다.

    미래가 정해져있지 않다면 내가 무언가를 선택하였다면 그건 “내가 만들어낸 결과”이다.

    나는 내 맘대로 선택했지만 그것을 부르는 이름이 달라질 뿐이다. 본질은 결국 내 맘대로 선택했다는 것 뿐.

    그런 고민은 역시 애인이 생긴 다음에…

  • 공감

    2008년 2월 6일. 휴대폰 메모.

    난 너의 행동을 이해할 수가 없어

    그럼 넌 자신의 행동은 스스로 이해할 수 있다는 거야?

    인간은 자신의 행동조차도 스스로 이해하지 못해

    나는 할 수 있어

    거짓말이야, 그건 착각에 불과해. 자기 자신을 이해한다면 자신을 속여가면서까지 살아야 하는 걸까?

    자신을 이해하는 것은 타인을 이해하는 것 만큼이나 어려운 일이야. 대체 인간을 이해한다는 것은 무슨뜻일까?

    이해한다는 것은 그사람의 실존을 부정하지 않는다는 거라고 생각해

    하지만 이해하지 못했다고 실존을 부정하는건 아니잖아?

    설명이 부족했군. 만약 내가 어떤 인간의 행동을 이해되지 않는다고 하면 그 사람의 행동은 내게 아무런 의미가 없겠지. 그것은 그 사람의 존재 중에서 적어도 그 행동에 관련된 부분은 내게 존재하지 않는거야. 그것이 실존이지. 그렇지만 그 행동은 그 행위자에게는 의미가 있었잖아?

    문제는, 이해하는 행위의 주체는 나라는 점이지. 내가 이해하지 못했는데 어째서 그의 시각으로 바라봐야 하지?

    그냥 넘어갈 수는 없는거야?

    그러기엔 타인을 이해하지 못한 경우에 생길 수 있는 위험이 큰데

    그렇게 이해 못한다고 계속 걸고 넘어지다간 언젠가 인간관계에서 실패할 것 같은데?

  • 알리바바랑 40인의 도적

    알리바바랑 40인의 도적 얘기에 보면, 도적들이 알리바바네 집 대문짝에 표시를 해 놓고서 (그것도 대놓고 보이게) “ㅋㅋ 이제 그집 털면 되삼” 하고 보고 했다가, 알리바바네 마누라가 “어떤 ….가 남의 집 대문에 낙서를 해놔?”라고 분노에 찬 똘끼로 딴집 대문에다가 전부 같은 표시를 해 놨다. 아마 그날, 그 동네에서는 “낙서금지” 결의안이 통과되었을 것이다. 아무튼 40명의 도적단은 그날 허탕을 친다.

    근데, 같은 이치가 우리나라에서도 통한다. 뉴스에 보도된 여러가지 범죄 소식을 보면, 아파트 단지에서 장기간 집을 비운 경우 현관문에 붙어있는 각종 전단지들을 보고서 전단지가 많이 붙어있는 경우 빈집일 가능성이 높다고 생각해서 도둑이 든다는 것이다. 즉 전단지를 제때 치워주지 않으면 범죄의 대상이 될 가능성이 높다.

    하지만 원룸에는 반대의 이치가 적용된다. 원룸은 장기간 비어있는 집이라면 사람이 아예 살고있지 않은 텅 빈집일 가능성이 높다. 따라서 오히려 전단지를 치우지 않고 많이 놔두는 것이 유리할 수 있다. 물론 미관상 좋지는 않겠지만. 또한, 도둑이 완전히 바보라면…-_-

    물론 중요한 것은 평소에 문단속 잘 하고 방범창 설치하는 것이 좋다.

  • 꿈을 빙자한 죄

    총몽 Last Order 2권

    케이어스가 벡터에게 처맞고 1년뒤, 코요미에게 도움을 받아서 벡터에게 돌아가면서

    “이제서야 이해가 된다. 꿈을 얘기하고, 많은 사람들의 꿈을 부추기고, 그 꿈을 핑계삼고도 그리고도 꿈을 이루지 못했다. 이제서야 이해가 가… 꿈을 빙자한 죄의 무거움을!”

    그리고, 그는 갈리가 자렘에서 날린 종이비행기를 받아들고 느끼게 된다.

    “올 한해 내가 한 일이라곤 그냥 여기저기 뒷골목을 전전했을 뿐, 아직 아무것도 시작하지 않았어. 꿈을 가슴에 담아두지 않으면 사람은 죽어. 하지만 꿈을 품은채, 행동으로 옮기지 않으면 썩기 시작하지. 그리고 그 꿈을 꾼 죄는 실행으로만 갚을 수 있다”

  • 무한소

    0.9999… = 1

    위 등식이 성립하는가에 대한 논의는 너무 많이 이루어져 왔다.

    수학에서 두 수가 같은지 판단하려면 빼서 0이 되는지 살펴보면 된다. 양변에서 0.99999…를 빼 보자.

    0.0….1 = 0

    물론 …사이에는 0이 무한히 많이 들어가 있다. 사실 1이 언젠가 나오기는 할까? 결코 인간은 1을 구경할 수 없다.

    이것은 “극한”의 개념에 대한 이해와 관련되어 있다. 인간은 무한을 상상조차 하지 못하기 때문에 논리라고 하는 갑옷 속에서만 그것을 다뤄볼 수 있다. 마치, 우주에 맨몸으로 나갈 수 없기 때문에 우주복을 입어야 하는 것과 비슷하다.

    다음과 같은 수열을 생각해 보자.

    0.1

    0.01

    0.001

    0.0001



    이 수열의 규칙은 (내가 그렇게 하기로 결정하였으므로) n번째 항은 1을 10으로 n번 나눈 값이라고 한다.

    이 수열은 0이 되는가? 알다시피, 이 수열은 어떠한 정수 n에 대해서도 0이 되지 않는다. n을 아무리 큰 값을 가지고 오더라도 결코 0이 되지 않는다. 하지만, 우리는 이 수열이 n이 커짐에 따라 0에 점점 가까워 지고 있다는 사실을 알 수 있다. 하지만 그것이 과연 모든 정수 n에 대해서 정말 그렇게 되는지 전부 조사해 볼 수도 없다. 10억보다 작은 n에 대해서는 그렇다고 말할 수 있다. 하지만 100억보다 작은 n에 대해서는? 100억보다 작은 n에 대해서도 물론 성립한다. 하지만 그렇다고 그것이 1000억보다 작은 n에 대해서 이 수열이 점점 0에 가까워 지고 있다는 것을 보증해 주지는 못한다. 조사해 보기 전에는 알 수 없는 것이다.

    이러한 문제를 해결하기 위해서 수학자들은 “극한”이라는 개념을 만들고, “수렴성”에 대해서 일반적으로 사용할 수 있는 방식으로 정의하였다.

    임의의 양의 실수 d에 대해서, 어떤 숫자 N이 존재하여 n>N이기만 하면 |a(n)-a|

    저기서 나온 작대기 두개는 절대값 기호다. 즉, 아무 숫자라도 좋으니, 아무거나 갖고 오라는 거다. d로서 어떤 숫자를 제시하더라도 정수 N을 제시할 수 있어서, N번째 항 이후의 모든 항이 특정한 값인 a에 d만큼의 거리보다는 가깝게 있도록 할 수 있다는 뜻이다. 여기서 d는 양의 실수이다. 0이 아니다. 아무리 작아도 좋고 아무리 커도 좋다. d를 0.000000000000000000000000000000001421로 잡아보자. 난 N을 40을 제시할 수 있다. 더 작은 값을 갖고 와도 좋다.

    즉, 이 수열은 0으로 수렴한다.

    수식에 무한대 기호가 등장한다면, 그 기호는 무한대 그 자체를 의미하는 경우는 거의 없다. 무한대 기호는 대부분의 경우 “일단 계산부터 하고, 나중에 무한대에 해당하는 n을 무한히 커지는 극한으로 보내서 계산을 완료한다”는 뜻이다.

    다시, 원래의 문제로 돌아와 보자.

    0.9999… = 1

    위의 등식이 틀렸다고 주장하는 사람들은 좌변과 우변 사이에 0이 아닌 차이가 있어야 함을 증명해야 한다. 그런데, 양 변의 차이가 0인지 어떤지는 모르겠지만, 0이 아닌 그 어떠한 숫자를 갖고 와서 그 차이와 비교하더라도 그 숫자보다 더 작다.

    즉, 좌변에서 우변을 뺀 값의 크기는, 0이 아닌 양의 실수 중 아무거나 (작거나, 크거나, 어떻든) 갖고 와서 비교하도라도 항상 그 실수보다는 작다. “아무거나” 적용해도 성립한다는 것은, “모든” 수에 대해서 성립한다는 뜻과 같고 (아니라고 생각하는가?) 그 크기(절대값)를 비교했을 때, 0이 가장 작은 수가 된다. 만약 0이 아닌 다른 수가 온다면, 그 수와 0의 사이에는 항상 다른 수가 있어서 그보다 더 작은 수를 만들어 낼 수 있기 때문에 가장 작은 수가 되지 않는다.

    좌변과 우변의 차이는 0이어야만 하는 것이다.

    좌변에서 우변의 차이를 계산했는데 0이 나왔다면, 우리는 그 두 수를 “같다”라고 생각한다. 다른 것은 표현 방식일 뿐이다.

  • 미스테리

    요즘 도체와 반도체 내부에서의 전자의 mobility를 조사하고 있는데, 큰일났다.

    알루미늄은 conductivity로부터 mobility를 내가 직접 계산했고, 실리콘과 게르마늄은 인터넷에서 찾아봤는데…

    실리콘이랑 게르마늄의 mobility가 알루미늄보다 더 높다. (수백배)

    어쩌지? -_-;

    나는 설마 새로운 발견을 한 것이 아닐거야.

    일단 알루미늄의 mobility를 계산해 보자.

    conductivity = mobility * number density * electric charge

    이렇게 주어진다. conductivity는 3.358x$10^7$S/m이다. 여기서 S는 siemens로, 전기 흐름의 단위라고 한다. 알루미늄의 number density를 알려면, 일단 matter density를 알아야 하는데, 그건 위키백과를 찾아보면 2.7g/$cm^3$이라고 되어 있다. 다시말해서, 1세제곱 센치미터의 부피 안에 2.7그램이 들어가 있다는 뜻이다. 알루미늄은 원자량이 대략 27이니까, 27그램을 모으면 1몰의 원자가 있다는 뜻이다. 2.7그램에는 물론 0.1몰 만큼의 원자가 존재한다. 여기서, conductivity는 미터로 주어져 있으니까 알루미늄의 number density도 미터 단위로 바꾸자. cm를 m으로 바꿀 때는 100을 곱하면 되고, 세제곱이니까 1000000을 분자와 분모에 곱하면 된다. 따라서 1세제곱미터의 부피 안에는 2700000그램이 들어가 있다. 그리고 MKS단위에서는 g을 kg으로 바꾸게 되니까 분자를 1000으로 나눈다. 즉, 1세제곱미터 부피 안에는 2700kg의 알루미늄이 들어간다. 2.7톤이네. electric charge는 1.6x$10^{-19}$C이다.

    이제 mobility는 간단한 산수로 알아낼 수 있다.

    mobility = 3.358 *1000000 *10000000000000000000/ (2700 * 1.6 * 6.025 * 100000000000000000000000)=


    0.0129014907

    그렇다. 1.3x$10^{-2}$이다.

    내가 비교하고자 하는 반도체 물질은 4x$10^{-7}$ 이 된다. 이 계산상으로는 대략, 알루미늄의 전자 이동도가 30000배정도 높다.

    이제 일반적인 반도체인 실리콘과 게르마늄을 찾아보자.

    위키백과를 보면, 실리콘의 conductivity가 주어져 있다. 대략 0.001S/m이 된다. 이 값은 알루미늄의 1000000000분의 1 정도 되는 값이다.


    http://www.ioffe.rssi.ru/SVA/NSM/Semicond/Si/electric.html

    여기를 보면 실리콘의 mobility가 주어져 있는데, 대략 1000정도 되는 값이다. MKS로 바꾸면 0.1이 된다. 즉, 이 값만 보면 알루미늄보다 10배 크다.

    뭔가 이상하다.

    알루미늄의 mobility를 다시 계산해 보았다. 이 계산은 재료공학 전공인 소인배 님의 지원을 받아서 이루어졌다.



    mobility = 3.358E7/(1.6E-19*10E6*(2.7/27)*6.02E23)


    =


    0.000348629568



    이 값은 내가 계산한 것 보다 100배 더 작은 값이다. 설마…

    내가 비교하려는 물질의 conductivity를 직접 찾아보는 수 밖에 없을 것 같다.

    (이 글은 미스테리가 풀림에 따라 계속 추가됩니다…)