알라딘 중고매장

미리보기
  • 최저가 : -원 I 최고가 : -원
  • 재고 : 0부
  • - 쇼핑목록에 추가하신 후 목록을 출력하시면 매장에서 간편하게 상품을 찾을 수 있습니다.
 
[종로점] 서가 단면도
(0)

인공지능 개발과 머신 러닝 분야의 한 축을 담당할 확률적 프로그래밍의 기초 지식을 다룬다. 확률적 프로그래밍을 배우는 데는 다양한 분야의 지식이 필요하다. 확률적 프로그래밍에 필요한 지식을 살펴봄으로써, 확률적 프로그래밍의 기초를 다지게 해준다.

이 책은 크게 4부로 구성되어 있다. 1부(1~6장)에서는 확률의 기초를 다룬다. 확률의 기초와 확률적 프로그램에서 주로 사용하는 주관적 확률, 즉 베이지안 확률을 자세히 소개한다. 2부(7~13장)에서는 1부에서 배운 베이지안 확률과, 새롭게 배우는 베이지안 네트워크를 이용해 확률적으로 추론하는 방법을 알아본다.

3부(14~17장)에서는 1부와 2부에서 배운 확률 지식을 기초로 하여 확률적 프로그래밍을 소개한다. 4부(18~22장)에서는 확률적 프로그래밍을 어떻게 사용하는지 알아보기 위해, 확률적 프로그래밍의 예제를 살펴본다.

최근작 :<확률적 프로그래밍 기초 원리 : 머신 러닝과 인공지능을 이해하는 또 다른 방법>,<스마트카 Smart Car 소프트웨어 엔지니어링>,<대한민국 소프트웨어, 리스타트> … 총 16종 (모두보기)
SNS :http://twitter.com/talkwithhani
소개 :다양한 분야의 소프트웨어를 개발, 관리, 컨설팅했으며, 현재는 차량용 임베디드 소프트웨어를 개발하고 있다. 『스마트카 Smart Car 소프트웨어 엔지니어링』을 비롯한 다수의 IT 서적을 집필하고 번역했다.

신승환 (지은이)의 말
최근에 개봉하는 굵직한 SF 영화를 보면 두드러지는 소재가 있는데, 바로 인공지능이다. 영화 속에서는 인공지능, 즉 스스로 판단하고 그에 따라서 행동하는 기계를 다양하게 표현하는데, 대체적으로 인공지능은 사람에게 위협이 될 것이라고 묘사된다. 영화에서 인공지능이 묘사되는 모습을 볼 때마다, 영화의 흐름과 관계없이 직업적인 호기심이 발동된다. 과연 영화에서 표현되는 인공지능은 어떤 프로그래밍 언어로 개발되었을까? C로 개발됐을까? 아니면 스크립트 언어가 비약적으로 발전해 자바스크립트 같은 스크립트 언어로 만들어졌을까? 하는 궁금증이다.

사실 이 책은 장난 같은 이 질문에 대한 답을 찾는 과정에서 만들어졌다. 인공지능에 적합한 프로그래밍 언어를 인터넷으로 검색하다가 우연히 '확률적 프로그래밍'이라는 단어를 찾게 되었다. 처음에 확률적 프로그램이라는 단어를 들었을 때는 확률과 프로그래밍이 어떤 연관이 있는지 도무지 감이 잡히지 않았다. 사실 확률적 프로그래밍을 이해하려면 프로그래밍 지식 외에 다양한 지식이 필요했다.

특히 일반 교육 과정에서 많이 들었던 확률이나 명제를 다시 공부해야 했고 처음 접하는 베이지안 확률, 베이지안 네트워크, 추정 알고리즘 등을 처음부터 살펴봐야 했다. 이런 것들을 알게 된 지금 확률적 프로그래밍을 처음 접하는 사람에게 확률적 프로그래밍이란 무엇인지 설명해야 한다면, 아마도 본문에서 설명하는 아래 사례가 가장 적합할 것 같다.

