날짜 : 2024. 5. 31.

저자 : 이시한 저

출판사 : 북모먼트

이미지 : 예스24

정가 : 19,000

 

알파고가 이세돌을 이겼을 때에도 컴퓨터가 생각보다는 빠르게 발달하고 있지만, 아직까지 특정 용도에서만 능력을 발휘할 수 있다는 면에서는 한계가 있을 수 밖에 없다고 보고 있었다.

 

그리고, 그것이 동작(내지난 판단)하게 만든 이유는 알 수 없지만 스스로 학습하여 그렇게 동작하는 방식의 딥러닝이라는 기술에 기반했다는 것을 보고, 원리를 설명할 수 없는 기술에 기반해서는 인공지능의 3대 원칙을 준수하는 것을 보장할 수 없어 AI 겨울이 다시 올지도 모른다는 우려깊은 시선으로 바라보고 있었다.

 

그런데, 2년 전 오픈AI가 챗GPT라는 거대 언어 모델(LLM) 기반의 대화형 인공지능을 공개하면서 전문가(내지는 딥러닝을 이해하는 똑똑한 사람) 사이에서 확산되고 있던 AI가 일반인에게도 매우 빠른 속도로 대중화되었다.

 

포털이라는 이름으로 광고가 섞인 많은 것들을 검색결과로 제시하던 네이버나 다음에 비해, 간결하게 원하는 결과를 보여주던 구글에 만족하고 검색을 했지만, 이제는 구글마저도 광고성 게시물(심지어는 검색내용과 관계없이 키워드를 메타데이터 속에 잔뜩 늘어놓은 광고사이트)을 걸러내지 못하고 보여주는 것에 피로감이 컸는데 좋은 대안이 나온 것으로 판단되었고, 이 말은 검색광고로 성장한 구글의 미래 성장에 큰 위협이 나타난 상황으로 보인다.

 

몇시간 걸려 만든 코딩도 몇초만에 끝내는 모습을 보면서 창의력과 전문성이 필요한 소수의 전문 인력 이외에 이들을 지원하며 전문가로 성장해오던 단순(내지는 반복성) 작업을 하던 이들은 설자리가 없어질 수도 있겠다 싶다. 며칠전부터 Claude 3.5 Sonnet을 이용하면 코딩할 필요가 거의 없다는 이야기가 나오기 시작하는데, 이것이 무엇인지 알아봐야 할 것이 하나 더 늘어난 것 같다.

 

책에 대해 이야기하면, 저자는 챗GPT로 나타나는 전세계의 변화를 빠르게 파악하고 잘 정리해 뒀으니 어떤 형태의 변화가 있는지, 나는 어떻게 이것을 잘 활용할 것인지 아이디어를 구하기에 좋다. 개인의 상황에 따라 만족도에 차이가 있을 수 있지만, 현재의 나로써는 만족할 만한 수준의 내용을 잘 담은 것 같다.

날짜 : 2024. 5. 12.

저자 : Frans De Waal 저, 장대익, 황상익 역

출판사 : 바다출판사

이미지 : 예스24

정가 : 18,000원

 

찾아보니 이 책이 처음 발간된 때가 42년 전인 1982년이고, 읽고 있는 책은 2007년에 출간된 25년 기념판이다. 50년쯤 전에 아른헴 동물원에서 침팬지를 관찰하면서 쓴 책이지만, 지금 읽어도 오래되었다는 느낌이 전혀 들지 않는 것이 가장 흥미로웠다.

 

직전에 읽었던 '차이에 관한 생각'은 저자의 의견을 뒷받침하기 위해 보노보노, 침팬지 등 여러 종류의 유인원에 대한 이야기를 하면서 공통점과 차이점을 제시하고, 젠더에 대해 이야기하는 형태로 되어 있어 그리 재미있게 읽히지 않았는데, 이 책은 특정 동물원의 침팬지 집단만을 대상으로 이야기하고 있어 더 편하게 읽을 수 있었다.

 

