태그 보관물: François Chollet

[Deep Learning with Python] 2판 번역 완료!

케라스(Keras) 라이브러리를 만든 프랑소와 숄레(François Chollet)의 딥러닝 책인 <Deep Learning with Python>의 2판 번역을 마쳤습니다. 원서는 현재 아마존에서 신경망 분야에서 5위에 랭크되어 있습니다. 예상대로 프랑소와의 책이라 매우 높은 인기를 얻고 있네요. 🙂

2판은 1판에 비해 많은 내용이 추가되고 콘텐츠 배열에도 변화가 있었습니다. 가장 대표적인 변화는 텐서플로 2.0 적용, 새로운 케라스 API, 합성곱과 순환 신경망 예제, 트랜스포머 추가 등입니다.

1판과 2판의 차이를 한눈에 보기 쉽게 그림으로 그려보았습니다. 그 아래에는 조금 더 자세히 2판의 장마다 1판의 어떤 부분과 연관이 있는지 새롭게 추가된 부분은 무엇인지 요약했습니다. 책을 보시는데 도움이 되셨으면 좋겠습니다. 이 번역서는 길벗 출판사를 통해 <케라스 창시자에게 배우는 딥러닝 2판>으로 곧 찾아뵙겠습니다! 🙂

  • 1장에 큰 변화는 없고 그간 바뀐 세상 물정을 반영했습니다. 1장에서부터 트랜스포머스를 언급합니다.
  • 2장의 구성은 1판과 비슷합니다. 아핀 변환, 경사 하강법, 연쇄 법칙에 대해 그림과 코드을 추가하여 자세히 설명합니다. 텐서플로의 그레이디언트 테이프를 소개하고 이를 사용해 간단한 완전 연결 신경망을 “밑바닥”부터 구현하는 예제가 추가되었습니다.
  • 1판 3장의 전반부가 확대되어 2판에서는 독립적인 3장이 되었습니다. 텐서플로와 케라스 히스토리를 조금 더 자세히 소개하고 딥러닝 작업 환경을 설명하는 부분에 코랩이 추가되었습니다. 2장에서 살짝 언급한 텐서, 변수, 그레이디언트 테이프를 다시 자세히 소개하고, 전반적인 케라스 모델 API를 소개합니다. 특히 build, call, __call__ 메서드의 존재 이유를 상세히 설명하는 부분이 눈에 띄네요.
  • 4장은 1판의 3장 후반부 예제 세 개(이진 분류, 다중 분류, 회귀)를 그대로 사용하며 내용도 거의 변화가 없습니다.
  • 1판 4장의 일부 절들이 확장되어 2판의 5장이 되었습니다. 특히 1판에 없던 과대적합의 발생 원인과 일반화란 무엇인지에 대해 매우 상세하게 설명하고 있는 점이 돋보입니다. 또한 훈련 성능을 높이기 위한 방법도 추가되었습니다.
  • 6장은 1판 4장의 마지막 절에서 간단히 소개한 머신러닝 워크플로를 확장했습니다. 문제 정의, 데이터 수집, 데이터 관련 주의 사항, 성공 지표, 전처리, 모델 개발, 규제, 튜닝, 여러가지 배포 옵션, 최적화, 유지 관리까지 모델의 전 생애주기를 다룹니다.
  • 1판은 비교적 책 후반에 함수형 API와 텐서보드를 소개합니다. 2판에서는 중간 부분으로 전진 배치 되었습니다. 2판 7장에서는 함수형 API는 물론 모델의 서브클래싱 방법, 이들을 섞어 쓰는 방법까지 자세히 소개합니다. 또한 사용자 정의 지표, 사용자 정의 콜백, 사용자 정의 훈련 루프까지 체계적으로 설명을 풀어갑니다. 훈련과 추론 로직을 완전히 밑바닥부터 새로 만드는 방법과 기존의 fit(), evaluate()를 사용하면서 나만의 알고리즘을 적용하는 방법도 모두 설명하네요.
  • 1판의 5장 합성곱 신경망이 2판에서는 두 개의 장으로 확대되었습니다. 앞부분의 고양이vs강아지 데이터셋을 사용한 컨브넷 예제들은 8장이 되었고 뒷부분의 합성곱 시각화 부분은 9장으로 넘어갔습니다. 8장의 내용은 이전과 거의 동일합니다. 주된 변경 사항은 기존의 제너레이터를 사용한 모델 훈련과 데이터 증식을 텐서플로 데이터셋과 케라스에 추가된 이미지 증식 층으로 바꾸었습니다. 덕분에 코드는 훨씬 간결하고 이해하기 쉬워졌네요. 이제 고급 컴퓨터 비전을 다루는 9장으로 넘어갑니다.
  • 9장은 고급 컴퓨터 비전을 다룹니다. 1판에 없었던 Oxford-IIIT Pet 데이터셋을 사용한 이미지 분할 예제가 추가되었습니다. 그다음 1판 7장에 있던 고급 딥러닝 구조(잔차 연결, 배치 정규화, 깊이별 분리 합성곱)가 9장으로 옮겨 왔습니다. 세 구조에 대한 설명이 크게 개선되었고 합성곱 신경망 구조의 일반적인 패턴에 대한 식견을 피력하는 절이 돋보입니다. 그다음은 1판 5장에 있던 합성곱 시각화 부분이 이어집니다. 1판에서는 필터 시각화와 히트맵 시각화를 위해 VGG16 모델을 썼었는데 2판에서는 Xception 모델을 사용합니다.
  • 1판 RNN 장이 2판에서 2개 장으로 확대되었습니다. 10장에서는 예나 온도 예제, RNN, 1D 컨브넷, LSTM, 드롭아웃, 스태킹 RNN, 양방향 RNN을 다룹니다. 자연스럽게 LSTM 등의 예제는 IMDB가 아니라 예나 데이터셋을 사용합니다. 1판과 크게 달라진 점은 제너레이터 방식이 아니라 새로운 timeseries_dataset_from_array 함수를 사용하여 코드가 훨씬 간결해졌습니다!
  • 11장은 이 책에서 가장 긴 장입니다. 1판 6장의 IMDB 텍스트 분류 예제를 주로 다루지만 완전히 새로 쓰여졌습니다. 먼저 TextVectorization 층과 함께 텍스트 전처리에 대해 자세히 소개합니다. BoW와 n-그램도 더욱 자세히 설명하고 1판에 없던 tf-idf 예제도 추가되었습니다. TextVectorization 층을 tf.data 파이프라인 또는 모델에 포함시킬 때를 명확하게 짚어주니 아주 좋네요. 그다음은 자연스럽게 임베딩 층으로 넘어가 사전 훈련된 단어 벡터를 사용하는 것까지 진행됩니다. 텍스트 분류에서 BoW와 RNN을 선택하는 기준에 대한 경험 법칙도 소개합니다. 이제 11장의 나머지 절반은 온통 트랜스포머 이야기입니다. 수식을 사용하지 않으면서 단계적으로 이해하기 쉽게 설명하는 저자의 능력이 여기에서 빛을 발합니다. 셀프 어텐션, 멀티 헤드 어텐션, 트랜스포머 인코더, 위치 임베딩까지 진행한 다음 다시 IMDB 텍스트를 분류해 봅니다. 그다음 텍스트 분류를 넘어서 기계 번역 예제(영어->스페인어)로 이동합니다. 먼저 LSTM으로 seq2seq 모델을 만들면서 인코더, 디코더의 상호 작용을 이해합니다. 그다음 트랜스포머 디코더를 만들고 트랜스포머 인코더와 합쳐서 완전한 기계 번역 모델을 만듭니다! 와우!!! 🙂
  • 12장은 생성 딥러닝을 다루며 1판의 8장과 구성이 비슷합니다. 텍스트 생성, 딥드림, 뉴럴 스타일 트랜스퍼, 변이형 오토인코더, GAN을 다룹니다. 1판과 다른 점은 LSTM과 세익스피어 데이터셋 대신 트랜스포머 디코더와 IMDB 데이터셋을 사용해 텍스트 생성 예제를 만듭니다. DCGAN 예제에서는 CIFAR10 데이터셋 대신에 CelebA 데이터셋을 사용합니다. 물론 전체 코드는 대부분 서브클래싱 방식과 최신 케라스 API로 바뀌었습니다.
  • 13장은 실전을 위한 모범 사례를 다룹니다. 원래 1판 7장에 있던 모범 사례는 (앙상블을 제외하고) 대부분 2판에서 다른 장으로 흡수되었습니다. 따라서 2판 13장에 들어간 모범 사례는 모두 새로 작성한 것입니다. 하이퍼파라미터 튜닝을 위해 KerasTuner를 소개하고, 혼합 정밀도를 사용한 훈련, 다중 GPU 훈련과 코랩 TPU 사용 방법까지 다룹니다.
  • 14장은 1판의 마지막 장과 유사하게 전체 내용을 정리하고 딥러닝에 대한 저자의 해석과 전망을 담고 있습니다. 하지만 내용이 많이 확대되었습니다. 지능이란 무엇인지, 왜 생겼는지 탐구해 보고 어떻게 달성할 수 있는지 질문합니다. 이 질문에 대한 대답으로 일반화를 달성하기 위한 추상화와 프로그램 합성을 엮어서 이야기를 풀어 갑니다. 이 장은 몇 년전 프랑소와가 쓴 지능 측정에 대한 논문에서 중요 내용을 요약한 것 같습니다. 프랑소와가 그리는 미래를 여기서 볼 수 있습니다!

