화요일, 11월 01, 2016

[B급 프로그래머] 11월 1주 소식 정리

(오늘의 짤방은 "The 12 basic principles of animation")
  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리
(마무리 짤방 via ‏@PhilosophyOI)

토요일, 10월 22, 2016

[독서광] 인공지능, 머신러닝, 딥러닝 입문

지난 번에 마스터 알고리즘을 소개드렸는데, 실제로 머신러닝과 딥러닝에서 사용되는 구체적인 방법과 수식이 빠져있어 아쉬웠을지도 모르겠다. 오늘은 이런 부족함에 목마름을 느낀 독자들을 위해 '인공지능, 머신러닝, 딥러닝 입문'이라는 책을 하나 소개해드리겠다. 제목을 딱 보면 감이 오겠지만, 이 책은 인공지능, 머신러닝, 딥러닝에 입문하려는 개발자를 위한 책이지만 '입문'이라는 단어에 속으면 안 된다. 수학(응?) 기호를 알아야 제대로 읽을 수 있다.

인공지능과 머신러닝과 개요를 다루는 3장까지는 룰루랄라 읽을 수 있지만, 4장 통계와 확률부터는 수식이 대거 등장하면서 본격적인 험로가 펼쳐진다. 분류, 군집, 강화학습에 이어 딥러닝으로 넘어가게 되는데, 인공신경망과 컨볼루션 신경망에 이르면 평상시에 응용선형대수 공부를 열심히 할 걸 그랬어라는 후회감이 밀려올지도 모르겠다.

이 책의 장점은 머신러닝을 배우기 위해 필요한 최소의 지식을 체계적으로 잘 정리해놓은 데 있다. 프로그래밍 언어로 쓰인 코드는 단 한 줄도 없지만, 라이브러리나 프레임워크를 사용하기 위해 필요한 개념과 절차에 대해 차근차근 설명하고 있기 때문에 텐서플로우 책으로 직행하기 앞서 미리 읽어두면 나중에 큰 도움을 받을 수 있을 것이다. 이 책을 읽고 나서 scikit 페이지를 방문해 일반 예제를 보면 갑자기 뭔가를 알고 있는 자신의 모습을 발견할지도 모르겠다.

결론: 수학에 조금 자신이 있는 머신러닝과 딥러닝에 관심이 있는 개발자들에 추천한다. 후다다닥 읽는 대신 차근차근 정독해야 한다.

EOB

토요일, 10월 15, 2016

[B급 프로그래머] 10월 2주 소식 정리

(오늘의 짤방) 중간에 건물 안 보이는 분? (via @Remini_scence)

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리

(보너스 짤방) 프로그래머 3 유형 (via @InfoQ)

토요일, 10월 08, 2016

[독서광] 마스터 알고리즘

가을은 독서의 계절이라고 하지만 여전히 더워서 독서량을 늘이지 못하고 있다. 반성하면서 머신러닝 관련 서적 몇 권을 소개드리려 한다. 오늘은 1번 타자인 '마스터 알고리즘'이다.

알파고 사건 이후 요즘 여기저기서 인공지능과 머신러닝이 열풍을 불러일으키고 있다. 며칠 전에 KSC 2016 튜토리얼에 참석했는데, 많은 개발자들이 텐서플로우를 사용한 머신러닝 기법을 열공하는 모습을 보면서 머신러닝이 더 이상 흑마법을 부리는 신기술이 아니라 일반화된 문제 해법의 영역으로 접어들고 있다는 생각이 들었다. 하지만 머신러닝을 제대로 활용하려면 난관이 한두개가 아니다. 가장 먼서 머신러닝에 대한 일반적인 지식을 갖춰야 한다. 다음으로 (프로그램만 잘하면 되므로 불필요하다고 말하는 사람도 있긴 하지만...) 선형대수, 미분, 통계(특히 조건부 확률) 부문에 대한 기초 지식이 필요하다. 그 다음으로 파이썬이나 자바와 같은 프로그래밍 언어 지식이 필요하며, 텐서플로우나 카페와 같은 머신러닝 프레임워크에 대한 지식이 필요하다. 이 모든 조건을 갖췄다고 완성되는 것이 아니다. T_T 엄청나게 노동집약적인 노력을 투입해 학습시킬 데이터를 만들어야 한다(보통 이 부분을 간과하는데, 한 때는 아마존의 mechanical turk 파워의 50% 이상을 이미지넷을 위한 영상 분류에 투입했다는 일화를 기억하기 바란다). '마스터 알고리즘'은 가장 첫 단계인 머신러닝에 대한 일반적인 지식을 소개한다.