마지막 장에 공식화, 영향력, 연합, 균형, 안정, 교환, 술수, 합리적 전략, 특권의 9가지 제목으로 침팬지가 정치적인 행동을 하는 이유를 잘 분석해놓고 있어 저자가 내린 결론 또한 쉽게 이해할 수 있었다.

 

그리고, 사람의 고유한 특성이라고 했던 도구를 사용하는 것을 비롯한 기억과 전략적 사고 등 여러가지 것들이 사람만이 가지고 있는 것이 아니라는 것을 다시금 알 수 있게 해줬고, 제한되어 있는 침팬지 사회에서 발견된 여러가지 정치적 행동을 사람들 사이에서도 발견가능한 것 같다는 생각도 들었다.

날짜 : 2024.4.21.

저자: Frans De Waal 저, 이충호 역

출판사 : 세종서적

이미지 : 예스24

정가 : 22,000원

 

부제를 봐서 알 수 있듯이, 요즘 많이 논의되고 있는 젠더라는 이슈를 영장류를 연구하면서 알게 된 내용 중심으로 정리하고 있는 책이다.

 

나이가 들어 집중력이 떨어져서인지, 유튜브, OTT 등의 미디어 덕분인지, 저자가 글을 재밌게 쓰지 않아서인지, 책의 주제에 대한 관심이 많지 않아서인지는 몰라도 책이 잘 넘어가지 않아서 생각보다 많은 시간이 소요되었다.

 

읽기 어려웠지만 저자가 이야기하고자 하는 바는 충분하게 공감되었다. 젠더라는 이슈에서 더 많이 드러났지만, 몇가지 종류의 유인원을 관찰하면서 발견한 사실을 바탕으로 문화라는 이름과 함께 고정관념화 된 여러가지 중 성역할에 대해 문제제기를 하고 있는 것이다.

 

젠더에 대한 여러 논쟁이 사람뿐만 아니라 동물에 대해서도 견해를 정해놓고 관찰해서 끼워맞춘 것에 가까웠는데 저자는 관찰을 통해 도출되는 결과를 최대한 객관적으로 서술하려고 노력을 한 것으로 느껴졌다.

 

그리고, 유인원도 성별에 따른 성역할이 기본적으로는 있지만 (암컷이 없는 경우 수컷이 육아를 담당하는 등) 상황에 따라 유연하게 대응하는 이야기를 보면서 우리사회가 성역할에 대한 고정관념으로 각자가 해야하는 역할을 너무 강요하고 있는 것이 아닌가라는 생각이 들었다.

 

인간과 동물의 차이, 젠더, 문화라는 몇가지 키워드에 대해 또다른 시각으로 생각을 하는 기회가 되었다. 그리고, 침팬지 폴리틱스를 이어서 읽을 예정인데 이 책 보다는 조금 더 재미있게 읽을 수 있으면 좋겠다.

800. Hybrid Integers

 

서로 다른 소수인 p와 q로 만들어지는 정수 pqqp는 합성 정수(Hybrid Integer)라 부른다.

예를 들어, 800=2552은 합성 정수이다.

C(n)을 n이하의 합성 정수의 갯수라 정의하자.

C(800)=2이고 C(800800)=10790이다.

C(800800800800)을 구하시오.

--------------------------------------------------------------------------

 

처음에는 숫자가 너무 커서 다루기 겁이 나서 지나갔던 문제이다. 다른 사람의 접근을 보니 숫자가 너무 크기 때문에 log를 이용하면 해결 가능할 것으로 보였다. 문제에서 요구하는 것은 pqqp가 800800800800 이하인 경우를 묻고 있으므로 다음과 같이 된다. 그리고 양변에 로그를 씌워 다시 정의하면 아래와 같다.

 

pqqp <= 800800800800

log(pqqp) <= log(800800800800)

log(pq)+log(qp) <= log(800800800800)

q*log(p)+p*log(q) <= 800800*log(800800)

 

