카테고리 보관물: News

핸즈온 머신러닝 2/E 번역 후기

핸즈온 머신러닝 2판(Hands-on Machine Learning with Scikit-Learn, Keras & TensorFlow)의 번역을 마치고 후기를 남깁니다. 2판 원서는 작년 9월에 나왔습니다. 1판에 이어 역시 아마존 베스트 셀러가 되었네요. 번역 완료는 예상보다 조금 늦었습니다. 많은 분들이 기다리실텐데 죄송합니다. ㅠ.ㅠ 아마 4월 중순에 서점에서 만날 수 있을 것 같습니다.

도움을 주신 한빛미디어 윤나리 님, 교정을 봐주신 백지선 님께 감사드립니다.

2판은 1판에 비해 딥러닝 부분이 대폭 바뀌었고 분량도 크게 늘어났습니다. 텐서플로 2가 릴리스되었고 케라스가 핵심 API로 채택되면서 어느정도 예상되었습니다. 원서는 800페이지가 조금 넘습니다. 번역서는 900페이지를 훌쩍 넘길 것 같습니다. 또 원서와 마찬가지로 풀 컬러로 인쇄됩니다. 그럼 어떤 부분이 바뀌었는지 간단히 정리해 보겠습니다.

신경망을 소개하는 챕터를 유지하면서 케라스 소개를 추가했습니다. 특히 케라스를 사용한 사용자 정의 모델, 층, 측정 지표, 손실 함수 등을 자세히 소개한 점이 좋습니다. 새롭게 소개된 tf.data와 TFRecord, TF Datasets을 챕터 하나를 할애하여 자세히 설명하고 있습니다.

합성곱 신경망의 서두는 1판의 내용을 유지하면서 새로운 모델과 객체 탐지(object detection)와 시맨틱 분할(semantic segmentation)을 추가했습니다. 순환 신경망은 많이 바뀌었습니다. 기계 번역을 조금 더 자세히 설명하고 어텐션 메카니즘과 트랜스포머를 소개합니다. 2판에서는 RNN과 CNN을 사용한 시퀀스 처리에 별도의 장을 할애했습니다. 이름과는 달리 1D 합성곱이 끝에 살짝 나와서 사실 RNN 장이 거의 두 배로 늘어난 셈입니다.

1판의 오토인코더 장에 GAN이 추가되었습니다. DCGAN, ProGAN, StyleGAN을 포함합니다. GAN만 보아서는 조금 아쉽습니다. 미술관에 GAN 딥러닝을 함께 보면 도움이 될 것 같습니다. 강화학습 챕터도 TF-Agents를 추가하면서 거의 두 배로 분량이 늘어났습니다. 늘어난 분량 덕택에 쪽수로 보면 2/3 정도가 딥러닝을 다루게 되었습니다.

1부는 비지도 학습 장이 추가된 것 외에는 큰 변화가 없습니다. 대부분 사이킷런 최신 버전을 반영하고 모호한 표현을 다듬거나 설명을 보완했습니다. 비지도 학습은 1판에서 아쉬웠던 부분 중 하나입니다. 2판에서는 사이킷런을 사용해 K-평균, DBSCAN, 가우시안 혼합 모델을 자세히 소개합니다. 알고리즘 소개에 그치지 않고 여러 활용 사례를 함께 다루고 있어서 좋았습니다.

마지막으로 텐서플로 분산 훈련과 배포에 관한 장도 많이 바뀌었습니다. 충분하지는 않지만 구글 클라우드의 AI 플랫폼을 다루고 있어서 좋았습니다. 때마침 한국에도 구글 클라우드 리전이 생겼으니까요. 구글 클라우드 AI 플랫폼에 대해 조금 더 깊게 다루는 다른 책을 기대하고 있습니다.


번역하는 동안 참 많은 일들이 있었습니다. 작년 말에 오랫동안 미뤄왔던 집수리를 시작했습니다. 짐을 창고에 맡기고 가족이 원룸으로 피신해서 두 달을 살았습니다. 아마 다시는 안할 것 같습니다. ㅠ.ㅠ 몸은 힘들고 고생이 많았지만 지금은 깨끗한 집에서 잘 지내고 있습니다.