확률적 프로그래밍을 간단히 소개하려면 우선 명제에 대해 이야기해야 한다. 명제란 참과 거짓을 구분할 수 있는 문장을 말한다. 명제는 인공지능을 구성하는 논리의 기본 단위다. 말하자면 '당신 앞에 있는 건 자동차다'는 명제다. 그것이 자동차라면 명제가 참일 것이고 자동차가 아니라면 거짓일 것이기 때문이다. 아울러 '자동차는 달릴 수 있다'도 명제다. 자동차가 달리는 건 분명한 사실이고, 따라서 이 명제는 참과 거짓을 구분할 수 있기 때문이다. '당신 앞에 … 수 있다'는 문장은 가정도 참이기 때문에 결론도 참일 것이란 추론을 할 수 있다. 하지만 그 자동차의 엔진이 고장 날 가능성이 반반이라는 사실을 알게 된다면, 당신이 보고 있는 '그것'은 과연 달릴 수 있다/없다로, 말하자면 참과 거짓으로 판단을 내릴 수 있을까?

이야기하고 싶은 바는 명제와 명제를 사용한 논리적 추론만으로 사람들의 사고방식을 모델링하는 데 한계가 있다는 것이다. 명제를 프로그래밍 관점에서 해석하자면, 명제를 참이나 거짓을 뜻하는 불리언(boolean) 변수로 생각하거나 참이나 거짓을 돌려주는 논리식으로 생각할 수 있다. 프로그래밍 관점에서 해석해도 앞의 문장에 아직 동의하지 못하거나 그 의미가 명확하지 않은 독자를 위해 다른 예를 한 가지 들겠다. 우선 아래에 있는 명제를 살펴보자.

채식주의자는 평화주의자다.
군인은 평화주의자가 아니다.

위의 명제가 모두 참이라고 가정해보자. 만약 철수가 채식주의자라고 한다면, 위의 명제에서 철수는 평화주의자란 결론을 얻을 수 있다. 앞에서 예를 든 철수가 군인이라고 해보자. 그렇다면 철수는 평화주의자가 아니라는 결론도 얻을 수 있다. 즉 단순히 참과 거짓을 가지고 판단하는 명제를 사용한다면, 채식주의자면서 군인인 철수는 평화주의자인지 평화주의자가 아닌지 판단할 수 없게 된다.

현실에서는 이런 모순적인 상황이 매일같이 일어난다. 즉 채식주의자면서 군인인 철수가 평화주의자일 수도 있고, 평화주의자가 아닐 수도 있는 상황 말이다. 이걸 참과 거짓의 잣대로만 판단하려면 절대 판단할 수 없는 사태가 일어난다는 뜻이다. 이런 이유로 확률이 인공지능 개발에 개입하게 됐다. 특히 주관적 확률의 경우 자연현상을 포함하여 믿음을 표현할 수 있는 수단이다.

즉 참과 거짓이 아닌 0과 1 사이에 있는 값으로 어떤 상황을 표현한다. 채식주의자면서 군인인 철수가 평화주의자일 수 있는 확률이 0.5보다 크다면, 우리는 잠정적으로 철수는 평화주의자라 가정할 수 있다. 말하자면 참과 거짓이라는 양극단의 세계에 빠지지 않고, 그런대로 현실을 판단하고 행동할 수 있는 기준을 얻을 수 있다는 뜻이다. 물론 평화주의자라고 잠정적으로 생각했던 철수가 전쟁 지지 집회를 연다면, 우리는 이 사실을 기반으로 철수가 평화주의자일 확률을 다시 조정할 수도 있다. 이런 이유로 명확한 논리로 무장해야 하는 인공지능 세계에 불확실한 확률이 등장했다.

나는 이 책을 쓰게 된 질문, "인공지능을 개발하는 프로그래밍 언어는 무엇일까?"라는 질문에 대한 답을 찾았을까? 완전한 답은 아니지만 그 실마리를 찾았다고 생각한다. "새 술은 새 부대에"라는 속담이 있다. 아울러 나무와 못을 들고 있다면 최적의 도구는 드라이버가 아닌 망치일 것이다. 프로그래밍 세계에서 모든 분야에 해결책을 주는 프로그래밍 언어는 없다. 즉 해결하려는 문제가 지금까지의 프로그래밍 언어로 풀 수 없다면, 새로운 프로그래밍 언어가 필요한 시점이라고 생각한다. 아마도 그 변화의 시점에 확률적 프로그래밍이 적절한 해답을 줄 수 있을 것이라 믿는다.

에이콘출판   
최근작 :<콘셉트로 풀어내는 소프트웨어 디자인>,<하드웨어 해킹 핸드북>,<정보보안 관제 및 운영 자동화 실무 가이드>등 총 1,046종
대표분야 :프로그래밍 언어 7위 (브랜드 지수 152,021점), 그래픽/멀티미디어 15위 (브랜드 지수 21,137점)