소수는 2부터 시작하므로 800800*log(800800)을 최대값으로 보고 이보다 크게 되는 q*log2+2*log(q)의 q값을 구해 상한선으로 두고 이중 반복문을 운영하면 답을 구할 수 있다. 파이썬의 배열 한계를 넘어갈 것을 걱정했는데, 다행히 천만~2천만 사이의 어딘가에서 최대값을 넘는 것을 확인하고, 정확한 값을 구할 수 있었지만 안전하게 해서 답을 구하기로 했다.

 

15분쯤 소요되었으니 빠른 것은 아니지만 문제를 해결했다는 것에 만족하기로 했다.

757. Stealthy Numbers

양의 정수 a,b,c,d가 ab=cd=N이고 a+b=c+d+1인 경우, 양의 정수 N은 은밀하다고(stealthy) 한다.

예를 들어, 36=4x9=6x6은 은밀하다.

106 이하에는 2851개의 은밀한 숫자(Stealthy Numbers)가 있다.

1014 이하에는 몇 개의 은밀한 숫자가 있는가?

--------------------------------------------------------------------------

 

문제는 그리 까다롭지 않아, 문제에서 요구한 것만 구현하면 코드가 그리 길지 않다. 숫자의 약수를 구해서, 약수가 n개인 경우 n/2개까지 두 숫자를 각각 a, c로 두고, b, d를 연산을 통해 구하고, a+b=c+d+1인 경우를 찾도록 만들었다.

 

하지만, 예시로 나온 1백만 이하에 몇 개가 있는지 검증하는데 벌써 속도 문제를 만나게 되었다. 문제에서 요구한대로 했을때 구해지는 답을 보고 4의 배수만 나오기 때문에 그것으로 성능을 조금 개선했다. 그래도, 약수를 구하는 부분에서 시간이 많이 소요되어서, 대상 숫자를 보니 전체 약수의 가운데 부근에 있었다. 예를 들어 설명하면 약수가 10개인 경우 4,5번째 숫자 또는 3,4번째 숫자가 a,c가 되는 것이었다. 그렇게 해서 속도를 개선하니 1백만 개 이하의 은밀한 숫자 갯수를 맞게 구할 수 있어서 문제에서 요구한 대로 구현했음을 알 수 있었다.

 

하지만, 1백만 개에 9초의 시간이 필요했으면, 문제에서 요구한 1경 개를 대상으로 구하려면 적어도 900000000초(250000시간)의 시간이 필요한 상황임을 알 수 있었다. 그 말은 문제를 있는 대로 구현하는 것이 아니고 새로운 알고리즘을 찾는 것을 요구하는 정수론 문제라는 것이었다.

 

인터넷을 검색해 보니, 깃헙에 누군가가 구현한 내용에서 bipronics라는 명칭으로 x*(x+1)*y*(y+1)을 구하는 정수 배열을 활용해서 구했다고 설명했는데, 그 정수 배열이 문제에서 요구하는 답과 동일한 것이었다. 왜 약수 중에 a+b=c+d+1인 약수와 x*(x+1)*y*(y+1)이 동일한지 이해는 안되었지만 그렇다고 한다. 처음 접근한 방법으로 안되었을 때, 숫자 리스트를 만들고 a+b=c+d+1을 만족하는 경우에 flag을 바꾸는 형태로 해결할 수 있을지 고민하다가, 변수가 너무 많아 포기했는데 조금은 비슷한 접근인 것 같기도 했다.

 

이 개념으로 구현하니 1백만 개는 0.04초만에 구할 수 있었는데, 그래도 1경 개를 구하는 데에는 시간이 꽤나 걸렸다. 조건에 맞는 리스트를 구하는 것보다 중복을 제거하는 데 시간이 더 많이 걸린 것이 함정이었다. 파이썬의 list(set())의 조합으로 중복을 제거했는데, 7천만 개 이상 리스트에서 중복 제거하는 데 많은 시간을 필요로 했다. 대충 1분 이내에 조건에 맞는 리스트를 구했는데 거기에서 중복을 제거하는 데 10분 이상 소요되었다.

 

+ Recent posts