마스터 알고리즘이라는 단어가 특이한데, 저자에 따르면 마스터 알고리즘의 정의는 다음과 같다.

세상의 모든 지식, 즉 과거, 현재, 미래의 모든 지식은 단 하나의 보편적 학습 알고리즘으로 데이터에서 얻어낼 수 있다. 나는 이 머신러닝을 마스터 알고리즘(master algorithm)이라 부른다.

즉, 맥락에 맞춰 알고리즘을 매번 새로 개발하는 대신 데이터와 정보만 넣으면 우리가 원하는 통찰을 얻을 수 있는 어떤 절대적이고 궁극적인 알고리즘을 개발한다면 궁극적인 프로그램의 완성을 볼 수 있다고 주장한다. 물론 아직까지는 일부 분야에서만 성공을 거두고 있으며, 정말로 보편타당한 수준에 이를 수 있을지는 여전히 의문이기는 하다.

이 책은 머신러닝 실현을 위한 여러 가지 방법을 기호주의자, 연결주의자, 진화주의자, 베이즈주의자, 유추주의자라는 다섯 종족으로 나눠 설명하고 최종적으로는 이를 통합해 마스터 알고리즘으로 만드는 가능성에 대해 소개한다. The Programs That Become the Programmers에 소개된 그림 한 장이 이 책의 주제를 아주 잘 드러낸다.

각 종족별로 출발점, 기반 이론, 발전해온 경로를 다루며 장단점에 대해 짚어주기 때문에 현재까지 연구된 여러 가지 머신러닝 기법을 비교해가면서 익힐 수 있는 장점이 있다. 수식은 거의 나오지 않으며(베이지안은 예외다!), 코드도 없기 때문에 이 책을 읽고서 수학적인 관점에서 머신러닝을 이해한다거나 프로그램을 바로 만들 수 있으리라 기대해서는 곤란하겠다. (구체적인 사안을 이해하려면 다음 번에 소개하는 책을 읽어야 한다.)

책에서 다루는 내용을 맛보려면 다음 영상을 보면 되겠다. 영어 자막도 있으므로 천천히 시청하면 책에서 어떤 내용을 다루는지 감이 올 것이다.

그리고 보너스로 Quora에서 머신러닝을 어떻게 적용하는지 소개하는 자료도 올려드리겠다. 이 책을 읽고서 다음 자료를 읽어보면 머신러닝에 대해 한층 이해도가 높아진 자신을 발견할 것이다. :)

결론: 머신러닝에 대한 기초를 쌓고 싶다면 이 책을 읽어보면 되겠다. 하지만 번역상태가 좋지 않고(중간중간 오역도 보인다), 추상적인 내용이 많아서 읽기가 쉽지는 않을 것이다.

EOB

토요일, 10월 01, 2016

[B급 프로그래머] 9월 4주 소식 정리

오늘의 짤방: IT 관계자(특히 시스템 관리자)의 비애 (via @pigori)

애독자 여러분들을 위해, 연휴 기간 동안 충분할만큼 읽을거리를 넉넉하게 챙겨드리겠다.

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리

(마무리 그림: Today’s Venn Diagram. Programming != Computer Science via @jsshauma)

토요일, 9월 17, 2016

[독서광] 관저의 100시간: 후쿠시마 원전 사고, 재난에 대처하는 컨트롤 타워의 실상을 파헤친다

작년에 구입해놓고 차일피일 미루다 이번에 지진을 직접 느끼고 나서 갑자기 후다다닥 읽어버린 '관저의 100시간'에 대해 정리해보았다. 우선 이 책의 가장 큰 특징은 프롤로그에 너무나도 잘 드러난다.

논평과 추측은 배제했다. 나는 오로지 팩트로 말하겠다.

저자가 취재 도중에 상당히 열 받았으리라고 추측이 가능한 부분이 많았지만 잘도 참았다는 생각이 들었다. 가장 마지막 나오는 후주에는 누가 어떤 경위로 언급했는지 빽빽하게 적혀 있었고, 도쿄 전력 쪽에서 소송을 걸 경우를 대비해 반론이 있을 경우 취재원을 공개할 용의가 있다는 문구가 여러 차례 나왔다. 다양한 채널로부터 압력이 들어왔을 것 같다. 한국 같으면 이런 책이 나올 수 없지 않을까 하는 생각이 들었다.

