이 책은 머신러닝이나 텐서플로를 처음 접하는 분을 위한 입문서입니다. 머신러닝, 텐서플로 입문자에게는 1부가 특히 중요합니다. 머신러닝의 용어와 이론을 소개하고 텐서플로 개발을 시작할 수 있도록 안내합니다. 2부에서는 머신러닝의 거의 전 분야에 걸쳐 접하게 될 기본 알고리즘을 다룹니다. 마지막으로 3부에서는 텐서플로의 꽃, 신경망을 소개합니다.
주요 내용
머신러닝의 개념과 텐서플로의 주요 역할
머신러닝의 기본 알고리즘: 회귀, 분류, 군집, 은닉 마르코프 모델
오토인코더, 강화학습, 합성곱 신경망, 순환 신경망, 시퀀스2시퀀스 모델, 유틸리티
추천의 말
“이 책은 텐서플로를 활용해 머신러닝부터 딥러닝, 넓게는 강화학습까지 데이터 과학 분야를 전반적으로 다루는 입문서입니다. 물론 시중에도 머신러닝이나 텐서플로 관련 입문서가 참 다양하게 있습니다. 하지만 『신경망 첫걸음』, 『처음 배우는 인공지능』, 『강화학습 첫걸음』을 번역하신 송교석 역자님의 독자를 배려한 번역은 여타 입문서와 비교할 수 없는 장점이 아닐까 생각합니다. 더불어 실제 동작하는 예제를 실행해보면서 텐서플로에 대한 이해를 높일 수 있어, 막 중급으로 진입하려는 개발자와 학생들에게 큰 도움이 될 것입니다.” - 강찬석, LG전자 인공지능연구소
저자소개
저자
니샨트 수클라
UCLA의 박사 과정 연구원으로 로보틱스 분야에서 머신러닝과 컴퓨터비전 기술을 연구합니다. 버지니아 대학교에서 컴퓨터 사이언스와 수학을 전공하였으며 Hack.UVA의 창립 멤버입니다. 하스켈 언어를 강의하여 주목을 받았습니다. 마이크로소프트, 페이스북, 포스퀘어에서 개발자로, 스페이스X에서 머신러닝 엔지니어로 일한 바 있으며, 『하스켈 데이터 분석 쿡북』의 저자이기도 합니다. 분석화학에서 자연어 처리에 이르기까지 다양한 주제로 연구 논문을 썼습니다(http://mng.bz/e9sk). 보드게임 카탄(Settlers of Catan)과 카드게임 궨트(Gwent)를 즐겨 합니다.
역자
송교석
고려대학교 졸업 후 카네기 멜런 대학교에서 컴퓨터과학 석사 학위를 받았습니다. LG전자, 동양시스템즈를 거쳐 안랩에서 10년간 근무했으며, 안랩에서 분사한 노리타운스튜디오의 대표를 역임한 바 있습니다. 2017년 4월 메디픽셀(Medipixel)을 설립하여 대표를 맡고 있으며, 인공지능 기반의 폐암 진단 및 수술로봇 자동화 시스템의 연구개발을 진행하고 있습니다. 『신경망 첫걸음』(2017), 『처음 배우는 인공지능』(2017), 『강화학습 첫걸음』(2018, 이상 한빛미디어)을 우리말로 옮겼습니다.
LG전자 인공지능연구소에서 시스템 소프트웨어 엔지니어로 근무하며 딥러닝 관련 연구를 하고 있습니다. 컴퓨터에 관해서 다양하고 광범위한 주제에 관심이 있으며, 배운 지식을 블로그(http://talkingaboutme.tistory.com)에 정리해 공유하는 것을 좋아합니다.
목차
PART 1 머신러닝의 비밀병기
CHAPTER 1 머신러닝으로의 여행
__1.1 머신러닝 기초
__1.2 데이터의 표현형과 피처
__1.3 거리 지표
__1.4 학습의 종류
__1.5 텐서플로
__1.6 앞으로 배울 내용
__1.7 요약
CHAPTER 2 텐서플로 기초학습
__2.1 텐서플로 동작시키기
__2.2 텐서의 표현
__2.3 연산자 생성하기
__2.4 세션을 이용하여 연산자 실행하기
__2.5 주피터 노트북에서 코드 작성하기
__2.6 변수 사용하기
__2.7 변수를 저장하고 불러오기
__2.8 텐서보드를 이용한 데이터의 시각화
__2.9 요약
PART 2 핵심 학습 알고리즘
CHAPTER 3 선형 회귀
__3.1 공식 표기법
__3.2 선형 회귀
__3.3 다항 모델
__3.4 정규화
__3.5 선형 회귀의 응용
__3.6 요약
CHAPTER 4 데이터의 분류
__4.1 공식 표기법
__4.2 성능 측정하기
__4.3 분류를 위한 선형 회귀
__4.4 로지스틱 회귀 사용하기
__4.5 다항 분류자
__4.6 분류의 응용
__4.7 요약
CHAPTER 5 자동화된 데이터 군집
__5.1 텐서플로에서의 파일 탐색
__5.2 오디오로부터의 피처 추출
__5.3 K-means 군집
__5.4 오디오 세그먼테이션
__5.5 자기조직화 지도를 이용한 군집
__5.6 군집의 응용
__5.7 요약
CHAPTER 6 은닉 마르코프 모델
__6.1 해석하기 어려운 모델의 예
__6.2 마르코프 모델
__6.3 은닉 마르코프 모델
__6.4 포워드 알고리즘
__6.5 비터비 디코딩
__6.6 은닉 마르코프 모델의 사용
__6.7 은닉 마르코프 모델의 응용
__6.8 요약
PART 3 신경망 패러다임
CHAPTER 7 오토인코더 살펴보기
__7.1 신경망
__7.2 오토인코더
__7.3 배치 학습
__7.4 이미지 처리
__7.5 오토인코더의 응용
__7.6 요약
CHAPTER 8 강화학습
__8.1 공식 표기법
__8.2 강화학습 적용하기
__8.3 강화학습 구현하기
__8.4 강화학습 응용 사례
__8.5 요약
CHAPTER 9 합성곱 신경망
__9.1 신경망의 문제점
__9.2 합성곱 신경망
__9.3 이미지 준비하기
__9.4 텐서플로에서 합성곱 신경망 실행하기
__9.5 성능 개선을 위한 몇 가지 팁
__9.6 합성곱 신경망의 응용
__9.7 요약
CHAPTER 10 순환 신경망
__10.1 맥락 정보
__10.2 순환 신경망 소개
__10.3 순환 신경망의 구현
__10.4 시계열 데이터 예측 모델
__10.5 순환 신경망의 응용
__10.6 요약
CHAPTER 11 챗봇을 위한 시퀀스2시퀀스 모델
__11.1 분류와 RNN 기반에서 구축하기
__11.2 Seq2seq 아키텍처
__11.3 벡터를 이용한 기호의 표기
__11.4 종합하기
__11.5 대화 데이터 수집
__11.6 요약
CHAPTER 12 유틸리티
__12.1 선호 모델
__12.2 이미지 임베딩
__12.3 이미지 랭킹
__12.4 요약
__12.5 향후 학습에 대한 제언
APPENDIX 설치 가이드
__A.1 도커를 이용해 텐서플로 설치하기
__A.2 맷플롯립 설치하기
찾아보기
출판사리뷰
이 책은 텐서플로의 기초부터 시작하여 머신러닝의 기본이라 할 수 있는 회귀, 군집, 은닉 마르코프 모델을 거쳐 오토인코더, 강화학습, 합성곱 신경망, 순환 신경망, 시퀀스2시퀀스 모델, 유틸리니까지 난이도를 높여갑니다. 상세한 설명을 코드와 함께 제시해 이해하기 쉽게 구성하였습니다. 예제는 아주 기초적인 파이썬 지식만 있으면 대부분 이해하고 실행해볼 수 있습니다. 일부 심화 예제는 객체지향 프로그래밍 배경지식을 필요로 합니다.
1부_ 머신러닝의 개념과 텐서플로의 주요 역할을 살펴봅니다.
1장에서는 머신러닝의 용어와 이론을 소개하며, 2장에서는 텐서플로 개발을 시작하기 위한 모든 것을 알려드립니다. 머신러닝과 텐서플로에 익숙하지 않은 분이라면 1장과 2장을 꼭 읽기 바랍니다.
2부_ 그동안 검증된 기본적인 알고리즘을 다룹니다.
3장부터 6장까지 회귀, 분류, 군집, 은닉 마르코프 모델을 학습합니다. 여기에서 학습하는 알고리즘은 앞으로 여러분이 머신러닝 거의 전 분야에 걸쳐 접할 내용입니다.
머신러닝에 대한 것은 수학이 들어가면 다시 힘들어지고를 몇 번 반복했던터라 관심을 가지지 않고 있었지만, 그래도 시대의 흐름을 무시할 수는 없기에 주기적으로 억지로나마 보기로 하고 있었는데.
지금이 바로 그 때다.
> 책에 대한 간단한 정보
이 책은 머신러닝, 딥러닝 입문서이다. 매닝에서 나온 번역서로서, 책의 표지만 봐도 그 느낌이 있다.
매닝(Manning)의 책은 특징이 있는데, 책의 모든 원고가 완성된 다음에 출건하고 판매하는 것이 아니라 한 챕터의 원고가 완성될 때마다 인터넷에 공개하면서 미리 판매를 시작하는 독특한 모델로 운영한다는 것이다.
은닉 마르코프 모델이나 강화학습을 텐서플로로 제대로 구현한 예는 찾아보기 쉽지 않다고 하지만, 이 책에서는 소개할 수 있었는데 바로 이러한 이유 때문이라고 한다.
책이 많이 두껍지는 않지만, 그렇기 때문에 쉽게 접근할 수 있어서 좋았다.
앞 표지
> 인상깊은 부분들
생각보다 첫 챕터의 시작이 가벼운 느낌이었다. 챕터의 시작이 가벼웠기 때문에, 술술 읽히는 느낌이었고, 그 시작의 내용은 위와 같다. 머신러닝이라는 것이 필요했던 이유와 그러면 어떤것이 필요했었나 하는 요소들의 나열, 그러한 흐름이 자연스럽게 텐서플로까지 이어지게 된 것 같다.
예제코드는 생각치 못하게 친절했다. 각 라인에 대한 설명이, 손글씨로 첨삭지도해주는 느낌이들어서 좋았다. 보통은 설명은 따로 위나 아래에 기록을 하기 마련인데, 그렇다면 그 설명과 코드를 왔다갔다 하면서 찾아볼 수 밖에 없지만, 이렇게 바로 첨삭으로 설명해주면, 그럴 필요가 없기 때문에 시간을 상당히 절약할 수 있게 된다.
연습문제도 실려 있었으며, 연습문제의 해답도 바로 기록되어 있었다. 개발 관점에서의 문제 뿐 아니라 위에서 보이는 것처럼 수학에 관한 문제도 다뤘다. 역시 머신러닝은 수학과는 빼놓을 수 없는 관계에 있기에 좋았으며, 그것으로 인해 지식이 풍부해지는 느낌을 받았다.
연속적인 함수에 대한 정의도 아마 고등학생 시절 배우지 않았을까 하는 생각이 들지만, 몰랐던 부분이기에 잘 챙겨 넣었다. :)
주요내용이 중요한 뒷판이다. 머신러닝의 개념과 텐서플로의 주요 역할, 그리고 기본 알고리즘으로 다루는 회기, 분류, 군집, 은닉 마르코프 모델, 또한 오토인코더, 강화학습, 합성곱 신경망, 순환 신경망, 시퀀스2 시퀀스 모델, 유틸리티에 대하여 다루고 있다.
이 부분은 덤으로 실제 실습하다가 좌절한 부분이다. GPU로 NVIDIA 3070 카드를 가지고 있는데, 그것을 제대로 활용하기 위해 별도의 CUDA Toolkit 11.4 버전을 설치하였지만, 동작하지 않았다. 어떠한 이유가 있을 것 같은데, 찾기가 어려워서 일단은 포기하였다.(후에 다시 도전해야겠다...) 확실히 이런 프레임워크가 중요한 실습은 환경구성 자체가 큰 과제라고 생각이 든다.
> 괜찮은 부분
1. 목적에 충실하게 텐서플로와 머신러닝 학습을 다뤘다.
이 책은 입문자가 텐서플로와 머신러닝을 두려워하지 않고 잘 스며들도록 학습하게 하는 데 있다고 생각을 했다. 그러한 목표를 잘 이뤘다고 생각이 든다. 머신러닝은 수학때문에라도 어려울 수 있는 개념이었지만, 텐서플로를 앞세워서 그것을 눈으로 확인시켜줌으로 해소하려 하였고, 나 또한 이 책을 다 읽은 것은 아니지만, 가볍지만 이유를 귀납적으로 잘 설명한 문장들을 읽어가면서 그곳에 언급된 키워드를 잘 주워갈 수 있었다. 입문자가 텐서플로와 친숙할 수 있도록 그 목적에 충실했다고 생각한다.
2. 적절한 자료로 자연스럽게 읽혀지는 흐름
수 많은 어려운 단어를 한 번에 가져오기는 힘든건 사실이다. 그래서 스토리텔링을 이용하여 잘 스며들게 하였으며, 그러한 과정에서 비교하는 도표가 도움이 되었고, 다이어그램과 그래프, 실행결과 화면 등이 적절하게 도움을 주었다. 다르게 표현하자면 지루하지 않은 구성으로 도움을 주었다고 생각이 든다. 마치 잘 포스팅된 블로그를 보는 느낌이랄까.
3. 계획적으로 읽을 경우 완독이 가능한 구성
전체적으로 12개의 챕터로 되어있다. 사내 혹은 교내에서 스터디를 진행한다면 적절하게 3~4달 안에 익히면서 함께 보기 좋은 구성이라고 생각이 든다. 사실 내용이 가볍지는 않지만, 얇게 만들었기 때문에, 설령 내용상 부담이 된다고 하더라도 분량은 시도를 하기에 좋다고 생각을 했다. 물론 각 퀴즈나 예제가 그것을 도와줄 것이다.
> 아쉬운 부분
1. 텐서플로의 설치부터 애를 먹는 사람에게 좋은 해결책을 주지는 않는다.
이 책은 친절하지만, 처음 실습 진입에 있어서는 그렇지는 않은 것 같다. 텐서플로의 설치에서 애를 먹었으며, 결국 실행까지는 잘 하지 못했던지라, 아쉬움이 남았다. GPU 관련하여 CUDA를 잘 설정하라고 되어있지만, 어떻게 확인하고 어떤부분을 고쳐야 하는지 알지 못한지라 결국 스스로의 삽질이 남아있게 되었고, 만약 그러한 부분을 잘 알려주었다면 시간을 절약했을 것으로 생각이 든다.
2. 연습문제의 답이 바로 보인다.
연습문제는 중간중간 나온다. 연습문제를 풀려고 보면 바로 아래에 답이 있어서 볼 수 밖에 없게 된다. 이럴바에는 미니QnA와 같이 구성을 했더라면, 이런 질문에는 이런 답을 할 수 있겠구나 하면서 볼 수 있었을텐데, 연습문제라는 형식을 취하고 있기 때문일까, 바로 답이 나오는것은 이해되지는 않았다. 사실상 전반적인 연습문제의 내용도 가벼운 질문과 대답의 형식이었기 때문에, 아주 살짝 아쉬운 부분이기는 했다.
이 책은 구글이 처음 '텐서플로'라는 새로운 머신러닝 라이브러리를 선보였을 때, 저자가 공식문서를 읽으며 작성한 메모를 바탕으로 출간 되었습니다. 원서는 2017년, 번역은 2019년에 되었고요. 여전히 최신이라고 할 수 있는 분야이자 도서입니다.
1부
머신러닝의 개념과 텐서플로의 주요 역할
머신러닝의 용어와 이론, 텐서플로 개발 시작을 위한 모든 것
머신러닝의 기초를 설명하는 부분에서 저자는 이렇게 말합니다. "여러분은 자신이 유클리드 시대의 기하학자이며 새롭게 발견된 분야의 선구자라고 생각해도 됩니다."
저자는 컴퓨터사이언스와 수학을 전공했고 머신러닝 엔지니어관련 분야에서 업을 남겼는데, 데이터 사이언스 혹은 분석 분야에서도 이제 많이 사용되는 기술이 되었습니다. 많이 사용된다고는 하지만 그래도 여전히 활용 가능성이 무궁무진한 기술입니다.
저자가 텐서플로를 처음 사용했을 때의 감동이 더해져서인지, 이전에 이게 없었다면, 과 비교해주기 때문에 아 이럴 때 사용되는 구나 느끼고 읽기 시작하기 좋습니다.
이어서 주피터노트북을 활용해서 텐서플로를 바로 사용할 수 있도록 세팅하는 과정이 포함됩니다. 텐서플로는 근본적으로 파이썬 라이브러리이기 때문에 파이썬 기초 정도는 아는 상태에서 읽는 것이 더 유용합니다.
2부
그동안 검증된 기본적인 알고리즘
회귀, 분류, 군집, 은닉 마르코프 모델 학습
머신러닝의 거의 전 분야에 걸쳐 접할 내용
개요만 보아도 알 수 있듯이 통계 베이스가 전혀 없다면 책의 내용을 충분히 이해하며 읽기는 조금 무리가 있습니다. 간단하게 '회귀란 ~~입니다'라고 메모해주기는 하지만, 수학적-통계적 용어를 일일이 설명하면서 넘어가지는 않습니다. 쉽게 말해서 이런 거 손으로 or 하드코딩으로 구현하셨나요? 텐서플로를 사용하면 이렇게 됩니다!
큰 장점은 코드와 실행결과를 매우 읽기 쉽게 포함시킨 점입니다. 이때 코드 한 줄 한 줄 주석을 굉장히 상세하게 달아주었습니다. 당장 따라서 실습이 가능합니다. 예시도 실제 있을 법한 내용을 담고 있어서 재미있게 따라해볼 수도 있습니다. 또한 예제와 해설을 포함한 부분도 있고요.
작지만 큰 장점 중 하나는 '컬러'라는 점. 가독성이 매우 뛰어나고, 읽고 싶어지는 효과가 대단합니다. 코드 결과 뿐 아니라 설명을 위해 들어간 이미지도 컬러로 되어있어서 내용 이해에 매우 큰 도움이 됩니다.
3부
텐서플로의 진정한 가치인 신경망 소개
오토인코더, 강화학습, 합성곱 신경망, 순환 신경망, 시퀀스2시퀀스 모델, 유틸리티 학습
네, 머신러닝-딥러닝 하면 떠오르는 그것들을 다루고 있는 부분입니다. 사실 한 번 읽는다고 완벽하게 알 수 있는 부분은 아닙니다. 저자 역시 1,2부는 머신러닝과 텐서플로 이해를 위해서 필수로 읽기는 권하고, 3부는 선택적으로 읽도록 하고 있습니다. 코드도 확실히 복잡해지고요.
하지만 1,2부를 완전히 이해하고 난 뒤에는 3부 내용의 필요성을 느낄 거라고 생각합니다. 2부까지는 어떻게든 다른 방법으로 해낼 수 있는 부분을 더 쉽고 유용하게 했다면, 3부는 정말 텐서플로를 써먹는 부분입니다.
두루두루 다루고 있기 때문에, 이 책을 읽고, 따라해보고, 부족하거나 더 궁금한 부분은 더 심화된 책을 찾아보는 것도 도움이 되겠습니다. 책의 두께가 두껍지 않아서 언제든 편하게 읽기도 좋고요. 그만큼 아주 기본적인 내용이나 아주 심화된 내용을 다루지는 않지만 한 권을 가지고 전반을 파악하기에는 매우 좋은 책입니다.
이 책은 총 3부로 나뉘어 있는데, 1부에서 3부까지 단계적으로 텐서플로와 머신러닝에 대한 설명이 이어진다.
1부에서는 머신러닝의 개념과 텐서플로의 주요 역할을 다루고 있다.
1장에서는 머신러닝의 용어와 이론을 소개하고 있고, 2장에서는 텐서플로의 다양한 요소를 사용하는 방법들(텐서플로를 실행하고, 구현하고, 텐서보드로 데이터 시각화 하는 법 등)을 다루고 있다. 책에서는 머신러닝과 텐서플로에 익숙하지 않은 사람들은 1,2장을 꼭 읽어보도록 권장한다.
2부에서는 핵심 학습 알고리즘을 다루고 있다.
3장부터 6장까지 선형 회귀, 데이터 분류, 자동화된 데이터 군집, 은닉 마르코프 모델을 학습한다.각 장별로 공식표기법, 각각의 알고리즘을 확인하는 코드로 구성된다. 후반부에는 각 알고리즘이 어떤 분야, 연구에서 응용되었는지 소개하고, 간략한 요약으로 마무리한다.
3부에서는 신경망에 대한 학습을 다루고 있다.
7장부터 12장까지 오토인코더, 강화학습, 합성곱 신경망, 순환 신경망, 시퀀스2시퀀스모델, 유틸리티를 학습한다. 신경망의 기초부터 시작해 신경망 구조를 실세계에 실용적으로 적용하는 방법을 설명하고 있다.
공식 깃허브 저장소: https://github.com/BinRoot/TensorFlow-Book
한빛출판네트워크: http://www.hanbit.co.kr/src/10107
책 전반적으로 설명이 쉽게 되어있어, 텐서플로와 함께 머신러닝을 처음 접하는 사람들이 이해하는데 좋다. 특히 이 책의 원서를 번역한 송교석 역자님에게 큰 점수를 주고 싶다. 역자님은 인공지능 분야에서 직접 일하시고 있는 분이기도 하고,관련 도서를 3권이나 번역한 점이 있어서 그런지 책 내용을 이해하기 쉽게 번역해 주신 것 같다.
머신러닝을 처음 배우는 사람들 또는 데이터 과학 분야에서 중급 단계로 넘어가려는 분들에게 정말 적합한 책인 것 같다.
요즘 인공지능 관련된 책을 보면 자바 언어가 처음 나왔을 때 같은 분위기가 느껴진다. 내가 학부시절이었던 그 때 자바 라는 언어가 처음 고안되었고 정식버전이 아닌 베타버전이 시중에 나왔다. 문제는 자바를 소개하는 내용이 천편일률적으로 애플릿 이라는 걸로 시작했다.
캐캐묵은 자바 역사를 꺼내서 죄송하지만, 요즘 인공지능 관련된 책이 그만큼 깊이가 없다는 말을 하고 싶었다.
그나마 이 책은 한발짝 정도는 더 나간 것 같다. 실제로 운영하는 소스코드를 제공했으니까. 그런데 솔직히 돌려보지는 않았다. 이유가 있다. 소스 코드에 대한 주석이 달려 있기는 한데 이해하기 쉽지 않다. ‘난 설명했는데 너가 못받아들인거야’ 란 느낌을 강하게 받는다. 이것이 이 책의 장점인 동시에 단점이다. 나의 서평의 51%다. 책도 얇은데 코드 설명을 좀 만 더 했더라면 아마도 이 책은 극찬을 받았을 것이다. 상대적으로 쓸데없는 친절함이 있다. 책 곳곳에 ‘연습문제’라고 있는데 전혀 연습용이 아니다. 그냥 너 생각은 어때? 하고 묻는건데 연습문제라고 네이밍을 하다니...
이책의 마지막 특징은 머신러닝의 각 분야를 두루두루 맛보기 했다는 점이다. 각 적용분야에 대해 비유를 들어 설명해 주는 것은 괜찮았다. 근데 비유와 기술과의 연결이 단절되어 있어서 좀 더 좋은 비유를 했더라면 하는 아쉬움이 있다. 기술에 대한 설명도 좀 아쉽다. 후반부로 갈수록 이해가 되질 않았다. 내가 알던 것조차 소환되지 않았다. 그나마 적용해 볼 수 있는 소스코드를 제공했다는 것이 위안이다. 나중에 실무에서 필요할 때 실마리 정도는 줄 것 같다는 느낌이 든다.
머신러닝 입문서라고 되어있는데 입문서로 쓰기엔 개념부는 이해가 부족하고, 실무쪽은 설명이 부족하다. 강의식 수업에 부교재 정도로 생각하고 싶다. (주교재가 아님)
머신러닝 프로그래밍을 할 때'밑바닥 부터 시작하는 머신러닝'에 나오는 것 처럼 하나부터 다 만들어가며 할 수도 있겠지만대부분 tensorflow나 pytorch를 많이 사용하는것 같다.
아직 간단히 예제만 돌려보고는 수준이라 뭐가 더 편하거나 좋거나하는건 없지만 그래도 둘다 건드려보긴 했다..
이번 서평 도서 목록에 유닉스의 탄생을 비롯해 재미있어보이는책이 많았는데 이책에 오디오 처리나 챗봇에 관한 내용이 살짝 있길래 이책을 신청했다.
저자:
니샨트 수클라
UCLA 박사과정 연구원이고 마소, 페북, 스페이스x등에서 머신러닝 엔지니어로 일했다고 한다.
옮기신분:
송교석
어디서 들어본 이름 같았는데'신경망 첫걸음'도 번역하신 분이셨다.
내가 처음으로 읽은 인공지능분야 관련도서였는데 만약 이책 번역안해주셨으면 '그냥 어렵네'하고 딥러닝이나 머신러닝에 관심이없었을지도 모른다.
비교적 최근에 나온 도서라 당연히 tensorflow 2.x를 쓸줄 알았는데 출간 시기가 텐서플로2 나오기전이다.. 따라서 책에선 텐서플로 1버전으로 설명한다.
텐서플로1 관련 도서는도서관에 비치해달라고 많이 신청해서 많아서 2버전을 다루는 책을 읽고2버전으로 tensorflow한번 제대로 해보려 그랬는데 살짝 아쉽다.
시작말을 읽어보니까 저자분은 텐서플로가 처음 출시되었을때 라이브러리가안정될때까지 기다리기보단 단숨에 공식문서를 읽고 기초를 익혀 바로 연구에 적용하셨다고 한다. 나는 간단한거돌려볼때마다 빨간 에러글씨를 마구 출력하길래 시작했다가 관둔게 한두번이 아닌데 대단하신 것 같다.
이책을 읽으려고 했던 이유중 하나가 오디오 처리에 관한 내용인데평소 이미지나 영상에 관한 머신러닝보다 자연어처리나 음성처리에 더 관심이 많았다. 근데 더 어려운 분야라이해가 쉽지 않기도 했고, 접할수 있는 자료도 늘고있긴 하지만 그렇게 많지는 않았다.
이 책에서 오디오에서 피처 추출하는 내용이 있는데 bregmantoolkit을 사용한다. 근데 공식 지원버전이 python2라고 한다.. 주피터 놑북을 쓰면 3버전도 된다고 하는데 windows에선 지원버전이 넓지 않은 것같다.
scipy나 librosa같은거로하면 될것 같다.
챗봇 관련 파트에선seq2seq나 rnn, word2vec에 관한 내용을 다룬다. 여기에 있는 내용을 다시한번 읽어보고 '텐서플로와 머신러닝으로 시작하는자연어 처리'를 다시 읽어봐야겠다.
받자마자 펼쳐보고 읽었을때 '텐서플로2가 아니네?!?'하고 살짝 아쉽긴 했는데 책에는 당연하게도 좋은 내용이가득 있었다.
텐서플로2는 도서관에서빌려서 읽다만 매우 두꺼운 책으로 공부하던지 나도 공식문서로 빠르게 익힐 수 있는지 테스트 해봐야겠다.
저는 머신러닝을 리뷰어로 활동하면서 접하면서 여러번 다뤄봤지만 텐서플로는 이 책을 통해 처음 접해보았습니다. 제가 이 책을 선택한 이유는 평소 머신러닝에 관해서 학습을 하고 싶었고 텐서플로 또한 학습해보고 싶었기 때문입니다.
이 책의 특성은 텐서플로에 대해 기본적이지만 알아야 할것은 학습한 후에 머신러닝을 학습하게 하는 코스로 나와있기 때문에 머신러닝과 관계없이 오로지 텐서플로에 대해 학습을 하고 싶어하는 사람들이 봐도 좋을법한 텐서플로 학습책입니다. 그리고 머신러닝에 대해 기초적으로 탄탄하게 내용이 구성되어 있어서 쉽게 내용을 학습할 수 있다는 점입니다.
요즘 대기업에서는 A.I 및 IoT를 위해 머신러닝에 대해 개발을 추진하는 추세입니다. 머신러닝이란 기술은 인간의 뇌구조를 묘사한 뉴럴 네트웍에 기반한 기술이고 굉장히 다양한 일들을 하고 있는데 예전에는 단순히 로봇에 학습을 시켜서 사람을 따라하게 만들었지만 이제는 로봇뿐만 아니라 스피커, 청소기등등이 자신들이 가지고 있는 학습 데이터에 기반해서 판단을 내리고 행동하는 초연결시대로 나아가기 위한 기술이기 때문입니다. 그래서 구글, 삼성같은 IT관련 대기업들은 이미 머신러닝에 관련된 기술자들을 교육해서 키워내는 등 첫번째 선두로 등장하기 위해 엄청난 경쟁을 벌이고 있을 정도로 21세기의 핵심 기술중 하나입니다.
구성
Chapter 1: 머신러닝으로의 여행
Chapter 2: 텐서플로 기초학습
Chapter 3: 선형 회귀
Chapter 4: 데이터의 분류
Chapter 5: 자동화된 데이터 군집
Chapter 6: 은닉 마르코프 모델
Chapter 7: 오토인코더 살펴보기
Chapter 8: 강화학습
Chapter 9: 합성곱 신경망
Chapter 10: 순환 신경망
Chapter 11: 챗봇을 위한 시퀸스2시퀸스 모델
Chapter 12: 유틸리티
Appendix: 설치 가이드
파트별로 나누어 봤을때 1~2장은 머신러닝 기초와 텐서플로 기초에 대해 설명하고 있고 3~6장은 머신러닝의 핵심 학습 알고리즘에 대해 7~10장은 신경망 패러다임에 대해 11~12장은 이제까지 학습한 기술들을 활용한 데이터 모델 제작에 대해 설명하고 있습니다.
그리고 맨뒷장에 다른 방식으로 하는 텐서플로 설치방법이나 라이브러리 설치 방법이 나와있으니 실습해보시는 것을 추천드립니다.
개인적인 생각으로 학습은 저처럼 텐서플로를 1부터 시작해야하는 시니어이신 분들께서는 1장부터 시작하시면 좋을것 같고 어느정도 텐서플로에 대해 경험이 있으신 분들(텐서플로에 대해 기초적인 지식은 숙지하고 있다.)은 3장부터 시작하시면 좋을듯 싶습니다. 그리고 현재 텐서플로에 대해 지식이 어느정도 풍부하시거나 현직에서 사용하시면서 프로젝트를 위해서 머신러닝을 학습하시는 분들 역시 3장부터 시작하시면 좋을듯 싶습니다.(3장부터 핵심적인 내용이네요)
그리고 개인적으로 약간의 단점이 내용구성부분에서 기초적인 부분은 간단히 하고 머신러닝에 대한 내용이 많아서 좋지만 머신러닝을 활용해서 데이터 모델이나 간단한 프로그램을 만드는 실습 부분이 좀더 많았으면 더 좋았을것 같다는 아쉬움이 있습니다.
이 도서는 머신러닝과 텐서플로 관련 입문 서적이다. 머신러닝 관련 공부를 보다 본격적으로 하기 위한, 간단한 주피터 노트북 사용법과 텐서보드 사용법을 알려주는 등의 가장 기초적인 개념과 용어들을 소개하는 그러한 책이다. 'ㅅ')
이 책을 훑어 보았을 때, 흐름 구성은 잘 정리되어 있다는 생각이 든다. 세상에 존재하는 어떠한 문제를 제시하고, 이러한 임의의 문제를 머신러닝 이슈로 해결하기 위해 어떻게 사고해야 하는지, 어떠한 알고리즘이나 방법론을 도입해야 하는지, 좀 더 생각해볼 것은 무엇인지 알려주는 흐름을, 처음부터 끝까지 문제 하나하나마다 일관되게 취하고 있다.
다루고 있는 내용을 주르륵 풀어보면 아래와 같다.
선형 회귀, 로지스틱 회귀와 소프트맥스 회귀 알고리즘.
군집 알고리즘 중 k-means, SOM(자기조직화 지도). // 완전한 비지도학습 기반의 접근 방법, 즉 정답 데이터 없이 모델에 피팅해 나가는 방법
오디오 파일로부터 피처 추출.
은닉 마르코프 모델에 의한 이미지 분류.
강화학습의 목표와 한계점 등을 설명하고, 주식 거래 관련하여 간단한 구현 예시를 들고, 게임 플레이 등에 대한 응용 사례를 소개.
텐서플로를 사용하여 이미지 분류를 위한 CNN 모델 구현 방법을 기술하며, 성능 향상을 위한 팁을 제시.
맥락 정보, 챗봇 서비스를 구현하기 위한 자연어 기반의 응답 소프트웨어 구현을 위해 다계층 분류, RNN 개념을 이용하는 신경망 구현 예시 들기.
로봇에게 새로운 업무를 가르치는 방법을 설명.
...
이러한 내용들은 본인처럼 머신러닝에 관심이 있고 공부하고자 하는 초보자들에게는 시간이 흐르더라도 다시 찾아볼만한 자료임에는 틀림없을 것이다. 본인이 머신러닝 초보라고 생각한다면, 한번쯤 살펴보기를 추천한다. 'ㅅ')/
최근에 머신러닝에 관한 책들이 많이 나오고 있으면서 사람들의 관심도 많아졌다. 머신러닝이 절대 쉽지 않고 수학적인 이해와 책의 설명이 잘 되있어야한다. 필자는 예전에 "파이썬 라이브러리를 활용한 머신러닝"으로 공부를 했었다. 정말 많은 사람들이 좋은 책이라고 추천해주고 한빛미디어의 도서는 정말 깊이있고 좋은 책이라고 해서 다시한번 텐서플로에 대한 공부를 해보기 위해 책을 펼치게 되었다.
2.메인 내용 -
전체 12장으로 구성되어 있고 뒤로갈 수록 활용적인 부분이 많이 나온다. 기초적인 부분을 앞부분에서 충분히 공부를 해야 뒷부분을 공부할 수가 있다고 생각한다. 필자는 앞에 회귀 및 알고리즘 부분을 2번이상 봐야 이해가 겨우됬었다. 정말 힘들고 포기하고 싶을 순간이 많겠지만 끝까지 열심히 노력해서 읽으면 모든 퍼즐이 맞춰지면서 성취감을 얻을 수 있을 것이다.
3.나의 생각 -
정말 책을 잘 쓴 것 같은 느낌이 들었다. 솔직히 이런 어려운 책이 두꺼우면 펴서 시작할 엄두도 잘 나지 않는데 일반 책보다는 얇은 책두께에 구성은 정말 알차게 들어가 있었다. 머신러닝에 대해 공부를 해본 적이 있는 사람이라면 이해하기도 빠르고 텐서플로에서 적용하는 것만 알면 머신러닝을 복습하는데도 정말 좋은 책이라고 생각한다.
4.마무리 -
일단 머신러닝에 관심있는 사람이고, 초심자에게 정말 추천할 만한 책인 것 같다. 처음에 머신러닝을 공부하면 분명 모르는 것도 많고 이해가 안되는 부분도 많다. 하지만 그것을 힘들다고 넘어가거나 한다면 뒤에나오는 내용을 1도 이해하지 못하고 대부분 포기하게 된다. 하지만 이 책은 필요한 내용들만 잘 넣어두고 이해하기에 충분한 내용과 적절한 책 볼륨을 통해 머신러닝을 시작해보고 싶은 관련 전공자들에게 추천하고 싶다.
이 책은 머신러닝이나 텐서플로를 처음 접하시는 분에게 좋을 것 같습니다. 물론 책에 나오는 코드를 이해하려면 파이썬의 객체지향 프로그래밍 지식이 있어야 합니다. 하지만 체계적인 책의 구성 덕분에 머신러닝과 텐서플로에 익숙하지 않더라도 충분히 이 책을 따라갈 수 있습니다. 최신버전으로 지속적인 업데이트하는 소스코드가 있다고 하니 공부하는데 도움이 많이 될 것 같습니다.
최근 가장 화두가 되고 있는 머신러닝과 그 활용 텐서플로를
접할 수 있는 책이 출간 되었다.
정석대로 파이썬에 이론수업을 겸비하고 차근차근 과정을
밝아갈 수도 있겠지만 목적에 따라서는 딱 필요한 부분만의 이해와 습득이 필요 할 것이다.
그런면에서 여러모로 도움이 된다.
그렇다고 기본을 다루지 않는다는 것은 아니다.
딥러닝이라는 키워드로 무수한 책을 구매하거나 도서관을 통헤 접해 보았다.
이 책도 동일한 목적의 선상이다.
1. 머신러닝 딥러닝의 도래와 시대점령
기술의 양상이 달라지고 있다. 설계와 로직 공식의 함수화 그리고 나머지는 머신에게 넘긴다는 것이다. 개발자라는 정의가 새로와진다는 것이다. 그렇다고 대체의 의미는 아니지만 중심은 바뀔 것이다.
2.엔진의 이해
텐서플로,파이토치 등 엔진이라고 해야 할지 툴이라고 해야할지 결국은 몇줄 코딩하지 않더라도 구현이 용이하다. 구글은 colab이라는 gpu개발 환경도 서포트하기도 한다.
3.알고리즘과 신경망
기존에는 프로그램의 특징에 맞추어 갔다면 이제는 구현하고자하는 알고리즘, 데이터, 학습,검증이 더 중요하다. 무엇보다 신경망은 또 다른 접근법이다. 책을 통해 기본적인 머신러닝 딥러닝 기법들을 접하게 된다.
한빛미디어 모바일에서 작성하니 사진 첨부가 되지 않아서 사진을 첨부하여 설명한 브런치도 함께 링크로 달아본다.
https://brunch.co.kr/@younghurckc/1495
텐서플로와 머신러닝 주제로 따지자면 여러권이 필요 할 것이다.
그래서 한 권으로 충분라다. 일거 양득이라고 표현하고 싶다.
나는 한빛미디어의 '밑바닥부터 시작하는 딥러닝' 이라는 책을 통해서 '텐서플로우'를 처음 접하게 되었다. 밑바닥부터 시작하는 딥러닝 이라는 책은 처음 딥러닝을 입문하는 사람들에게 간단 명료하게 꼭 알아야 하는 것들만 콕콕 찝어서 친근하게 설명해주는 책이었다. 한빛미디어에서 나오는 딥러닝 관련 서적들은 실무자 중심으로 상세한 설명과 코드를 제공하기 때문에 파이썬을 이용하는 딥러닝 개발자들에게 매력적으로 다가오는 것 같다.
그래서 이번에는 '텐서플로'에 초점을 맞춘 '텐서플로를 활용한 머신러닝' 이라는 책에 대해서 리뷰를 하고자 한다.
이번 2019년 2월에 출간된 텐서플로를 활용한 머신러닝 이라는 책은 딥러닝 책 대가인 한빛미디어에서 출판되었다. 책은 총 세 부분으로 구성되어 있다.
머신러닝 및 텐서플로우 개념
핵심 학습 알고리즘
신경망 패러다임
머신러닝에 대한 개념이 어느 정도 탑재 되어 있고, 텐서플로우를 이용하여 딥러닝 알고리즘을 설계하고자 하는 개발자에게 적격인 책이다. 딥러닝 책이라면 제일 기본 사항인 소스코드는 깃허브에 있으며, 제일 매력적인 점은 이 소스코드는 최신 버전으로 지속적으로 업데이트 될 것 이라고 한다. 책을 들여다보면서 이슈사항이 생기면 깃에 올려봐야겠다. 책에 대한 소스코드 내용을 지속적으로 신경쓰고, 깃에 풀 요청을 하거나 새로운 이슈를 올리라고 써놨는데 이 점에서 독자들과 소통하려는 점이 굉장히 마음에 든다. 마치 액티브한 개발자와 커뮤니티를 공유하는 느낌이랄까.
머신러닝의 기초 개념에서 가장 중요한 것은 '블랙박스' 라고 생각한다. 전통적인 프로그래밍은 입력값에 대해 정해진 출력값을 가지게 되는데, 반면 머신러닝은 입력값과 출력값 간의 관계가 명확히 이해되지 않는 상황에서의 문제들을 해결 할 수 있다. 사람이 풀 수 없는 문제들을 머신러닝은 이전의 경험으로부터 학습하여 미래의 상황을 풀어 낼 수도 있다는 것을 의미하게 된다.
다음 그림과 같이 머신러닝이 문제를 해결하는 방법은 만족스러운 결과를 얻을 때까지 블랙박스의 파라미터를 튜닝해나가는 과정이라고 할 수 있다. 이 책에서는 독자들의 설명을 돋우기 위해서 필요한 최소한의 그림만 명료하게 나타낸 것이 특징이다. 그래서 머신러닝 및 텐서플로에 관한 정보를 더 많은 정보를 텍스트로 얻되, 도식 설명이 필요한 내용에 대해서는 그림을 통해서 이해를 돕고 있다.
또한, 텐서플로를 활용한 머신러닝 책에서는 이전의 다른 책에서는 볼 수 없었던 연습문제들이 등장한다. 사실, 이전의 머신러닝 혹은 딥러닝 책들은 관련 내용을 설명하기에 급급했던 느낌이라면, 이 책은 순조롭고 여유롭게 개념을 설명하고 있다는 느낌을 받았다. 아래 사진처럼 각 장의 연습문제를 둠으로써 독자들이 머신러닝 및 텐서플로 개념을 읽는 것에 그치지 않고 '이해' 할 수 있도록 하였다. 이러한 연습문제 형식은 '수학익힘책' 과 같은 느낌을 준다. 이 책의 별명을 '머신러닝익힘책' 이라고 해도 좋을 것 같다.
이 책이 가진 장점은 정리해보면 다음과 같다.
독자와 소통가능한 깃 허브 운영 및 소스코드 최신 버전 관리
독자들의 깊은 이해를 돕기 위한 설명과 간단 명료한 그림
'머신러닝 익힘책' 느낌을 주는 연습문제
성능 개선을 위한 팁 수록
텐서플로를 활용하기 위한 입문서
텐서플로를 활용한 머신러닝 책은 텐서플로를 이용하여 딥러닝 프레임워크를 작성하고자 하는 초급-중급 개발자에게 적합한 입문서 인 것 같다. 그림으로 쉽게 개념을 익힐 수 있어서 좋고, 연습문제를 풀어 나가며 실제 동작하는 예제들을 실행해보면서 텐서플로 및 머신러닝에 대한 개념을 처음부터 설계 할 수 있는 책이다. 텐서플로에 입문하는 개발자라면 추천하고 싶은 책이다.
IT와 관련 된 기사를 찾아 보면 머신러닝, 딥러닝에 대한 얘기를 빼 놓을 수 없는 시대에 살고 있다. 4차산업혁명과 더불어 가장 많이 언급 되는 AI 기술의 구체화 된 기술로 그 위상을 높여가며 제대로 자리를 잡아 가고 있는 머신러닝과 딥러닝에 대한 관심이 작년 부터 커져 가기 시작했고, 자연스레 딥러닝 프레임워크의 절대 군주로 군림하고 있는 텐서플로우에 대한 흥미가 나날이 점증 되었다. 머신러닝과 딥러닝에 대한 관심과 흥미는 계속 커져갔지만 막상 무엇부터 해야할지, 어떻게 시작해야할지 막막하기만 했다. 수알못인 내가 머신러닝과 딥러닝을 어떻게 공부해야 할지 부터 막막했고, 수식이 난무하는 도서를 접하면 자연스레 머신러닝과 딥러닝에 대한 흥미가 반감 되어 버릴 것 같은 생각에 지레 시작 조차 하기에 앞서 지레 겁을 먹고 있는 건 아닌가 하는 회의가 들었다. 그렇게 시간이 흘러 시작할 엄두를 갖지 못 한 채 해가 바뀌었고 텐서플로우와 딥러닝에 대한 관심은 이전에 비해 급격히 줄어 들어 버렸다. 그러다 한빛 미디어의 '나는 리뷰어' 이벤트에 응모하게 되었고 운이 좋게도 당첨 되어 머신러닝에 관련 된 도서를 제공 받게 되었다. 텐서플로우와 딥러닝을 공부하라는 신의 계시였을까? 딥러닝에 대한 겁은 저리 치우고 책을 잡고 무작정 부딪쳐 보기로 했다.
책 겉표지에 자리 잡고 있는, 두 볼짝이 발그레한 신사의 표정이 참으로 인상적이다. 더불어 패션 센스도 좋아 보인다.
각설하고 이 책은 머신러닝/딥러닝을 향한 여정을 텐서플로우와 함께 한다. 현재 텐서플로우는 파이썬과 C++, Javascript에 대한 API 를 제공하고 있는데, 텐서플로우에 대한 내용을 담고 있는 웬만한 서적은 파이썬을 기반으로 내용이 구성 되어 있는 형태가 보편적이다. 이 책 역시 파이썬 기반의 텐서플로우로 내용이 전개 된다. 그렇기 때문에 이 책을 통해 텐서플로우를 공부하고자 한다면 당연히 파이썬에 대한 기본 문법 지식은 필수이고 기본적인 프로그래밍 활용 능력이 선행 되어 있어야 책을 읽고 실습하기에 수월하리라.
파이썬 코드와 텐서플로우를 통해 머신러닝/딥러닝에 대한 주요 개념이 구현 되지만, 머신러닝과 딥러닝의 기본 개념을 이해하는 것이 선행되어야 하기 때문에 이 책은 도입부에서 머신러닝/딥러닝에 대한 기초 개념을 쉬운 표현과 그림을 통해 큰 흐름을 이해할 수 있게 돕고 있다. 또한 책 중간 중간에 연습문제를 구성하여 개념을 제대로 이해하고 있는지 묻고 있으며 연습문제에 대한 저자의 해답까지 함께 제공 되고 있어 여러모로 도움이 많이 된다.
챕터의 마지막 장은 요약으로 마무리 되는데, 이 요약을 통해 챕터의 내용이 깔끔하게 정리 된다.
책 도입부를 벗어 나면 본격적으로 텐서플로우 기초학습이 진행 되는데, 이 챕터에서는 텐서플로우의 모든 문법을 다루고 있지는 않지만 앞으로 전개 될 챕터들의 내용을 실습하는데에 있어 가장 최소한으로 필요한 문법들을 다루고 있기 때문에 추가적으로 텐서플로우의 문법에 대한 궁금증이 생기거나 이해가 어려운 부분은 텐서플로우 공식 문서를 통해 해결해야 하리라.
텐서플로우의 기초학습을 마치면 드디어 머신러닝/딥러닝의 핵심 학습 알고리즘과 조우하게 된다. 선형회귀, 데이터의 분류, 자동화 된 데이터 군집, 은닉 마르코프 모델 등의 개념들과 마주하게 되는데 책의 부제인 '그림으로 쉽게 개념부터 익히는 머신러닝, 딥러닝 입문서'라는 표현이 명시하고 있듯이 다양한 그림과 저자의 상세한 설명, 무엇보다 군더더기 없는 번역이 하모니를 이루게 되어 해당 개념들을 이해하는데 상당히 많은 도움이 되었다.
핵심 학습 알고리즘에 대한 이해가 어느 정도 뒷받침 되면 이윽고 신경망 패러다임 파트에서 오토인코더, 강화학습, 합성곱 신경망, 순환 신경망, 시퀀스2시퀀스 모델, 유틸리티 등에 대한 내용이 전개 되는데, 뒤로 갈수로 해당 개념에 대한 이해가 어려워 지는 건 사실이다. 그럼에도 불구하고 전체적인 개념의 흐름을 이해하는데에는 큰 무리가 없었다. 책 내용을 한 번 쓱 읽고 단번에 이해한다면 천재 아니겠는가? 이 책은 당연히 추후에도 여러 차례 복습을 통해 자주 만나야 하기 때문에 책상에 고이 모셔 두어야 한다.
머신러닝/딥러닝에 대한 두려움이 커서 시작을 망설이고 있다면, 이 책과 함께 머신러닝/딥러닝에 대한 여정의 첫 발을 내딛어 보는 게 어떨까? 아 물론, 텐서 플로우도 함께 말이다.
P.S : 본 도서는 한빛미디어 '나는 리뷰어' 이벤트에 당첨 되어 제공 받은 도서를 바탕으로 작성된 후기입니다.