New DL Book: DL with Python

chollet-dlp-meap-hi매닝(manning) 출판사에서 새 딥러닝 책인 “Deep Learning with Python“의 MEAP 버전이 공개되었습니다. 이 책은 케라스(Keras) 개발자 프랑소와 숄레(François Chollet)가 올해 쓰기로 했던 바로 그 책입니다. 1장은 무료로 공개되어 있고 현재 3장까지 쓰여졌습니다. 전체 책은 올 가을 이후에 만날 수 있을 것 같습니다.

PART 1: THE FUNDAMENTALS OF DEEP LEARNING
1 What is Deep Learning?
2 Before we start: the mathematical building blocks of neural networks
3 Getting started with neural networks
4 Fundamentals of machine learning
PART 2: DEEP LEARNING IN PRACTICE
5 Deep learning for computer vision
6 Deep learning for text and sequences
7 Advanced neural network design
8 Generative deep learning
9 Conclusion

(업데이트) 이 책은 길벗 출판사를 통해 번역서를 출간할 예정입니다. 이 책의 R 버전은 어딘지는 모르겠지만 준비되고 있는 것으로 알고 있습니다. 🙂

Keras go to TensorFlow

케라스(Keras)를 개발한 구글의 프랑소와 숄레(François Chollet)가 트위터에 남긴 글과 fast.ai 의 블로그로 미루어 보아 케라스가 텐서플로우의 contrib 아래로 들어갈 것 같습니다. 아마도 케라스에서 텐서플로우 부분만 떼어내서 들어가지 않을까 예상됩니다. tf.slim 은 contrib.laryercontrib.slim 에 있는 가장 널리 사용되는 텐서플로우 래퍼(wrapper) 중 하나입니다. 케라스가 포함되면 tf.slim과 함께 텐서플로우의 주요한 하이레벨 API 가 될 것 같습니다.