이 책은 부제에서 잘 표현하듯이, 후쿠시마 원전 사고를 수습하기 위한 관가의 움직임을 중심으로 어떤 일이 있었는지를 상세하게 소개한다. 한국이야 "청와대는 재난 컨트롤 타워가 아니다"라는 공식 입장 표명이 있었기 때문에 어떨지 모르겠는데, 일본의 경우에는 후쿠시마 원전 사고가 발생했을 때 총리 관저에 컨트롤 타워가 만들어졌다. 따라서 여기서 어떤 일이 있었는지를 파악하는 작업이 무척 중요하다. 그리고 바로 이 책의 목표이기도 하다.

지진에 대한 재난 대응 절차가 체계적으로 잡혀 있는 일본조차도 원전 문제에 대해 속수무책인 상황인데, 책을 읽는 도중에 한국은 과연 어떨지 생각했다가 어느 순간 더 이상 생각을 하지 않기로 했다. 국민안전처 관계자의 최근 발언을 보면, 한국에서 후쿠시마 원전 사고에 필적하는 사고가 터지면 어떻게 될지 안 봐도 블루레이기 때문이다.

북한이 핵실험을 감행하면서 지표 밑으로 충격파가 영향을 미쳤을 가능성도 있다.

최대한 정보를 숨기면서 수동적으로 움직이는 관료 집단, 정작 중요한 정보를 제공하지 않으며 어떻게든 손실을 피하려는 전력 회사, 이권이 있을 때는 번개처럼 등장하다가 책임질 상황에서는 사라지는 학계 인사들이 앙상블을 이루면서 파국으로 치닫는 상황을 읽고 있으려니 많이 괴로웠다. 그래도 중간에 일본이 과연 선진국이라는 생각이 들게 만드는 일화가 나와서 깜짝 놀랐다. 계획 정전을 실행할 경우 집에서 요양하는 환자들의 목숨이 위태롭기 때문에 개별로 연락할 시간을 벌기 위해 필사적으로 노력하는 모습이나 이재민들의 대피와 불편함을 최대한 줄이기 위해 휘발유 보급까지 걱정하는 모습을 보면서 일본과 한국 사이에 벌어진 격차(not 경제적)가 얼마인지 갸늠조차 하기 어렵다는 생각이 들었다.

정전사태와 매뉴얼이라는 글을 적으면서도 한숨을 쉬었지만, 한국에서는 매일 큰 사고 없기를 바라면서 정화수 떠놓고 기도하는 기복신앙을 넘어서긴 틀렸다(털썩). 트위터에서 읽은 문구 하나를 소개하며 마무리한다(via @hjm4606).

미국: 새로운 매뉴얼을 창조
일본: 매뉴얼대로만 움직임
한국: 매뉴얼이 없음

결론: 한국에서 대형 사고가 터지면 어떻게 되는지 이미 수차례 목격하셨지만, 바닥 아래 지하실이라고 더 큰 대형 사고가 터질 경우 어떤 일이 벌어질지 궁금하신 분들이라면 이 책을 꼭 읽어보시기 바란다. 그리고 Managing the Unexpected도 읽으면 정말 많은 도움이 되리라 확신한다.

EOB

토요일, 9월 10, 2016

[B급 프로그래머] 9월 1주 소식 정리

