파이썬 날코딩으로 알고 짜는 딥러닝 - 프레임워크 없이 단층 퍼셉트론에서 GAN까지
윤덕호 지음 / 한빛미디어 / 2019년 7월
평점 :
절판


2주 동안 읽어봤지만 사실 이해가 쉽지 않았다. 그래서 다른 책을 읽을 때보다 뭐라고 쓰기가 참 어려웠다. 하지만 이거 하나는 확실하다. 이 책은 표지에 써 있듯이 프레임워크 없이 이해를 할 수 있게 돕는 책이다. 하나씩 반복해서 하다 보면 조금씩이라도 원리를 더 알 수 있지 않을까? 하는 생각이 든다.


http://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS6874180490


저자 역시 다른 특별한 프레임워크나 라이브러리를 쓰지 않고 이해를 돕기 위해 책을 썼다고 밝히고 있다. 세상의 수많은 교과서가 그렇듯 원리를 설명하는 책은 보통 재미가 없다. 하지만 이해를 하게 되면 큰 도움이 되고 때로는 어떤 일을 할 때 큰 무기가 되기도 한다. 많은 사람들이 그렇듯 나 역시 학교를 졸업하고는 수학하고는 담을 쌓고 살아 잘 읽히지 않지만, 언젠가는 이해를 할 수 있을 거란 기대를 하며 조금씩, 한줄씩 다시 읽어보려고 한다.

실습 코드가 github에 있는데, 별도 설치가 필요없어서 대부분은 실행에 문제가 없을 거 같다. 나의 경우 anaconda python3를 사용했는데 github repository를 clone하고 바로 실행하는데 아무 문제가 없었다.

https://github.com/konantechnology/academy.alzza

이미 수많은 도서, 강좌나 영상 자료를 통해 딥러닝에 접근할 수 있는 길은 활짝 열려있다. 하지만 지루함을 이겨내고 기본을 이해하는 일은 언제나 본인에게 달려있다. 그 길을 가는데 정말 큰 도움이 될 책이라는 점은 분명하다.



댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
케라스 창시자에게 배우는 딥러닝 Deep Learning with Python - 파이썬과 케라스(keras)로 배우는 딥러닝 핵심 원리!
프랑소와 숄레 지음, 박해선 옮김 / 길벗 / 2018년 10월
평점 :
구판절판


총평

기초적인 부분부터 난이도가 있는 부분까지, 이론과 코드를 함께 제공하는 아주 좋은 케라스 입문서

본문

ch. 1, 2는 전반적인 역사 이야기와 소개, 기본 개념, tensor 개념 및 numpy를 이용한 기하학적 설명, gradient descent등을 가능한 수식이 없이 설명하려고 한다. 이 부분에 대해서는 누구나 궁극적으로 수학이 필요하다는 데는 동의하지만, 어느 정도 수준부터 필요한 가에 대해 의견이 나뉘는데, 아직 나는 이런 의견을 이야기할 정도로 지식이 없어서 조심스럽지만, 아무튼 일정 정도까지는 수학적 지식이 부족해도 가능하긴 한 거 같다. 저자는 이런 쪽 의견이어서 좀 더 쉽게 소개를 하기 위해 가능한 수학을 python code로 표현하거나, 적게 사용해 초반을 작성했다.

그 뒤부터는 각 분야(vision, nlp 등)의 기초적인 분야와 예제부터 실습코드와 함께 제공한다. 뒤에서 다시 이야기하겠지만, 로컬에서 설치하는 데 실패해서 colab에서 진행을 했는데, 거의 대부분의 코드를 github에서 제공하고 있기 때문에 따라하기가 매우 편하다.

다만 이유는 모르겠는데, 7장에 대해서는 코드가 없어서 직접 입력해서 따라해봤다.

후반부에서는 새롭게 추가된 함수형 API나 transfer, GAN등 비교적 최신 모델에 대해서 다루고 딥러닝의 한계나 미래 등을 이야기하며 책을 마무리한다. 부록에서는 다양한 방법을 통해 설치하고 실습할 수 있는 방법을 알려준다.