AI•ON: AI Open Network

ai-on

케라스(Keras) 개발자인 구글의 프랑소와 숄레(François Chollet)가 아이언(AI•ON, /aɪən/)이라는 프로젝트를 시작했습니다. 아이언은 Artificial Intelligence Open Network 의 약자입니다. 하지만 연구자들을 위한 소셜 모임이 아닙니다. 관심있는 인공지능 문제를 등록하고 메일링 리스트를 통해서 같이 연구해 나가는 프로젝트입니다. 학교도 회사도 인종도 국가도 모두 상관 없습니다. 누구나 메일링 리스트에 등록해서 토론하고 코드에 참여할 수 있으며 모든 작업과 소스 코드는 깃허브에 투명하게 공개됩니다. 만약 이 프로젝트에 관심있는 주제를 등록하고 싶다면 아이언 깃허브 레파지토리에 풀리퀘스트를 보내면 됩니다.

프랑소와 혼자서 이 프로젝트를 진행하는 것인지 확실하지 않습니다. 어엿든 이런 모험적인 프로젝트를 어떻게 생각했는지 놀랍기만 합니다. 한편으로는 얼만큼 성공적으로 진행될 수 있을까 궁금하기도 하구요. 관심있는 주제를 하나 선택해서 메일링 리스트에 참여해 봐야 겠습니다!

(업데이트) 그러고 보니 OpenAI 의 OpenAI: Request for Research 와 유사한 면이 있는 것 같습니다. 아이언은 이 보다 더 공개적이고 자기 조직적인(self-organized)인 것 같습니다.

(업데이트) 아이언의 프로젝트 중 Subpixel CNN in Upsampling Applications 의 메일링 리스트에서는 플로리다 대학의 Ph.D 인 에더 산타나(Eder Santana)의 주도하에 과제를 진행하려고 합니다. 첫번째는 시도로는 트랜스포즈(Transpose) CNN과 서브픽셀(Subpixel) CNN, 픽셀CNN(PixelCNN)을 비교하는 것입니다. 저는 Keras.js 를 이용한 라이브 데모 작업에 참여해 보려고 합니다. 관심있으신 분들은 언제든지 환영입니다.

Keras 1.1.0 Release

딥러닝 래퍼 라이브러리인 케라스(Keras)의 1.1.0 버전이 릴리즈 되었습니다. 이번 버전부터 디폴트 백엔드(backend)가 씨아노(Theano)에서 텐서플로우로 변경되었습니다. 텐서플로우가 인기가 높기도 하지만 케라스 개발자 프랑소와 숄레(François Chollet)가 구글에 있으니 예상되는 변화라고 보여집니다.

OpenAI and ML Unconference

오늘 OpenAI에서 10월 7~8일에 머신러닝 언컨퍼런스(unconference)를 개최한다고 홈페이지를 통해 공지했습니다. 언컨퍼런스라고 하면 보통 페이퍼를 등록하는 위원회가 없이 참여자들이 자유스럽게 여러가지 주제에 대해 토론하고 발표하는 것을 말합니다. 이렇게 하는 이유는 컨퍼런스에서 페이퍼를 등록하고 준비하는 기간이 수개월이나 소요되어 머신러닝 분야의 발전속도에 따라가지 못하기 때문이라고 합니다. 일반적으로 컨퍼런스의 주요 목적중의 하나인 네트워킹에 중점을 두어 최근 동향과 연구를 다루려고 하는 것 같습니다. 아직 구체적인 스케줄이나 방식은 나오지 않았습니다만 대략 150명의 인원을 대상으로 하며 OpenAI 사무실에서 진행될 예정이라고 합니다. 미리 참여를 확보한 리스트에는 구글 브레인팀을 비롯해 여러 PhD 학생과 연구자들이 있습니다. 온라인으로 누구나 신청할 수 있습니다만 초청 대상이 되는 것은 PhD 학생이나 주요 연구자들이 대상이 될 것으로 보입니다. 혹 초짜라면 다른 컨퍼런스를 알아보라고 하네요. ㅠ.ㅠ

이 발표가 있기 며칠전 OpenAI의 새로운 팀원이 추가된 공지가 올라왔습니다. 새로운 멤버에 대해서 아는 바는 없지만 기술 저술가인 잭 클라크(Jack Clark)가 추가된 것이 독특합니다. 잭은 불룸버그나 비즈니스위크 등에 인공지능 관련 기사에서 종종 볼 수 있는데요. OpenAI가 연구자 이외에 저술가 혹은 정책가로 팀 구성을 확대하는 점이 관심을 끄네요. 특히 그는 ‘Import AI‘라는 인공지능 관련 뉴스레터를 발행하고 있습니다(이름이 재미있습니다. 잭이 파이썬을 얼마나 쓰는지는 모르겠습니다). 이메일을 등록하시면 최근 업계 동향을 받아 볼 수 있습니다.

스탠포드 PhD 학생이면서 OpenAI의 팀원인 안드레이 카패시(Andrej Karpathy)는 최근 트위터를 통해 OpenAI에서 사용하는 주요한 딥 러닝 프레임워크는 텐서플로우라고 밝혔습니다. 하지만 사용하는 사람들이 각각 다른 방법을 쓰고 있어서 어려움을 느끼고 있는 것 같습니다. Slim, PrettyTensor, Keras, TFLean(aka. skflow) 등등. 아마 래퍼 라이브러리를 쓰지 않는 사람까지 고려하면 코드 공유에 약간 장애가 되겠네요. 안드레이는 slim을 쓴다고 합니다. 🙂