이보다 조금 더 일찍 작은 프로젝트에 참여하게 되었습니다. 정해진 기간내에 일을 마쳐야 한다는 강박이 모든 사람을 힘들게 하는 것 같습니다. 원치 않는 상처를 받고 원치 않는 상처를 주고 맙니다. 돌이켜 보면 후회가 많이 됩니다. 힘들 때마다 글쓰는 것이 위로가 되었습니다. 책은 화를 내거나 불평하지 않고 온전히 저만의 세상을 만들어 주기 때문이죠.

지금은 코로나 바이러스로 전 세계가 몸살을 앓고 있습니다. 다행히 제 주변에는 아픈 사람이 없네요. 연일 들려오는 뉴스를 보면 꿈인지 현실인지 믿기지 않습니다. 책 저자인 오렐리앙은 에러타를 등록하면 회신을 잘 해줍니다. 왜 오류가 생겼는지 설명하거나 오류 같지만 아닌 이유를 설명해 주기도 합니다. 그런데 지난해 말부터 에러타에 회신이 없었습니다. 이사를 했기 때문에 바빠서 그런가 보다 생각했죠. 몇 달 만에 메일이 왔는데 그동안 매우 아팠다고 합니다. 친절하게도 코로나 바이스러스 때문에 한국 걱정도 해주었습니다(한 달 전이라 한국이 위험하다고 생각한 것 같습니다. 지금은 정 반대가 되었죠). 오렐리앙도 어서 건강을 찾아 자리를 털고 일어났으면 좋겠습니다.

코로나 바이스러스 때문에 3월 텐서플로 데브 서밋이 취소되어 (구글에서 예약해 준) 호텔과 항공권을 모두 취소했습니다. 또 5월에 초청받은 구글 IO도 취소되었죠. 한국 커뮤니티를 알릴 수 있는 좋은 기회였는데 아쉬웠습니다(심지어 텐서플로 데브 서밋에 제 얼굴과 이름이 나왔는데 말이죠). 아마 올 상반기에는 국내외를 막론하고 개발자를 위한 이벤트가 열리기 어려울 것 같습니다.


이제 곧 텐서플로 2.2.0 버전이 릴리스될 예정입니다. 새 버전에 맞춰 깃허브 노트북을 모두 다시 검토하고 노트북에 있는 텍스트도 번역해야 합니다. 또 그간 미뤄왔던 텐서플로 문서 번역에도 더 공을 들여야겠습니다.

올해는 책 복이 많을 것 같습니다. 머신러닝 분야의 또 다른 좋은 두 책이 기다리고 있기 때문입니다. 하나는 세바스찬 라시카의 Python Machine Learning 3/E입니다(2판은 머신 러닝 교과서로 번역되었습니다). 이미 아마존에서 높은 인기를 얻고 있습니다. 역시 텐서플로 2를 기반으로 많은 변화를 주었고 GAN과 강화학습이 추가되었습니다. 또 하나는 케라스 창시자인 프랑소와 숄레의 Deep Learning with Python 2/E입니다(1판은 케라스 창시자에게 배우는 딥러닝으로 번역되었습니다). 프랑소와의 책도 Keras 패키지에서 tf.keras로 바꾸고 CNN, RNN의 고급 기법을 많이 다룰 것으로 예상됩니다. 프랑소와의 책은 기술 뿐만 아니라 딥러닝에 대한 저자의 견해를 읽을 수 있기 때문에 기대가 많이 됩니다.


쓰다 보니 길어졌네요. 요즘엔 건강이 최곱니다. 코로나 바이러스 주의하시구요. 핸즈온 머신러닝 2/E은 곧 찾아 뵙겠습니다. 기대해 주세요! 🙂

TensorFlow 2.2.0 RC0 Release

텐서플로 2.2.0 RC0이 릴리스되었습니다.

2.2.0 버전에서 가장 눈에 띄는 것은 케라스 커스텀 훈련 루프를 위한 train_step 함수입니다. Model 클래스에서 이 함수를 오버라이드하면 자신만의 훈련 루프를 손쉽게 작성할 수 있습니다.

텐서플로 2.2.0 RC0 버전은 다음 명령으로 설치할 수 있습니다.

# for cpu or gpu, for macOS
$ pip install --upgrade --pre tensorflow