이 책의 가장 큰 장점은 이론과 코드가 굉장히 균형을 갖췄다는 점으로 보는데, 이 분야에서 최고의 책으로 평가받지만 분명한 이론서인 http://www.deeplearningbook.org은 나 같은 프로그래머에게는 너무 다가가기 어렵고, https://www.packtpub.com/big-data-and-business-intelligence/tensorflow-machine-learning-cookbook와 같은 cookbook은 코드가 있어서 실용적이나 중요한 부분은 이해하기 어려운 경우가 많아서 문제이다. 이런 관점에서 여러 리뷰에서 이 책을 좋은 책으로 평가하고 있다는 생각이 들며, 앞으로 계속 봐야 할 책으로 생각한다.

기타

최근 몇 권의 이 분야 서적들을 리뷰하면서 이제는 로컬에서 해봐야지 했는데, 일단 결론부터 말하면 실패하고 colab에서 진행을 했다. 가지고 있는 하드웨어가 모두 오래되어서 그런지 문제가 발생했는데, 해결하려니 이리저리 꼬였는지 잘 되지도 않았고, 책의 베타 리더들이 쓴 글에서도 나와있듯이 시간이 오래 걸려도 colab으로 실습 진행은 가능하니, 설치 때문에 고생하고 싶지 않은 경우에는 colab에서 해보는 게 좋을 거 같다.

다른 서평을 보면 저자의 설명이 어려워(그래서 역자의 주석도 많고) 이해하기 어렵다는 평이 있다. 개인적으로 이건 성향의 차이라고 생각한다. 어떤 사람은 비유를 들어 설명하는 게 더 쉽게 이해할 수 있지만, 다른 사람은 직접적으로 기초부터 설명해야 더 알기 쉽다고 할 수 있기 때문이다. 또 하나, 다른 분들의 서평은 대개 완전한 입문자에게는 약간 어렵고, 머신/딥러닝은 잘 모르지만 프로그래밍은 익숙한 사람들에게 적합한 책이라는 평이 주류인 거 같다. 때로는 너무 자세한 설명이 입문자를 질리게 할 수 있다는 점은 동의하지만, 어느 정도는 용어라도 알아야 다음 단계를 갈 때 도움이 된다는 점을 생각하면 이렇게 가능한 자세하게 설명하는 책이 결국 독자에게 도움이 된다고 생각한다.

오타에 대한 교정도 역자 블로그에서 제공중이니 가끔 보는 게 좋겠다.



댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
이것이 자바다 이것이 시리즈
신용권 지음 / 한빛미디어 / 2015년 1월
평점 :
구판절판


한줄 요약

Java를 시작해 빠른 시일 내에 코드를 작성하기 원하는 초보자들에게 최적화된 책

장점

소스코드와 설명이 자세하다. API에 대해 사용 방법을 바로 알고 싶을 때 매우 유용하다.

단점

초급 대상이긴 하지만, 간단하게라도 설명이 있으면 좋을 중요한 부분들이 종종 빠진 경우가 있다.

총평

택배로 온 책을 보고 두꺼워서 조금 놀랐는데, 1/2권 분책이 가능한 형태였다. 두께로만 봐도 내용이 정말 많겠다는 생각이 들었고, 읽어보니 정말 많은 내용을 넣으려는 노력을 했음을 알 수 있었다.

1권은 자바의 기본 문법과 간단한 OOP에 해당하는 부분이라 죽 읽고 넘어갔는데, 일단 읽으면서 받은 첫 인상은 소스코드가 자세히 나와 있어 좋았고, 설명도 비교적 세부적인 부분까지 기술한 듯 해서 괜찮았다. 중간 중간 설명이 조금 거슬리는 경우가 있는데, 자바를 실무에서 사용한지 오래되어 내 생각이나 기억이 틀릴 수도 있어 일단 넘어갔다.