시원한 맥주짤을 올리면서 소식을 정리해드리겠다(via https://twitter.com/DANIEL_AeHoBak).

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리

마무리 짤방 하나: 노르웨이 사진가 셀 산베가 나비 무늬에서 찾아낸 알파벳(via https://twitter.com/waitoreke)

EOB

토요일, 9월 03, 2016

[B급 프로그래머] 6월 2주 소식(예전 소식)

(오늘의 짤방: "만약 천재성이 어떠한 공통 분모가 있다면, 나는 관심의 폭과 여러 분야 사이에서 유용한 유사성을 이끌어 내는 능력을 우선 꼽고 싶다." via @John_Grib)

계속해서 지난 6월 2주에 정리한 소식도 올려드린다.

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리

[B급 프로그래머] 8월 마지막주 소식 정리

(코드 리뷰 중인 야옹이 via https://twitter.com/laynts/status/769496963528011776/photo/1)

한 동안 게으름을 부리고 있었는데, 정신을 차리고 다시 소식 정리 작업에 나서겠다. 일단 일주일치 정보부터 정리해보았다.

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리
EOB

토요일, 8월 27, 2016

[독서광] 생각하는 뇌, 생각하는 기계

그 어느 때보다 무더운 여름도 지나고 이제 가을로 접어들고 있으니 슬슬 블로그도 다시 시작해야겠다는 여유가 생긴다. 오늘은 간만에 서평을 하나 올려드리겠다. 팜 파일럿으로 유명한 제프 호킨스가 인공 지능과 관련해 많은 생각거리를 제공하는 '생각하는 뇌, 생각하는 기계'가 오늘의 주인공이다.

몇 년 전에 [일상다반사] 호프스태터와 인공지능이라는 글을 하나 올려드렸는데, 사람이 생각하는 방식 그대로를 컴퓨터에게 가르치려고 시도하는 사람이 호프스태터 뿐만이 아니라는 사실을 알게 되었다. 제프 호킨스는 그 당시 누구도 생각하지 못했던 그래피티라는 손쉬운 필기 입력 수단을 제공함으로써 PDA 세상을 싹슬이 해버린 팜 파일럿의 엄청난 성공을 뒤로 하고 뉴멘타라는 회사를 설립해 진정한 기계지능(Machine Intelligence) 연구에 집중하고 있다. 먼저 책을 읽기 전에 다음 동영상을 한번 감상해보시기 바란다(그러면 '생각하는 뇌, 생각하는 기계'가 어떤 내용으로 전개될지 확실하게 알게 될 것이다).

(한국어 자막이 담긴 영상은 테드의 '제프 호킨스 - 어떻게 뇌과학이 컴퓨터를 바꿀까' 참조)

이 책은 지능(원서 제목이 'On Intelligence'라는 사실을 기억하고 있으면 좋겠다)과 관련해 이 책을 지을 시점까지 연구된 최신 결과들을 알기 쉽게 설명하고 있다. 요즘 딥러닝으로 엄청나게 뜨고 있는 신경망을 시작으로 사람의 뇌와 관련해 여러 가지 지식을 정리한다. 그리고 나서 가장 중요한 기억의 비밀을 파헤친 다음에 지능의 새로운 기본 틀인 예측으로 넘어간다. 그거고 나서 피질의 동작 원리와 의식/창조성에 대해 집중한다. 마지막으로 지적 기계의 가능성과 장점에 대해 소개하면서 막을 내린다.

일반적인 인공지능 서적과는 달리 이 책은 철저하게 사람의 두뇌에 집중한다. 청각/촉각/시각 등 모든 감각을 동원해 세계에 대해 끊임없이 예측을 하며 각 예측들이 대단히 완벽하게 통합된다는 사실(예: 걸으면서 발을 내딛일 때마다, 뇌는 발의 움직임이 언제 멈출지 발에 닿은 물질이 얼마나 많은 반응을 줄지를 예측하며, 계단에서 발을 헛디디는 순간 예측에 뭔가 문제가 생겼음을 깨닫는다. 익숙한 멜로디를 들을 때, 다음 음이 들리기 전에 이미 머리 속에서 다음 음을 듣는다), 뉴런은 밀리초 단위로 동작하므로 나노초 단위로 동작하는 CPU에 비해 엄청 느리다는 사실, 기억에는 순서가 중요하므로 알파벳을 역순으로 발음하거나 노래를 거꾸로 부르기 어렵다는 사실, 여러 감각에서 나온 패턴들이 사실상 두뇌 내부에서는 동일하다는 사실은 이 책을 읽으면서 다시 한번 깜짝 놀란 내용이다.

책 후반부에 나오는 창조성에 대한 이야기는 기존 고정 관념에 정확하게 반하는 내용을 담고 있다.

창조성은 고도의 지능과 타고난 재능을 필요로 하는 비범한 특성이 아니던가? 그렇지 않다. 창조성은 그저 유추를 통해 예측을 하는 것이라고 정의할 수 있으며, 피질의 어디에서든 나타나고, 깨어 있을 때 당신이 계속 하는 일이기도 하다. 창조성은 낮은 수준의 것부터 높은 수준의 것까지 하나의 연속체를 이루고 있다.

창조성에 버금가는 인간의 중요한 특성인 상상 역시 예측을 입력으로 돌리는 신경 메커니즘으로 설명한다.

6층의 세포들은 계층 구조의 하위 영역으로 발을 뻗고 있지만, 거꾸로 4층의 입력 세포들로도 발을 뻗고 있다. 따라서 한 영역의 출력이 다시 자신의 입력이 될 수도 있다. 눈을 감고 하마를 상상해보면, 피질의 시각 영역은 실제로 하마를 보고 있을 때와 똑같이 활성을 띌 것이다. 당신은 상상하는 것을 본다.

인문학을 중요하게 여기는 분들께서 이 책을 읽으면 위와 같은 기계론적인 설명에 씩씩거릴지도 모르겠지만, 최근 딥러닝을 필두로 사람보다 더 나은 실리콘(?) 사람들이 출현함에 따라 사람도 아주 특이하고 이상한 생명체가 아니라는 결론에 도달할지도 모른다.

결론: 인공지능과 기계지능에 관심이 있는 분이라면 반드시 읽어보기 바란다. 강력 추천!

EOB

월요일, 7월 25, 2016

[일상다반사] 프론트엔드 엔지니어 구인

최근에 여러 가지 바쁜 일이 많아서 블로그에 거미줄이 많이 쳐진 상황이다. 다시 일상에 복귀했으므로, 기념으로 글을 하나 올려본다. 놀랍게도 오늘 주제는 구인이다. 블로그를 열고 나서 구인글은 처음이지 않나 싶다.

다름이 아니라, 엑셈에서 SaaS 형 성능관리 소프트웨어인 APM(Application Performance Management) 제품 개발을 진행하고 있는데, 함께 작업할 수 있는 호기심과 상상력이 풍부한 프론트엔드 엔지니어를 모시려고 한다. 혹시나 다음 조건을 읽어보시고 마음이 동하시는 프론트 엔드 엔지니어분들께서는 jrogue 에뜨 gmail.com 으로 지원을 부탁드리겠다. 노파심에서 말씀드리지만 울트라 초사이언인 개발자를 뽑을 의도는 없으므로 각 조건을 빠짐없이 AND로 연결할 필요는 없다.

  • HTML/CSS 명세를 밑줄 그어가면서 읽어보신 분
  • 자바스크립트 완벽 가이드HTTP 완벽 가이드를 완독하신 분
  • 자바스크립트의 메모리 관리 방법, 단일 스레드에 따른 콜백 매커니즘, 가베지 컬렉션 알고리즘, 스코프 규칙을 이해하시는 분
  • D3 등 차트 관련 라이브러리를 사용하다가 불편해서 직접 코드를 열어 손을 본적이 있는 분
  • 시각적인 웹 페이지 구성을 넘어서 웹 애플리케이션 관점에서 큰 틀을 잡고 작업을 하시는 분
  • 디자인 가이드라인에 따라 다양한 브라우저, 다양한 해상도, 다양한 폰트 렌더링 엔진을 고려해 설계와 구현을 하시는 분
  • AJAX를 넘어서 JSON 형태의 데이터 전송에 Websocket을 사용해보신 분.
  • SPA(Single Page Application)이 무엇이며, 어떤 이유로 이런 기술이 등장했는지 이해하시는 분
  • HTTP/2가 HTTP/1.1에 비해 개선된 사항을 정리하실 수 있는 분
  • CORS(Cross Origin Resource Sharing)를 고려하면서 XSS(Cross Site Scripting)와 CSRF(Cross Site Request Forgery) 공격을 방어할 수 있는 분
  • 클라이언트 쪽에서 자바스크립트 성능을 높이기 위해 여러 가지 다양한 시도를 해보신 분
  • 브라우저의 개발자 도구에 능숙하며, 메모리 누수와 자원 활용을 점검하고 자동화된 단위 테스트와 헤드리스 브라우저를 사용해 테스트를 하시는 분
  • 필요에 따라 자바스크립트 전처리 도구와 의존성 관리자를 활용하시는 분
  • 다양한 자바스크립트 오픈소스 라이브러리에 대한 경험이 풍부하신 분
  • 크롬 캔버스 등을 활용해 그리기 성능을 높여보신 분
  • 사용자 중심의 개발 철학을 중요하게 생각하시는 분

아무쪼록 훌륭한 프론트엔드 엔지니어분들께서 지원해주시기를 학수고대하고 있겠다.

EOB