# cpu-only
$ pip install --upgrade --pre tensorflow-cpu

TensorFlow 2.1.0 Release

텐서플로 2.1.0이 릴리스되었습니다.

2.1.0 버전이 파이썬 2.7.x를 지원하는 마지막 버전입니다. tensorflow 패키지가 기본으로 GPU를 지원합니다. 이 패키지는 GPU 유무에 상관없이 동작합니다. 2.1.0버전부터 CUDA 10.1과 cuDNN 7.6 버전을 사용합니다. CPU만 사용하려면 tensorflow-cpu 패키지를 설치하세요.

윈도우용 텐서플로는 비주얼 스튜디오 2019 버전 16.4를 사용하여 빌드되었습니다. 이를 사용하려면 여기에서 “Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019″를 설치하세요.

추가된 기능과 버그 수정의 자세한 내용은 릴리스 노트를 참고하세요.

텐서플로 2.1 버전은 다음 명령으로 설치할 수 있습니다.

# for cpu and gpu
$ pip install --upgrade tensorflow
# cpu-only
$ pip install --upgrade tensorflow-cpu

Python Machine Learning 3/E !!!

I’m really happy to be the first to see Sebastian Raschka and Vahid Mirjalili’s Python Machine Learning 3/E, the best seller in Machine Learning and deep learning category of Amazon. Compared to 2nd edition, the contents of Deep Learning part are fully revised.

3rd edition uses TensorFlow 2. It compares TensorFlow 1 and 2. And it also introduces TensorFlow Datasets and Keras API. You will learn how to create a custom layer and custom model using Keras API. Gender classification example is added using CelebA dataset. Attention mechanism and Transformer are added in RNN chapter.

Moreover, there are new chapters for Generative Adversarial Networks(GANs) and Reinforcement Learning in 3rd edition! Starting with Autoencoder you can implement DCGAN and WGAN-GP. In RL chapter, it introduces Markov decision process, Monte Carlo, SARSA and Q-learning. Also you will learn how to train the DQN model using Gym. It dedicated more than 100 pages to these two new chapters. Whole length of the book is now 770 pages!

There are so many Machine Learning and Deep Learning books. It’s not easy to pick a good book. This book is one of the few really excellent Machine Learning book. If you already choose this book from a lot of books, you’re very lucky to have it. If you have read 2nd edition like me, you can’t find any reason not to buy the 3rd edition! 🙂

All you need to know the latest technology in this field is just enjoying this book and, as always, just waiting the next edition of the authors!

Thanks to Sebastian and Vahid! Keep going on!

머신러닝, 딥러닝 분야 베스트 셀러인 세바스찬 라시카와 바히드 미자리리의 파이썬 머신러닝 3판을 가장 먼저 볼 수 있는 행운을 얻었습니다. 2판과 비교했을 때 딥러닝 파트의 내용이 전면 개정되었습니다.

3판은 텐서플로 2를 사용합니다. 친절하게도 텐서플로 1과 2를 비교하여 설명해 줍니다. 텐서플로 데이터셋 API와 케라스 API를 설명하고 사용자 정의 층과 모델을 만드는 방법도 담고 있습니다. CelebA 데이터셋 이미지를 사용한 성별 분류 예제가 추가 되었습니다. 순환 신경망 장에서는 어텐션 메카니즘과 트랜스포머를 추가했습니다.

3판에서는 여기에서 그치지 않고 GAN와 강화학습에 관한 장이 추가되었습니다. 오토인코더로 시작하여 DCGAN과 WGAN-GP를 직접 구현해 봅니다. 강화학습은 마르코프 결정 과정을 소개하는 것으로 시작하여 몬테 카를로, SARSA, Q-learning을 다룹니다. 또한 Gym을 사용하여 DQN 모델을 훈련합니다. 이 2개 장에 100여 페이지를 할애했습니다. 덕분에 전체 책은 770페이지로 늘어났습니다.

머신러닝, 딥러닝 책이 매우 많습니다. 그 중에 좋은 책을 고르는 것은 쉽지 않습니다. 이 책은 손에 꼽을 수 있는 몇 안되는 정말 좋은 머신러닝 책입니다. 많은 책 중에 이 책을 골랐다면 정말 운이 좋은 것입니다. 저처럼 여러분이 2판을 읽은 독자라면 3판을 구매하지 않을 이유를 찾을 수 없을 것입니다!

머신러닝과 딥러닝의 최신 기술을 알고 싶다면 이 책을 읽으세요. 그리고 늘 그렇듯이 저자들의 다음 책을 기다리기만 하면 됩니다! 🙂

세바스찬과 바히드에게 감사합니다!

TensorFlow 2.1.0 RC0 Release

업데이트: 텐서플로 2.1.0 RC2가 릴리스되었습니다. CUDA 10.1 버전을 사용해야 합니다.

업데이트: 텐서플로 2.1.0 RC1이 릴리스되었습니다.

텐서플로 2.1.0 RC0이 릴리스되었습니다. 텐서플로 1.15.0 버전부터 CPU와 GPU 버전이 통합되었습니다. CPU 버전만 설치하려면 tensorflow-cpu 패키지를 설치하세요.

2.1.0 버전이 파이썬 2.7.x를 지원하는 마지막 버전입니다. 내년 1월에 파이썬 2.7.x에 대한 지원을 중단합니다.

tf.keras 모델의 fit_generator, evaluate_generator, predict_generator, train_on_batch, test_on_batch, predict_on_batch 메서드가 즉시실행 모드를 위한 run_eagerly 메서드를 지원합니다. 기본값인 tf.function 방식도 버그 수정되었습니다.

fit_generator, evaluate_generator, predict_generator 메서드는 deprecated 됩니다. 대신 제너레이터와 시퀀스 데이터를 받을 수 있는 fit, evaluate, predict 메서드를 사용하세요.

2.0 버전에 추가된 Normalization 클래스를 포함하여 TextVectorization 클래스가 2.1 버전에 tf.keras API에 포함되었습니다. tf.keras.preprocessing 패키지의 사용 방법에 대한 간단한 예시는 ‘텐서플로 2.0 무엇이 바뀌었을까요?‘ 슬라이드 39번을 참고하세요.

2.1 버전에서 클라우드 TPU를 지원합니다. 하지만 아직 실험적입니다. 그외 많은 기능이 개선되고 변경되었습니다. 자세한 내용은 릴리스 노트를 참고하세요.

텐서플로 2.1.0 RC 버전은 다음 명령으로 설치할 수 있습니다.

$ pip install --upgrade --pre tensorflow

GDE Summit + TensorFlow World를 다녀와서

올해 봄 ML GDE가 되고 나서 처음 구글 행사에 초청을 받아 다녀왔습니다. GDE 서밋은 전 세계 GDE(Google Developer Expert)를 초청하는 행사입니다. 웹, 안드로이드, 클라우드, 머신러닝 등 다양한 분야에서 많은 GDE들이 활동하고 있습니다.

GDE는 구글을 대표하거나 구글 제품의 홍보 대사가 아닙니다. 각 분야에서 구글 제품을 사용하는 개발자들을 돕고 구글 제품에 대해 다양한 의견을 제시하는 봉사자이자 전문가 집단입니다. 구글은 GDE의 활동을 지원하고 개인의 역량을 높일 수 있도록 돕고 있습니다.

IMG_0963.JPG

이 중에서도 머신러닝 GDE들의 숫자가 가장 크게 늘어나고 있습니다. 머신러닝 분야 자체가 성장하고 있기도 하지만 머신러닝 GDE들이 정말 활발히 활동하는 것 같습니다. 다른 분야와 다르게 컴퓨터 과학 뿐만 아니라 다양한 이력을 가진 GDE들이 많았습니다. 분야별 토론에서도 머신러닝 GDE들은 끝까지(!) 가장 활발하게 토론을 이어갔습니다. 때로는 날카로운 비판도 서슴치 않았습니다.

하지만 단지 비판이나 의견 제시에 끝나지 않습니다. 세부 토론을 거쳐 그 자리에서 개발자들을 도울 수 있는 아이디어를 내고 스스로 조직화할 계획을 세웠습니다. 놀랍지 않은가요? 이 자리에 참여할 수 있다는 것만으로도 정말 큰 영광입니다. 혹시 여러분이 구글러로부터 GDE를 해보라고 추천받는다면 두 번 생각할 것도 없습니다. IT 분야에서 가장 멋진 경험을 시작할 수 있는 기회가 생긴 것입니다. 🙂