2권부터는 직접 소스코드를 입력하면서 실행해보고 설명을 읽었다. 예제 이름이 ~~Example.java로 끝나는 이름을 갖는 예제들은 모두 main method를 가지고 있어 테스트할 수 있는 예제들이다.

환경 설정

Oracle은 license 문제 때문에 괜히 꺼려져서 adoptopenjdk를 설치하고, 주로 intelliJ에서 실행했다. 1장을 보면 개발 환경 설명을 상세히 하는 점은 좋은데, 윈도우만 다루고 있고, IDE로는 Eclipse를 선택했다. 아마 저자의 경력을 볼 때 SI 환경을 고려해서 그런 거 같은데, 사실 최근에 프로그래밍 서적은 개발 환경을 설명할 때 간단하더라도 윈도우, 맥, 리눅스를 모두 설명하는 경우가 많다는 점에서 이 부분은 단점이라고 생각한다. IDE도 (여전히 2위이긴 하지만) 이미 Eclipse의 시대가 지난 지 한참 되었는데, intelliJ를 선택하지 않은 점은 특정 환경을 고려했다는 생각을 할 수 밖에 없다.

또 네이버 카페(https://cafe.naver.com/thisisjava)에서 저자가 굉장히 열심히 질문에 답변을 해준다는 글을 읽게 되었는데, 이 점은 매우 장점이지만, 네이버 카페에 가입을 하고 등업을 해야만 한다는 점은 매우 불편했다.

소스 코드 역시 한빛 홈페이지에서 제공하고 있긴 하지만(http://www.hanbit.co.kr/store/books/look.php?p_code=B1460673937), github repository가 없다는 건 굉장히 의외이다.

예제

스크린샷의 왼쪽에 보면 알 수 있듯이 ch12, ch13, … 식으로 package를 구성해 예제들을 실행해봤다.

ch13.

책을 찾아봐도 Person, Worker, Student, HighStudent class는 없는데, 카페에 있는 건지 아니면 앞에서 있었는지 책이 두꺼워서 다시 확인은 못했다. class는 간단하게 만들어서 하면 되기는 하지만, 초보자들에게는 당황스러울 수 있는 부분

초급대상이긴 하지만 generic 이야기하면서, covariance/contravariance라는 게 있다 정도는 이야기 해줘야할 거 같은데… 이 부분은 뭐가 맞는지는 잘 모르겠음. 하지만 용어라도 알아야 나중에 찾아볼 수 있지 않을까?

https://dzone.com/articles/covariance-and-contravariance

ch14.

특히 lambda같이 예전에는 언어 스펙에 없어 해보지 않았던 부분을 이해하는 데 도움이 많이 되었다. 개인적으로는 일단 실행해볼 수 있어야 이해하기 쉽다고 생각하기 때문이다. 다만 이런 스타일의 책의 경우 그 이면의 원리를 이해하지 못하면 응용을 하기 어려울 수 있는데 이런 부분은 책을 보는 사람들이 결국 다른 책이나 강의를 통해 스스로 채워야 하는 부분이다.

ch15.

자료구조와 알고리즘의 중요성은 두말 할 필요가 없기 때문에 가장 중요한 챕터 하나를 선택하자면 15장이 되지 않을까? 기본 사용법을 충실히 설명했기 때문에 초보자들에게는 매우 중요하고 계속해서 참고할 부분이다.

ch16.

프로그래머가 초보를 벗어나 중급으로 갈 수 있느냐를 평가할 때 중요한 점 하나가 concurrency/parallel에 대해 이해하느냐이다. 이 부분을 제대로 배우려면 사실 이쪽의 바이블 격인 Java Concurrency in Practice http://jcip.net/ 를 봐야 하기 때문에 여기서는 기본적인 API가 뭐가 있고 이렇게 동작한다 정도만 알아도 충분하다.

ch17.

javafx를 별도로 라이브러리를 설치하고 추가 import가 필요한데, 현재 사용중인 adpotopenjdk와 충돌이 없는지를 제대로 확인하지 못해(Oracle JDK가 기본) 이 장은 지나갔다. intelliJ에서 javafx 설치를 위한 문서는 다음 link 참조.

https://www.jetbrains.com/help/idea/preparing-for-javafx-application-development.html

ch18.

ch19.

결론

많은 설명과 예제를 통해 빠르게 코드를 작성하고 실행해볼 수 있다는 점에서 좋은 책이지만, 초보를 벗어나기 위해서는 너무 많이 의존해서는 안 되는 종류의 책이기도 하다. 책에 나온 예제를 통해 동작하는 코드를 얻을 수 있겠지만, 여기에만 의존하면 정작 필요한 형태로 변형해서 쓰는 거 조차 어려움을 느낄 수 있기 때문이다. 이 책을 읽은 후 OOP에 대한 부분이건, data structure & algorithm에 대한 부분이건 바로 기본적인 부분을 채워야 한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
처음 시작하는 R 데이터 분석 - 쉽고 재밌게, 실무 예제로 끝낸다! (7일 완성 로드맵)
강전희.엄동란 지음 / 한빛미디어 / 2018년 10월
평점 :
절판


최근 계속해서 R책을 보고 있다. 결국 원하는 건 세이버매트릭스 분석을 따라해보고 싶은건데, 꾸준히 안 본 탓도 있지만, R코드가 왠지 눈에 잘 들어오지 않아서 그렇기도 하다(특히 index가 1부터 시작하는 부분은 굉장히 어색함). 그래서 더 초보용 책을 보는 중인데, 이번에 보게 된 책은 정말 초보자들에게 유용할 거 같다. 물론 프로그래밍을 모르는 사람이 보면 다를 수도 있겠지만, 이 정도면 솔직히 떠먹여주는 급이 아닐까 생각한다.

초보용 책이라고 하더라도 그 안에서 다시 난이도가 나뉜다고 생각하는데, 이 책은 그 중에서도 낮은 난이도를 갖는다. 책의 품질이 안 좋다는 게 아니라 오히려 보기 쉽게 잘 정리해서 품질이 좋다는 뜻이다. 각 장마다 연습문제가 있는 걸 보면 교재용으로도 의도한 거 같은데, 이 역시 목적 달성을 위해 좋다. 소소하게는 전체가 컬러로 되어 있는 점도 보기 좋다고 생각한다.

실습

초보자용 책이기도 하고 프로그래밍 책이기 때문에 설치부터 설명을 하는데, 지난 번 다른 책을 보면서, mro version 설치를 하다 문제가 생겼고, 시간이 없어 재설치를 못해 R Studio를 사용할 수 없는 상황이었다. 어떻게 할까 하다가 우연히 https://rstudio.cloud를 알게 되어서, 이 참에 테스트를 해봐야겠단 생각이 들어 여기서 실습을 진행해봤고, 한글 문제만 제외하면 초보자들에겐 정말 적절한 사이트란 생각이 들었다. 아래 스크린샷처럼 대부분의 코드가 잘 동작했다.

실습 프로젝트

마지막에는 4가지의 실습 프로젝트 코드를 보여주는데, 간단한 분석이라면 이런 코드를 가지고 조금만 수정하면 잘 쓸 수 있을 거 같다. 3번째 project는 한글이 깨져서 워드 클라우드를 그려봐야 제대로 나오지 않으므로 하지 않았고, 4번째 project는 csv file을 그냥 upload하면 encoding 문제로 사용할 수 없어 iconv로 utf8로 바꾼 후 해봤지만 결국 실패했다. R studio 문제를 해결하면 다시 해보고 싶다.

project 1

treemap에서 한글이 깨진 점만 제외하면 실행이 잘 된다

project 2

역시 boxplot에서 한글이 깨지는 점만 빼면 잘 된다

기타

책에 나온 실습 코드를 진행하면서 psych, descr, reshape2, extrafont, wordcloud2, ggplot2, googleVis, ggmap, treemap은 전부 설치하고 실행하는 데 문제가 없었고, 딱 하나 문제가 발생했다. 한글 분석을 위한 “KoNLP”인데, 오류가 발생해서 몇 가지 시도를 했지만 결국 실패를 했다. 이 부분 역시 R Studio문제를 해결하면 다시 해보고 싶다.

KoNLP 문제 해결을 위해 참고했던 link들
https://github.com/haven-jeon/KoNLP/issues/53
http://hreeman.tistory.com/174
http://euriion.com/?p=154
http://r-bong.blogspot.com/2016/03/rstudio_26.html


댓글(1) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
manowar 2018-10-10 10:47   좋아요 0 | 댓글달기 | URL
R studio의 콘솔창에서 이렇게 하면 될듯 합니다.
Sys.setlocale(˝LC_ALL˝, ˝korean˝)

책 7장끝부분에서 Sys.setlocale(˝LC_ALL˝, ˝English_United States.1252˝) 명령 때문에 영문모드가 되어 한글이 꺠진것 같네요.

 
그것이 R고 싶다 - R스튜디오에서 클라우드까지 데이터 과학자가 꼭 알아야 할 R 패키지 활용법
양중기 지음 / 한빛미디어 / 2018년 7월
평점 :
절판


초보자가 R의 매력을 느낄 수 있는 책

장점이자 단점

예제 하나를 할 때마다 거의 하나 이상의 package를 설치해야 한다. 설치부터 자세히 설명해주니 초보자에게 좋기는 하지만, 설치에 문제가 생기는 경우는 난감할 수 있다.

장점

초보자를 대상으로 자세하게 썼다(하지만 여전히 R 설정 관련된 부분을 내가 잘 몰라서인지 쉽게 설치하지 못하는 부분도 있다. 특히 저자는 윈도우에서 했고, 나는 맥에서 해서 더 차이가 있는 듯). 특히 클라우드 부분에서 aws/애저 가입부터 설명을 한 걸 보고 정말 신경을 많이 썼다는 생각이 들었다.
심지어 R Studio editor의 theme을 바꾸는 부분까지 설명하기도 한다(66p).

소소한 부분이지만 책 전체가 컬러여서 아무 페이지나 펴도 명확하게 소스와 설명 구분이 쉽고 보기 좋다

단점

(만약 저작권 문제가 없다면) 실습 데이터 파일을 출판사 페이지나 github에 올려줬다면 더 편하게 따라할 수 있었을 거 같다.

part I

언제나 그렇듯 시작하면서 필요한 설치부터 진행하기로 했다. R이나 R Studio는 이미 예전에 설치했는데, mro라는 package를 설치해 병렬 프로세스를 사용할 수 있다기에 당연히 해보았다. 병렬 처리는 개발자라면 누구나 꿈꾸는(?) 부분이니까.

하지만 언제나 그렇듯 잘 되지 않았다.

이리 저리 뜯어보기에는 지금 바쁘기도 하고, 이게 없다고 예제를 따라하는 데 문제가 생기지는 않을 거 같아 일단은 지나가기로 했다. mro 설치는 https://mran.microsoft.com/download서 받아서 해야 하고, 오류가 발생해서 찾아보니(https://github.com/IRkernel/IRkernel/issues/300) X11 설치가 필요해 https://www.xquartz.org/ 서 다운로드를 받았는데, 특히 이 부분이 엄청나게 오래 걸렸다. 왜 이렇게 느린 지 모르겠지만, 거의 4시간 정도 걸려서 받았는데 결국 실패. microsoft의 문서를 보면서 하나씩 다시 설치해봐도 안 되어서 결국 다시 설치할 수 밖에 없었다. 

오류가 발생해서 그런지 나중에 sqldf, dplyr, tidyr같이 나 같은 초보자도 이름은 아는 package조차 설치가 안 되어서 결국 제거하고 다시 설치를 했다.

part II

역시 기본 문법 부분을 따라하는 데는 아무 문제가 없다. 다만 문법이 익숙하지 않아서 오는 부분은 여전히 어렵긴 하다.

3차원 배열을 생성하는데, 값이 채워지는 순서가 왠지 어색하다. array index가 1 부터 시작하는 것도 여전히 어색한데, 뒤쪽부터 값이 채워지니 더 어색하게 느껴졌다.

R 사용자들이 여전히 python이 따라오지 못한다고 말하는 부분들이 있는데 대표적인 게 data frame이다.

특히나 어색했던 건 파이프가 %>%였다는 점. |를 사용하지 않은 이유가 있을 거 같긴 한데, 방식이야 리눅스를 사용하는 프로그래머들이라면 누구나 익숙하겠지만 파이프 문자가 |도 아니고 %>%라는 건 정말 어색했다. 그 뒤에 나오는 항목들도 데이터 조작을 위해 모두 필수적인 함수들로 보였는데, select, filter나 *_join 함수들은 아예 sql query를 함수로 만들어 둔 거 같아 작업하는 데 편해보였다. R만의 장점이 조금씩 눈에 들어오기 시작한 시점이었다.

part III

기본 문법을 지나 조금씩 응용을 하기 시작하는 부분이다. data.go.kr에서 데이터를 가져와 진행을 하는데, 사이트는 .go.kr이 붙는 사이트치고 정말 사용하기 편하게 되어 있었다. 건강 관련 정보를 받을 때는 책의 설명을 따라 2015년 데이터를 받고 locale을 euc-kr로 한 후 import를 실행하니 출력하는 데는 한글 인식에 문제가 없었다. 하지만 ‘대기업집단 현황' 자료를 받으려고 하니(https://www.data.go.kr/dataset/3043452/fileData.do), 아니나 다를까, 연도를 선택하는 버튼에서 연도를 선택할 수가 없었다(설마 internet explorer가 아니라서?). 혹시 저자가 자료를 받을 수 있게 해놨을까 싶어 출판사 페이지에 갔는데(http://www.hanbit.co.kr/src/10088) 아쉽게도 정말 예제 소스만 있고, 이런 자료는 없었다. (만약 저작권 문제가 없다면) 기왕에 자료 파일도 같이 올려줬다면 더 좋았을 거다.

이외에도 서울시 open API 이용하기, MySQL 연동 방법, R에 자체적으로 포함된 데이터셋, 난수 생성 등을 통해 데이터 이용하는 방법 등을 설명한다. 각 부분마다 깊이있는 이야기를 하지는 않지만, 기본적인 이용 방법을 자세히 설명하고 있다.

그 다음 장에서는 좀 더 나아가 기본적인 통계를 설명하고, (나 같은 초보에게는) 고급 데이터 분석 기법들, decision tree, random forest 등의 기초적인 실행 방법과 다양한 시각화 기법, graph를 그리거나 R markdown 문서화 등의 방법들을 설명한다.

총평

R 초보자들이 매력을 느끼기에 충분한 책이다. 개인적으로는 다른 R책을 볼 때보다 훨씬 강하게 R의 유용함을 느낄 수 있었다. 특히 시각화 부분에서는 python도 많이 편해지긴 했지만, 이래서 R 사용자들이 R이 아직 훨씬 앞섰다고 이야기한다는 걸 이해할 수 있었다. 조금씩 R에 친숙해져서 개인적인 데이터로 해보고 싶다는 생각이 들었다.

다만 앞서 정리했듯이 패키지 설치로 인해 중간 중간 맥이 끊기는 점(생각보다 설치에 시간이 많이 걸리기도 하고, 실패하는 경우도 있으므로)과, 실습 데이터를 사용하기가 불편했다는 점이 아쉬웠다. 이 부분만 보강하면 정말 R 초보자들에게 굉장히 매력적인 책이 될 거라고 생각한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo