카테고리 보관물: News

“개발자를 위한 AI & ML” 도서 번역을 마쳤습니다.

아마존 베스트셀러인 <AI and Machine Learning for Coders> 번역을 마쳤습니다. 이 책은 구글의 Lead AI Advocate인 로런스 모로니(Laurence Moroney)가 썼고, 코세라 창업자이자 딥러닝 4대 석학 중 하나인 앤드류 응(Andrew Ng)이 추천사를 쓴 책입니다.

출판사에서 후반 작업을 거쳐야 하지만 8월 안에는 번역서를 만나 볼 수 있지 않을까 기대해 봅니다. ㅎㅎ

전체 책을 한 눈에 볼 수 있도록 요약한 그래픽과 각 장의 요약을 참고하세요! 🙂

  • 1장은 개발자 입장에서 머신러닝과 텐서플로가 무엇인지 설명하고, 텐서플로를 사용하기 위한 환경을 준비합니다. 마지막으로 두 숫자 리스트 사이의 관계를 학습하는 초간단 텐서플로 모델을 만듭니다.
  • 2장에서는 밀집 층을 사용한 컴퓨터 비전 예시를 다룹니다. 사용하는 데이터셋은 패션 MNIST입니다. 저자의 의도는 수학과 이론을 배제하고 딥러닝을 소개하는 것입니다. 그래서 고수준으로 쉽게 개념을 풀어 설명하고 있습니다. 또 모델을 오래 훈련했을 때 일어나는 과대적합에 대해 설명하고 콜백을 사용한 간단한 조기종료 기법을 선보입니다.
  • 3장은 컴퓨터 비전을 위해 합성곱과 풀링을 사용하여 조금 더 복잡한 예제를 다룹니다. 여기에서는 저자가 직접 컴퓨터 그래픽으로 만든 데이터셋인 말-사람 데이터셋을 사용합니다. ImageDataGenerator를 사용해 데이터 증식하는 법을 소개합니다(원서보다 나은 번역서를 지향하므로 image_dataset_from_directory 함수와 케라스 전처리 층을 사용하는 법을 역자 노트로 추가했습니다). 이어서 전이 학습을 소개하고 인셉션 v3를 사용해 동일한 데이터셋에서 전이 학습 모델을 훈련합니다. 마지막으로 역시 저자가 컴퓨터 그래픽으로 만든 가위,바위,보 데이터셋으로 다중 분류 모델을 훈련하고 드롭아웃 규제를 적용합니다!
  • 4장은 텐서플로 데이터셋을 소개합니다. tfds를 사용하여 공개된 데이터셋을 손쉽게 로드하는 방법과 데이터셋의 상세 정보를 조회하는 방법을 배웁니다. 그다음 tfds를 사용해 케라스 모델을 만들고 훈련해 봅니다. 데이터 증식과 분할 비율을 지정하여 로드하는 방법도 소개합니다. 또한 TFRecord 구조를 소개하고 CPU/GPU를 최대한 활용할 수 있는 방법도 안내합니다.
  • 5장부터는 RNN을 다룹니다. 5장에서는 기초적인 내용을 다룹니다. 토큰화, 패딩을 소개하고 뷰티풀수프로 텍스트를 정제하는 방법도 소개합니다. tfds로 IMDb 데이터셋을 로드하여 정제하는 과정을 밟아 보고 CSV 파일과 JSON 파일에서 데이터를 로드하는 방법도 배울 수 있습니다. 번역서에는 TextVectorization 층을 사용하는 예시도 추가했습니다!
  • 6장은 5장에 이어 텍스트 데이터를 다룹니다. 하지만 이번에는 RNN이 아니라 임베딩 층과 밀집 층을 사용합니다. 6장의 목표는 직관적으로 임베딩을 이해할 수 있도록 돕는 것입니다. 여기에서는 IMDb 대신 Sarcasm 데이터셋을 사용하며 임베딩 층의 출력을 밀집 층으로 주입하기 위해 전역 풀링을 사용합니다. 만들어진 임베딩 벡터를 텐서플로의 임베딩 프로젝터로 시각화해 봅니다. 마지막으로 직접 임베딩을 훈련하는 대신 텐서플로 허브에서 사전 훈련된 임베딩을 사용하는 방법을 소개하는 것으로 마칩니다!
  • 7장은 순환 모델의 필요성을 언급하고 피보나치 수열을 사용해 순환 뉴런의 작동 방식을 설명합니다. Sarcasm 데이터셋에 양방향 LSTM 층을 적용합니다. 이 모델을 개선하기 위해 순환 층을 쌓는 방법과 과대적합을 완화하기 위해 드롭아웃을 적용하는 방법을 소개합니다. 마지막으로 GloVe 임베딩을 사용해 사전 훈련된 임베딩 벡터를 사용하는 모델을 만드는 것으로 마칩니다.
  • 8장은 텍스트 분류 작업을 넘어서 텍스트를 생성하는 모델을 만들어 봅니다. 시드 문장에서 시작하여 한 단어씩 예측하여 시드 문장에 추가하는 식으로 텍스트를 생성합니다. LSTM 층을 사용해 아일랜드 시를 학습해 새로운 텍스트를 생성합니다. 모델을 개선하기 위해 순환 층을 쌓고 데이터셋을 확장합니다. 마지막으로 문자 기반 생성 모델에 대해 소개합니다.
  • 9장은 시계열 데이터를 다룹니다. 시계열 데이터의 특징인 트렌드, 계절성, 자기상관, 잡음 등에 대해 설명합니다. 합성된 데이터를 사용해 베이스라인으로 단순한 예측을 만드는 모델을 만듭니다. 먼저 현재 타임스텝 데이터로 한 스텝 앞을 예측하는 것과 이동 평균과 계절성을 사용해 예측하는 방법을 소개합니다!
  • 10장은 시계열 데이터에 심층 신경망을 적용하여 문제를 풉니다. 이를 위해 tf.data를 사용해 윈도 데이터셋을 만드는 방법을 알아 봅니다. 밀집 층을 사용한 모델로 훈련한 다음 케라스 튜너를 사용하여 최적의 하이퍼파라미터를 찾아 봅니다!
  • 11장은 계속하여 합성 시계열 데이터에 1D 합성곱을 적용하는 방법을 배웁니다. 그다음 케라스 튜너로 다시 한번 하이퍼파라미터 튜닝을 수행해 봅니다. 시계열 데이터에 RNN을 적용하기 전에 실전 데이터로 넘어갑니다. NASA 날씨 데이터와 KNMI 날씨 데이터를 사용합니다. SimpleRNN, GRU, LSTM, 드롭아웃, 양방향 RNN을 여기에 모두 적용해 봅니다.
  • 12장부터는 텐서플로 라이트를 소개합니다. 훈련된 간단한 모델을 텐서플로 라이트로 변환하고 예측을 수행하는 과정을 단계별로 차근차근 설명합니다. 그다음 전이 학습으로 만든 강아지-고양이 이미지 분류 모델을 텐서플로 라이트로 변환하고 양자화를 통해 모델을 최적화하는 방법까지 소개합니다!
  • 13장은 안드로이드 앱에서 텐서플로 라이트를 사용하는 방법을 소개합니다. 안드로이드 스튜디오를 사용해 새 프로젝트를 만들고, 텐서플로 라이트 모델을 추가하고, 추론에 사용하는 방법을 단계별로 안내합니다. 다음으로 강아지-고양이 분류 모델을 사용해 앱에서 이미지를 처리하는 예제를 다룹니다.
  • 14장은 iOS 앱에서 텐서플로 라이트를 사용하는 방법을 소개합니다. 13장과 마찬가지로 Xcode를 사용해 간단한 모델을 사용해 단계적으로 텐서플로 라이트를 사용하는 방법을 안내합니다. 그다음 강아지-고양이 분류 모델을 사용한 앱을 만들어 봅니다.
  • 15장부터는 TensorFlow.js를 사용하는 방법을 배웁니다. 텐서플로 생태계 입장에서 TensorFlow.js에 대해 소개하고 웹 개발 환경을 셋팅합니다. 첫 번째 TensorFlow.js 예제로 간단한 방정식 예측 모델을 만들고 그다음으로 붓꽃 분류 모델을 자바스크립트로 만드는 예제를 다룹니다!
  • 16장은 TensorFlow.js로 브라우저에서 MNIST 숫자 이미지를 분류하는 모델을 훈련합니다. 먼저 브라우저로 모델을 훈련할 때 고려할 사항을 안내합니다. 그다음 자바스크립트로 CNN 모델을 구성하고 tfjs-viz 스크립트를 사용해 훈련 과정을 시각화하는 방법을 배웁니다. 스프라이트 시트로 구성된 훈련 이미지를 사용해 모델을 훈련하고 마지막으로 훈련된 모델에서 추론을 수행합니다.
  • 17장은 기존에 훈련된 텐서플로 모델을 자바스크립트에서 사용하는 방법을 안내합니다. 먼저 텐서플로에서 훈련된 모델을 tensorflowjs로 변환하는 방법을 배웁니다. 그다음 tfjs-models 저장소에 있는 모델을 재사용하는 방법을 안내합니다. 이를 통해 유해 텍스트를 걸러내거나 MobileNet을 사용해 이미지를 분류하거나 PoseNet으로 신체 부위를 감지할 수 있습니다.
  • 18장은 TensorFlow.js를 사용한 전이학습을 다룹니다. ImageNet 데이터셋에서 훈련한 MobileNet 모델을 베이스 모델로 사용해 가위,바위,보 손 모양 이미지를 분류하는 모델을 단계별로 안내합니다. 그다음 텐서플로 허브를 사용하여 전이학습을 수행하는 방법을 소개합니다. 마지막으로 TensorFlow.org에서 제공하는 모데을 사용해 전이학습을 수행하는 방법을 소개합니다.
  • 19장은 모델 배포를 다룹니다. 텐서플로 서빙을 소개하고 도커와 리눅스에 설치하는 방법을 안내합니다. 그다음 간단한 숫자를 예측하는 모델을 텐서플로 서빙으로 배포하는 방법을 실습합니다.
  • 20장은 인공지능의 윤리, 공정성, 개인 정보 보호에 대해 다룹니다. 먼저 이모티콘 사례를 들어 프로그래밍의 공정성과 기술 부채에 대해 설명합니다. 머신러닝의 공정성을 위한 도구로 what-if와 패싯을 소개합니다. 그다음 연합 학습 절차를 간단한 예를 들어 단계별로 설명합니다. 마지막으로 구글 AI 원칙을 소개하면서 책을 마무리합니다.

ML & DL Book Landscape 마우스패드 이벤트 안내

제가 만든 머신러닝 & 딥러닝 책 로드맵을 사용한 마우스 패드가 Yes24 이벤트 굿즈로 탄생했습니다! 🙂 제 책을 포함하여 IT 책을 사실 때 마우스패드를 사은품으로 선택할 수 있습니다. 이벤트에 대한 자세한 내용과 마우스패드 사진은 아래 Yes24 이벤트 페이지를 참고하세요!

http://m.yes24.com/momo/MobileEvent/yesPresent/yesPresent.aspx?EventNo=221016

텐서플로 2.9 버전이 릴리스되었습니다.

며칠 전 텐서플로 2.9버전이 릴리스되었습니다. 주요 변경 사항을 텐서플로 블로그에 소개했습니다. 요약하면 다음과 같습니다.

  • 텐서플로 2.5버전에서 실험적으로 포함되었던 인텔 oneDNN 라이브러리에 대한 최적화가 2.9버전에서 기본적으로 활성화됩니다(리눅스 패키지와 캐스케이드 레이크 이후의 CPU).
  • 모델 병렬화를 위한 DTensor API가 추가되었습니다. 자세한 내용은 DTensor Concepts, Distributed ML with DTensors, Using DTensors with Keras 문서를 참고하세요.
  • tf.function의 트레이싱 방식을 개선했습니다.
  • 텐서플로 2.8 버전에서 소개된 tf.config.experimental.enable_op_determinism()의 기능을 개선하여 실행마다 동일한 결과를 얻을 수 있습니다.
  • 옵티마이저 커스터마이징을 용이하게 하기 위해 tf.keras.optimizers.experimental API가 추가되었습니다. 향후 tf.keras.optimizers.experimentaltf.keras.optimizers.Optimizer를 대체합니다.