올해 처음 열린 TensorFlow World 컨퍼런스는 오라일리가 주관하는 행사입니다. 이 컨퍼런스는 GDE 서밋이 끝나고 바로 다음날 이어서 서니베일 근처의 호텔에서 진행되었습니다. 감사하게도 일부 머신러닝 GDE들에게 컨퍼런스를 참여할 수 있는 기회가 제공되었습니다.

IMG_0922.jpg

텐서플로 월드에서 많은 세션이 열렸습니다. 머신러닝 파이프라인을 위한 TensorFlow Extended(TFX), 웹 브라우저 기반의 머신러닝 작업을 위한 TensorFlow.js, 안드로이드는 물론 아두이노와 IoT 기기를 위한 TensorFlow Lite에 대한 내용이 많았습니다. 앞으로 많은 스토리가 등장할 분야임에 틀림없는 것 같습니다. 텐서플로 월드에서 열린 일부 세션은 유튜브에서 볼 수 있습니다.

텐서플로 월드는 총 4일 동안 진행되었습니다. 1,2일차에는 교육, 튜토리얼, 컨트리뷰터 서밋이 열렸습니다. 저는 TensorFlow.js, Swift for TensorFlow 튜토리얼과 컨트리뷰터 서밋에 참가했습니다. 튜토리얼은 오전, 오후에 각 3시간씩 진행되었습니다. TensorFlow.js 튜토리얼은 단순히 코드랩을 따라하는 형식으로 진행되었기 때문에 아쉬웠습니다. Swift for TensorFlow는 스위프트 언어 자체와 텐서플로를 모두 다루어야 했기 때문에 시간이 절대적으로 부족했습니다.

텐서플로 문서 번역에 기여한 기회로 텐서플로 컨트리뷰터 서밋에도 참여했습니다. 다양한 SIG 그룹에 대해 자세히 알 수 있었습니다. 또 텐서플로 문서 관리자인 빌리와도 반갑게 인사를 나누고 인증샷을 찍었죠(생각보다 훨씬 키가 크더군요)!

IMG_1027.JPG

컨트리뷰터 서밋에서 “I contribute to TensorFlow” 배지를 나누어 주어서 백팩에 자랑스럽게 붙였습니다. 돌아오는 비행기에서 짐을 넣을 자리가 부족해 승무원이 옆 자리 칸에 올려 주었는데 나중에 확인해 보니 검은 배지가 사라졌습니다! ㅠ.ㅠ 아마도 공간이 부족해서 가방을 밀어 넣다 보니 떨어져서 어딘가에 굴러다닐 것으로 생각되었습니다. 찾지 못하면 너무 아쉬울 것 같았습니다.

도착 몇 시간을 남겨 놓고 승객들이 모두 내리면 같이 찾아보자고 승무원에게 부탁했습니다. 그런데 한 승무원이 바닥에 떨어진 배지를 본 것 같다며 주위 바닥을 모두 샅샅이 뒤져서 찾아 주었습니다! 정말 어찌나 고맙던지요!

IMG_5552.JPG

몸은 피곤했지만 (집에 와서 14시간을 잤습니다 @.@) 정말 큰 동기부여를 얻은 좋은 기회였습니다. 같이 참석했던 다른 GDE들을 보면서 부족함을 많이 느꼈습니다. 그렇다고 너무 주눅들거나 겁낼 필요는 없습니다. 항상 발전해 가는 과정 자체가 즐거움이니까요! 😀

‘미술관에 GAN 딥러닝’이 출간되었습니다!

x9791162241080

데이비드 포스터David Foster가 쓴 아마존 베스트셀러 ‘Generative Deep Learning’를 번역한 ‘미술관에 GAN 딥러닝‘이 출간되었습니다.

이 책은 생성 모델링 분야에서 주목받는 최신 딥러닝 기술을 소개합니다. 이 책에 담긴 예제를 만들어 보면서 작동 원리를 터득할 수 있습니다. 특히 짧은 우화를 사용하여 어렵게 느껴질 수 있는 알고리즘을 쉽고 재미있게 설명해 줍니다. 저자의 스토리텔링 기술이 정말 탁월합니다.