케라스의 개발자인 구글의 프랑소와 숄레(François Chollet)가 가끔 트위터에 깃허브의 머신러닝 라이브러리 인기도를 조사해서 올리곤 합니다. 직감으로 알 수 있듯이 텐서플로우가 당연히 1위 입니다. 사실 이런 인기도 조사를 하는게 크게 의미가 있는 것이 아니고 프랑소와가 할만한 일도 아니라고 생각되는데요. 이런 트윗에 영 심기가 불편한 것은 토치를 사용하는 페이스북의 연구자들입니다. 숫자가 너무 차이가 나거든요. ㅠ.ㅠ

Quora Sessions, RedditAMA

최근 갑자기 온라인 질의 응답 세션이 많이 생기는 것 같습니다. 전체를 다 읽어 보기에는 시간이 없지만 일부라도 시간을 할해해서 보아둠직 할 것 같습니다. 페이스북의 얀 레쿤(Yann LeCun), OpenAI의 이안 굿펠로우(Ian Goodfellow), 구글 브레인팀, 케라스(Keras) 개발자인 구글의 프랑소와 숄레(François Chollet)까지 연타입니다! 이들도 서로 약간 의식을 하는 걸까요? 🙂

Pre-trained DL Model for Keras

케라스(Keras)를 개발한 프랑소와 숄레(François Chollet)이 케라스에서 VGG16, VGG19, ResNet50 모델의 학습된 파라메타를 로드하여 사용할 수 있는 코드를 깃허브에 올렸습니다. 이 코드는 pip 패키지로 설치하는 것은 아니고 py 파일을 다운 받아서 같은 폴더에서 import 하여 사용하여야 합니다. 이외에도 곧 Inception v3 모델도 추가될 예정입니다. 디폴트로 ImageNet의 파라메타가 사용됩니다.

(업데이트) Inception v3 모델이 추가되었습니다.

(업데이트) 이제 이 모델들이 케라스 패키지(keras.applications)에 포함되었습니다. 자세한 내용은 케라스 문서를 참고하세요.

Andrew Ng’s Book: Machine Learning Yearning

clzytu7wkaalj-a 바이두(Baidu)의 앤드류 응(Andrew Ng) 박사가 ICS HPC 컨퍼런스에 참석차 방문한 독일 프랑크푸르트에서 올 여름 새로운 책을 집필할 것이라고 알렸습니다. 책 이름은 ‘Machine Learning Yearning’ 입니다. 웹 사이트 mlyearning.org 에서 이메일을 등록하면 초안이 작성되는 대로 무료로 공유 받을 수 있습니다. 이메일을 등록한 후 확인 메일을 받아 메일링 리스트 가입을 확정하여야 합니다. 간혹 확인 메일이 안올 경우도 있으니 잠시 후에 다시 시도하면 됩니다.

아마도 출간되면 ‘Deep Learning Book’ 과 함께 꼭 읽어야 할 책 목록 중에 하나가 되지 않을까 생각됩니다. 가능하면 올해안에 만나볼 수 있기를 기대해 봅니다. 드래프트를 받으면 읽고 리뷰할 수 있도록 하겠습니다.

추가로 텐서플로우와 씨아노(Theano) 래퍼(Wrapper) 라이브러리 Keras의 개발자인 구글의 프랑소와 숄레(François Chollet)가 매닝(Manning) 출판사와 딥 러닝에 관한 책을 쓰기로 계약했다는 소식이 있습니다. 아마도 Keras와 텐서플로우를 이용한 예시가 많지 않을까 생각됩니다. 이 책은 빨라야 내년 초에나 볼 수 있을 것 같습니다.

(추가) 2일만에 35,000개 이상의 메일이 가입되었다고 합니다. 앤드류 응의 인기가 실감되네요. 24일까지 메일링 리스트 가입을 받는다고 하니 서루르세요.