이 외에도 다양한 기능이 추가되고 변경되었습니다. Revisiting ResNets 모델인 tf.keras.applications.resnet_rs, L2 정규화 층인 tf.keras.layers.UnitNormalization, 새로운 규제 층인 tf.keras.regularizers.OrthogonalRegularizer, 새로운 이미지 전처리 층인 tf.keras.layers.RandomBrightness가 추가되었습니다. 더 자세한 내용은 텐서플로 릴리스 노트를 참고하세요!

<혼자 공부하는 머신러닝+딥러닝> 7장부터 시작하는 딥러닝 파트의 코드를 텐서플로 2.9 버전에서 모두 테스트하여 깃허브에 업데이트했습니다!

항상 최신 버전의 라이브러리에서 테스트하여 예제 코드에 문제가 없도록 하겠습니다! 감사합니다!

[파이썬 라이브러리를 활용한 머신러닝] 독자 리뷰를 소개합니다!

현업 데이터 분석가이신 송진영 님이 <파이썬 라이브러리를 활용한 머신러닝(번역개정2판)>을 읽고 블로그에 쓰신 리뷰를 소개해 드립니다.

https://ugong2san.tistory.com/4115

책 리뷰는 물론 중요한 문단을 요약해 놓아서 한 눈에 전체 책을 둘러보는데 도움이 되실거에요! 좋은 리뷰 정말 감사합니다!