이 책이 다루고 있는 모델은 오토인코더, 변이형 오토인코더, DCGAN, WGAN, WGAN-GP, Cycle GAN, Neural Style Transfer, LSTM, Encode-Decoder 모델, 질문-대답 생성기, MuseGAN, World Model, Transformer 등입니다. 이 책과 함께 흥미로운 생성 모델의 세계로 탐험을 떠나 보시죠! 🙂

온라인 서점에서 예약 판매중입니다! [교보문고] [Yes24]

감사합니다!!!

GDE Summit 2019

올해 구글 Machine Learning GDE가 된 후 처음으로 초청을 받아 GDE Summit에 참가했습니다. 처음이라 모든게 낯설지만 고참(!)들의 귀뜸으로 무사히 하루를 보냈습니다. 샌프란시스코의 날씨는 확실히 화창하고 맑습니다. 먼거리를 이동한터라 초저녁만 되면 졸음이 쏟아지네요. 졸음을 참고 몇 글자 남깁니다.

전 세계에서 400명이 넘는 GDE가 모였습니다. 한국에서도 다섯 분이 참여하셨습니다. 그 중에 머신러닝 GDE는 두 명입니다. 다른 분들은 여러 사정상 함께하지 못해 아쉬웠습니다.

IMG_0883

GDE 행사의 세세한 내용은 규정상 자세히 언급할 수 없어서 아쉽습니다. 키노트를 마치고 각 기술 분야별 세션이 이어졌습니다. 핸즈온 머신러닝의 저자 오렐리앙 제롱도 싱가폴 머신러닝 GDE로 참석했습니다. 처음 만났지만 그동안 주고 받은 이메일 때문인지 익숙하게 인사를 나누었습니다. 온라인에서와 마찬가지로 보자마자 인보이스(?) 보내라고 다그치네요. ㅎㅎ

그리고 인증샷! GDE Summit에서도 오렐리앙은 당연 인싸 중 한명이었습니다! 🙂

IMG_4740

제가 들고 있는 책은 핸즈온 머신러닝의 2판입니다. 기대해 주세요! 😀

TensorFlow 1.15.0 Release, Keras 2.3.1 Release

TensorFlow 1.15.0 버전이 릴리스되었습니다. 알려진 것처럼 1.15.0 버전은 텐서플로의 마지막 1.x 버전입니다. 1.15.0 버전부터 tensorflow 패키지가 CPU와 GPU를 모두 지원합니다. 시스템에 GPU가 장착되어 있으면 기본적으로 GPU 모드로 작동합니다. 다운로드 크기 때문에 CPU 버전으로 설치하려면 tensorflow-cpu 패키지를 설치하세요. tensorflow-gpu 패키지도 아직 제공합니다.

# for CPU and GPU
$ pip install --upgrade tensorflow==1.15.0
# only GPU
$ pip install --upgrade tensorflow-gpu==1.15.0
# only CPU
$ pip install --upgrade tensorflow-cpu==1.15.0

텐서플로 1.15.0 버전은 compat.v2 모듈 아래 텐서플로 2.0 기능을 완전히 구현하였습니다. 1.x 기능은 compat.v1 모듈로 참조할 수 있습니다. 1.x와 2.0 버전 변화에 따른 영향을 최소화하려면 두 모듈을 사용하여 코드를 만드세요. 케라스 모델의 save() 메서드의 기본 저장 포맷이 텐서플로의 SavedModel 포맷으로 바뀌었습니다. 또 케라스 층에서 float32가 기본이 됩니다.

또 케라스 2.3.0 버전의 버그를 수정한 2.3.1 버전이 릴리스되었습니다.

TensorFlow 2.0.0 Release!!!

텐서플로 2.0이 릴리스되었습니다! 예상보다 정식  버전이 빨리 나왔네요. 텐서플로 2.0에 대한 소개는 이펙티브 텐서플로 2.0릴리스 노트를 참고하세요.

텐서플로 2.0 버전은 pip 명령으로 설치할 수 있습니다.

# for cpu
$pip install --upgrade tensorflow
# for gpu
$pip install --upgrade tensorflow-gpu

코랩(Colab)은 아직 1.14.0 버전입니다. 🙂