[혼자 공부하는 머신러닝+딥러닝] 사이킷런 1.1.0 버전 업데이트 안내

<혼자 공부하는 머신러닝+딥러닝>의 주피터 노트북 코드를 사이킷런 1.1.0 버전에 맞추어 모두 테스트했습니다.

(노트: 2022년 5월 현재 코랩의 파이썬 버전은 3.7.x로 사이킷런 1.0.x만 설치됩니다. 코랩을 사용하는 경우 아래 수정 사항을 무시하세요)

사이킷런 1.1.0 버전에서 SGDClassifier의 loss 매개변수 중 로지스틱 손실을 의미하는 'log'가 'log_loss'로 바뀐다는 경고가 발생합니다. 사이킷런 1.1.0 버전 이상을 사용하는 경우 경고를 피하기 위해 다음과 같이 변경해 주세요.

  • (p208) 두 번째 손코딩, (p210) 첫 번째 손코딩, (p211) 두 번째 손코딩에서 loss='log'를 loss='log_loss'로 바꿉니다.
  • (p214) 위에서 11번째 줄과 20번째 줄, (p215) 5번째 줄에서 loss='log'를 loss='log_loss'로 바꿉니다.
  • (p345) 세 번째 손코딩, (p362) 위에서 15번째 줄에서 loss='log'를 loss='log_loss'로 바꿉니다.

감사합니다!

scikit-learn with GPU!

사이킷런 알고리즘은 대부분 파이썬 또는 Cython으로 작성되어 있습니다. 그래서 큰 의존성 문제 없이 다양한 플랫폼에 이식될 수 있고 가장 널리 사용되는 머신러닝 라이브러리가 되었습니다.

사이킷런은 그동안 GPU를 활용한 구현에 대해 부정적인 입장을 견지해 왔습니다. 사이킷런의 다층 퍼셉트론(MLPClassifier, MLPRegressor)에 GPU 지원이 추가되지 않는지 내심 기대가 많기도 했습니다. 하지만 사이킷런의 신경망 구현이 텐서플로와 파이토치 같은 기능을 제공하기는 어렵다고 합니다. 복잡도가 너무 높아진다는 것이 그 이유 중 하나입니다.

그런데 최근에 사이킷런에 GPU 기능을 활용하려는 아이디어가 제안되었습니다. 파이썬 Array API를 사이킷런에 접목할 수 있다면 CuPy 등을 통해 GPU 활용이 가능할 수 있습니다(#22352 참조). 아예 저수준에서 GPU를 지원하는 방식도 제안되었습니다(#22438).

며칠 전에는 사이킷런 프로젝트를 이끄는 Inria 연구소에서 GPU 관련된 구인 공고를 냈습니다! 순조롭게 진행된다면 인텔 기반으로 k-최근접 이웃, k-평균, 가우시안 RBF 커널 등에 GPU 구현이 추가될 것으로 예상됩니다. 아직 어떤 모습이 될지는 모르겠지만 파이썬 컨텍스트 매니저를 사용하거나, 메서드나 파이프라인의 일부로 구현될 수도 있을 것 같습니다.

사이킷런이 범용성 뿐만 아니라 속도까지 높아진다면 많은 사람들이 정말 좋아할 것 같습니다. 이참에 그레이디언트 부스팅까지 GPU 구현을 바라는 것은 너무 욕심일까요? 🙂

“구글 브레인 팀에게 배우는 딥러닝 with TensorFlow.js”가 출간되었습니다!

유일무이한 자바스크립트 딥러닝 라이브러리인 TensorFlow.js를 다룬 <구글 브레인 팀에게 배운 딥러닝 with TensorFlow.js>가 출간되었습니다.

이 책은 구글 브레인 팀에서 TensorFlow.js를 개발하고 지원하는 에릭 닐슨, 스탠 바일시, 샨칭 차이 그리고 케라스를 만든 프랑소와 숄레가 쓴 책입니다. TensorFlow.js 뿐만 아니라 일반적인 딥러닝에 대해서도 폭 넓은 주제를 담고 있습니다.

심층 신경망, 합성곱 신경망, 자연어 처리, 전이 학습, 시퀀스 모델링, 생성 모델, 강화 학습까지 20여개가 넘는 예제를 통해 딥러닝을 배워 보세요. 이 외에도 과대적합과 과소적합은 물론 일반적인 머신러닝의 워크플로에 대해서도 빠지지 않고 설명합니다.

자바스크립트 월드와 딥러닝 던전을 연결하는 멋진 세계를 지금 바로 경험해 보세요!

  • 온라인 서점에서 판매중입니다. [Yes24], [교보문고], [알라딘]
  • 648페이지, 풀컬러: 44,000원 –> 39,600원, 전자책 35,200원
  • 이 책에 실린 코드는 깃허브에 있습니다.
  • 이 책에 실린 예제의 온라인 데모를 제공합니다.

“파이썬 라이브러리를 활용한 머신러닝(번역개정2판)”이 출간되었습니다!

2017년 처음 이 책을 작업할 때 사이킷런 코드를 보면서 무식하게 노트에 한 줄 한 줄 펜으로 번역해서 옮겼던 기억이 납니다. 사이킷런 개발자가 쓴 책인만큼 잘 옮기고 싶었고 그때는 지금처럼 좋은 책이 많지 않아서 더 그랬던 것 같습니다.

무슨 생각이 들었는지 읽을만한 책을 만들자고 호기롭게 시작한 그 도전이 5년을 지나 오늘 여기까지 오게된 것 같네요. 이 책이 없었다면 아마 지금 다른 일을 하고 있을 것 같습니다.

2019년 번역개정판을 내고도 많은 분들에게 꾸준히 사랑을 받았습니다. 정말 감사드립니다. 새로운 번역개정2판은 최근 릴리즈된 사이킷런 1.0 버전을 반영하였습니다. 새로운 기능과 변경된 내용을 많이 담아서 500페이지가 넘었습니다. 또 구글 코랩에서 실습할 수 있도록 코드를 업데이트했습니다. 흔쾌히 번역개정2판을 허락해 주신 한빛미디어 출판사에 감사드립니다. 다시 한 번 머신러닝 학습의 엔트로피를 줄이는데 도움이 되기를 기대합니다! 감사합니다! 🙂

“머신러닝 파워드 애플리케이션” 독서 후기

아래는 구글 Machine Learning GDE인 박찬성 님이 <머신러닝 파워드 애플리케이션>을 읽은 후 작성하신 리뷰입니다. 찬성 님의 허락을 받아 블로그에 싣게 되었습니다. 좋은 리뷰 정말 감사합니다! 🙂


🖌 머신러닝 파워드 애플리케이션 독서 후기

이 책은 머신러닝이 탑재된 애플리케이션을 만들기위해, End to End 로(처음부터 끝까지) 들어가야 하는 노력을 잘 정리해 보여준다. 이 책만의 몇 가지 특징이 있는 데, 그 중 두개를 꼽자면

1️⃣ 머신러닝 에디터라는 애플리케이션을 만드는 예를 보여주는것 같지만, 이 구체적인 예제를 다룸과 동시에 다양한 문제에 사용될 수 있는 접근법들을 함께 설명한다. 구체적인 예제를 풀어내지만, 일반적인 컨셉도 함께 배울 수 있다.

2️⃣ 애플리케이션 구축에 필요한 모든 요소에 동일한 가중치를 두고 설명한다. 데이터 수집, 모델링, 배포, 모니터링 등에서 한 부분에만 집중하지 않기 때문에, 성공적인 애플리케이션 구축을 위해서는 “모든 부분이 중요하다”는 사실을 묵시적으로 뇌리에 잘 심어주는것 같다.

이 책이 강조하는 부분은 반복성이다. 애플리케이션을 만드는 전체 과정의 입장에서의 반복. 또는 데이터 수집/검증, 모델링, 배포 후 사용자와의 상호작용 등 전체 파이프라인의 부분별로의 반복. 빠르게 아이디어를 실험하고, 검증을 통해 문제를 파악하고, 개선하는 반복의 사이클을 항상 고려해야만 성공적인 머신러닝이 탑재된 애플리케이션을 만들 수 있다는것이다.

✔️ 이는 다른 책에서도 흔히 볼 수 있는 강조인데, 이 책에서는 특히 더 많이 강조하는 부분인것 같다. 전체 파이프라인, 모델링 측면에서는 그렇다고 많이 느끼고 있었는데, 이를 현재 보유한 인력에 맞춰 더욱 잘게 쪼개진 사이클을 만들 수 있구나 라는걸 알게되었다.

이 책은 애플리케이션을 구축하는 전반을 다룬다. 따라서 “서비스”, “고객”의 관점에서 내용을 설명한다. 대개 인공지능이 모든것을 대체할 것이다 라고들 생각하는 경향이 있지만, 100%의 예측이란 불가능하기 때문에 머신러닝이 실패할 때를 항상 대비해야한다. 이 실패를 대처하는 방법으로 머신러닝이 도입되기 전 활용되어온 규칙기반 알고리즘, 또는 매우 단순하게라도 작동하는 간단한 머신러닝 모델을 추가적으로 활용하는것이다.

✔️ 즉 머신러닝이 실패하는 상황을 “우아하게” 대처하기 위해서는 머신러닝이 들어가기 이전의 노력 + 머신러닝을 운용하는 노력이 결합되어야 한다는 것이다. 그리고 이를 위해서는 도메인 지식을 집요하게 습득하려는 노력이 선행되어야한다. AI가 만능이다 라는 생각도 가져야 하지만(그래야 더 완성도 높은 모델을 만들기 때문에), AI 붐이 일어나기 전 수십년간 사람들이 축적해온 문제 해결 능력/방법은 결코 무시해서는 안된다.

✔️ 머신러닝이 탑재되는 애플리케이션/시스템을 만들겠다는 계획은 좋지만, 그 전에 MVP로 만들어야 할 것은 머신러닝이 탑재되지 않은 버전의 최선의 결과물이어야 할 것이다.

그 외에도 보다 구체적인 경험적 방법 (모범 사례)를 파이프라인의 각 요소마다 상세히 설명하고 있다. 물론 추가적인 리서치는 필요하지만, 큰 그림을 이해하고 체크리스트를 만들기에 충분한 지식을 전달한다.

약간 아쉬운점은 비교적 배포, 모니터링, 인프라에 대한 내용이 부족하다는 것이다. 하지만 보다 구체적인 내용을 뒷받침할 수 있는 책들이 많으므로 함께 읽어보면 좋을것 같다고 생각한다.

이 책은 두 번 이상 읽을 때 더 도움이되는 책이며, 각 장마다 제시하는 여러가지 옵션을 시각적으로 표현하거나 체크-리스트로 만들어 관리하면 꽤 도움이 될 것이라고 느꼈다. 다음 주 부터 재독을 진행할 예정인데, 만들게되면 공유해 보겠습니다 🙂


“혼자 공부하는 머신러닝+딥러닝”과 “파이토치로 배우는 자연어 처리”가 교보문고 2021년 올해의 책에 선정되었습니다!

교보문고 2021 올해의 책에 <혼자 공부하는 머신러닝+딥러닝>과 <파이토치로 배우는 자연어 처리> 책이 선정되었습니다. <혼자 공부하는 머신러닝+딥러닝>은 AI/ML 분야에서 1등을 했고 <파이토치로 배우는 자연어 처리>는 자연어 처리 분야에서 1등을 했습니다! (머신 러닝 교과서도 후보에 들었네요! 🙂 )

한 해 동안 제 책을 애독해 주신 모든 분들께 정말 감사드립니다!