Data/독서

[리뷰]개발자를 위한 머신러닝&딥러닝 텐서플로 입문서 추천

뚱요 2023. 4. 24. 01:41
반응형

개발자를 위한 머신러닝&딥러닝(AI and Machine Learning for Coders)

인공지능 개발자로 레벨 업하기! 신경망 기초부터 컴퓨터 비전, 자연어 처리, 시계열 예측까지

 

출판사: 한빛미디어
저자
: 로런스 모로니(Laurence Moroney)
번역 : 박해선
페이지 : 464 쪽
발행일 :
2022년 08월 24일
정가 : 34,000원

딥러닝을 텐서플로우 프레임워크로 사용하다 보면 공식 홈페이지 교육 영상이나 코세라나 Deeplearning.AI, 에서 많이 접한 로런스 모로니가 실습형 머신러닝 가이드북을 출간하여 리뷰하여 봅니다. 책을 리뷰하면서 느낀 점은 큰 흐름을 파악하고 핵심 개념과 TensorFlow(텐서플로) 실습하며 학습하고 싶은 분들에게 딱 좋은 책입니다. 

저자

아마 로런스 모로니(Laurence Moroney)Coursera(코세라)에서 TensorFlow강의나 TensorFlow 공식 계정의 동영상이나 Firebase관련 컨퍼런스에서 본 경험이 있다면 얼굴을 알고 계실 수 있습니다. 제 경우에는 DeepLaerning.AI, Coursera에서 모두 들었던 경험이 있어서 너무 반가웠습니다. 
로런스 모로니는 구글 Lead AI Advocate이며 텐서플로를 주요 인공지능 프레임워크로 만드는 중요한 역할은 한 분입니다. 그리고 DeepLearning.AI와 코세라에서도 온라인 강의를 하여 더 많은 사람들이 입문하고 학습하도록 하고 있습니다. 그리고 코세라 창업자인 Andrew Ng(앤드류 응) 이 추천사를 쓴 책입니다. 

 

난이도

개발자를 위한 이라고 나와 있는 건 모델 배포, 서빙 영역까지 다루기 때문으로 보이며 꼭 개발자가 아니더라도 요즘과 같이 초거대 AI가 나올수록 이런 기술에 대한 이해와 활용능력이 더울 커질 것으로 보여서 관심이 있는 파이썬 경험자라면 입문으로 보기 좋습니다.  한 책 안에 다양한 분야를 다루기 때문에 수학적인 내용이나 관련 이론에 대해서 깊이는 다루지 않지만 핵심 개념을 이해하고 넘어갈 수 있는 단계 별로 나아간다.
또, 이전에 코세라, deeplearning.AI 에서 텐서플로 강의를 한글로 배우고 싶거나  설명이 상세히 적힌 하나의 책으로 소장하고 싶다면 추천드립니다. 
선수지식으로 파이썬 문법 및 Numpy array를 어느 정도 할 수 있는 분들이라면 큰 허들 없이 따라 하며 입문하기 좋습니다.

 
 

 

구성

수학이나 AI에 대한 깊은 이해가 없더라도 빠르게 TensorFlow 내 프로덕트를 활용하여 컴퓨터비전, 자연어처리, 시퀀스 데이터로 모바일, 브라우저, 클라우드에 서빙까지 하는 전 단계를 다루어 빠르게 TF 서비스로 학습부터 서빙까지 하는 방법을 코드와 함께 학습 가능한 코드 실습형 머신러닝 가이드 북입니다. 역시 TensorFlow 공식 문서나 Cousera에서 강의 구성이 이미 많이 되어 있기 때문에 정말 군더더기 없이 깔끔합니다
1부는 모델 구축, 2부는 학습한 모델을 어떻게 사용하는지 텐서플로 설치법부터 핵심 개념과 코드가 소개됩니다. 해당 코드는 깃허브 레포로 제공하여 구글 코랩환경에서 실행하면서 진행할 수 있습니다. 

 

본문에서

텐서플로 설치를 시작으로 환경을 준비하고 레이어와 뉴런 한 개를 갖는 가장 간단한 신경망 모델로  정답과 실제값과의 차이를 측정하는 손실함수, 손실 함수를 통해 얻은 손실값으로부터 모델을 업데이트하는 방식인 옵티마이저, 뉴런이 학습하는 가중치와 절편 소개하며 딥러닝을 소개합니다.

dense = Dense(units=1, input_shape=[1])
model = Sequential([dense])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(xs, ys, epochs=500)

2번째 장에서는 간단한 수치 데이터에서 좀 더 복잡한 이미지 데이터 컴퓨터 비전으로 넘어갑니다. 패션 MNIST라 불리는 흑백의 10가지 패션 아이템 이미지 데이터 셋을 10개로 분류하기 위해서 1개 이상의 은닉층으로 구성된 심층신경망(DNN), 학습 데이터 대비 파라미터가 많아 생긴 과대적합과, 과대적합을 방지하기 위해 콜백으로 조기 종료(early stopping), 학습 데이터 정규화로 해결하는 방법을 다룹니다.

data = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = data.load_data()

training_images  = training_images / 255.0
test_images = test_images / 255.0

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation=tf.nn.relu),
    tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
model.fit(training_images, training_labels, epochs=5)

그다음 장에서는 좀 더 복잡한 이미지를 학습하기 위해 이미지 특징을 추출하는 합성곱 연산과 데이터 노이즈를 줄이는 풀링으로 이루어진 합성곱 신경망(CNN)과 과대 적합을 줄이기 위해 특정 뉴런은 랜덤하게 드롭아웃 정확도를 높이면서 컴퓨터 비전에서 과대적합이 되지 않도록 하는 방법을 소개합니다. 그리고 이미지 데이터를 로컬 디렉터리 트리 구조에 따라 이미지 레이블 할당 및 학습, 검증 데이터셋 구성할 수 있는 방법으로 쉽게 데이터 관리하는 방법을 소개합니다.  데이터 증식(data augmentation)이 가능한 ImageDataGenerator 객체와 전처리 레이어를 사용하여 쉽게 데이터 증식을 하고 TF에서 제공하는 대규모 데이터셋에서 사전 훈련된 모델의 가중치를 로드해서 학습된 특징을 담은 모델의 일부/전체를 사용하는 전이 학습(transfer learning) 모델 Inception으로 가져 활용해서 검증 데이터셋에서도 높은 정확도를 이루는 법을 보여줍니다.

4장에서는 텐서플로에서 제공하는 텐서플로 데이터셋 tfds를 사용하여 데이터셋을 로드하는 방법과 상세 정보를 조회하는 방법, 데이터 관리를 위한 ETL 프로세스로 나누어진 데이터를 학습에 사용할 수 있도록 증식, 변환하여 모델에 로드, CPU/GPU를 최대한 활용하여 ETL 병렬화하여 훈련시간을 축소하는 방법으로 대용량 데이터 셋으로 여러 대의 머신으로 수행하는 대규모 훈련에서도 사용하는 방법을 상세히 알려줍니다.
자연어 처리인코딩, 불용어 제거, 텍스트 정제, 다양한 형태의 텍스트 읽기, 임베딩, 문장 분류, 순환 신경망(RNN), LSTM, 텍스트 생성부터 시계열 데이터 트렌드, 계절성, 자기 상관, 잡음(niose), 시계열 예측, 이동 평균으로 문제 해결방법을 다룹니다. 


2부에서는 훈련된 모델이나 전이 학습으로 만든 모델을 텐서플로 라이트로 변환하는 방법 소개 및 안드로이드 앱, iOS 앱에서 텐서플로 라이트 사용하는 방법과 TensorFlow.js 소개 및 모델 구축 및 변환한 모델을 브라우저에 서빙, 배포하는 방법으로 모델 사용에 대해서 다룹니다. 마지막으로는 인공지능의 윤리, 공정성, 구글의 AI 원칙으로 마무리하며 다시 한번 인공지능의 목적과 사용 방향에 대해 말하고 끝을 맺습니다.

소개할 내용이 너무 많아 1장~20장 내용을 요약하여 하단에 접은 글로 넣어두었으니 참고하시기 바랍니다.

더보기
  • 1장: 개발자 관점에서의 머신러닝과 텐서플로 소개 
    • 텐서플로를 위한 환경 세팅 및 간단한 실습 
  • 2장:  컴퓨터 비전
    • DNN 모델을 오래 훈련했을 때 일어나는 과대적합에 대해 설명하고 콜백을 사용한 간단한 조기종료 기법
  • 3장: CNN
    • ImageDataGenerator를 사용해 데이터 증식하는 법을 소개.
    • 전이 학습을 소개하고 인셉션 v3를 사용해 동일한 데이터셋에서 전이 학습 모델을 훈련. 
  • 4장: 텐서플로 데이터셋(tfds)을 소개
    • 공개된 데이터셋을 손쉽게 로드하는 방법과 데이터셋의 상세 정보를 조회하는 방법 학습
    • tfds를 사용해 케라스 모델을 만들고 훈련. 데이터 증식과 분할 비율을 지정하여 로드하는 방법도 소개
    • TFRecord 구조를 소개하고 CPU/GPU를 최대한 활용할 수 있는 방법도 안내.
  • 5장: RNN 기초. 토큰화, 패딩을 소개하고 뷰티풀수프로 텍스트를 정제하는 방법도 소개합니다. tfds로 IMDb 데이터셋을 로드하여 정제하는 과정을 밟아 보고 CSV 파일과 JSON 파일에서 데이터를 로드하는 방법 학습
  • 6장: 임베딩 층, 밀집 층
    • 출력을 밀집 층으로 주입하기 위해 전역 풀링을 사용합니다. 만들어진 임베딩 벡터를 텐서플로의 임베딩 프로젝터로 시각화
    • 직접 임베딩을 훈련하는 대신 텐서플로 허브에서 사전 훈련된 임베딩을 사용하는 방법을 소개
  • 7장: 순환 모델의 필요성
    • 피보나치 수열을 사용해 순환 뉴런의 작동 방식을 설명합니다. 양방향 LSTM 층을 적용합니다. 이 모델을 개선하기 위해 순환 층을 쌓는 방법과 과대적합을 완화하기 위해 드롭아웃
  • 8장 : 텍스트 생성 모델. 모델을 개선하기 위해 순환 층을 쌓고 데이터셋을 확장
  • 9장: 시계열 데이터의 트렌드, 계절성, 자기상관, 잡음
    • 합성된 데이터를 사용해 베이스라인으로 단순한 예측을 만드는 모델을
    • 한 스텝 앞을 예측하는 것과 이동 평균과 계절성을 사용해 예측하는 방법을 소개
  • 10장: 시계열 데이터에 심층 신경망을 적용하여 문제 해결방법 
    •  tf.data를 사용해 윈도 데이터셋을 만드는 방법
    • 밀집 층을 사용한 모델로 훈련한 다음 케라스 튜너를 사용하여 최적의 하이퍼파라미터를 찾기
  • 11장:합성 시계열 데이터에 1D 합성곱을 적용하는 방법 학습
    •  케라스 튜너로 다시 한번 하이퍼파라미터 튜닝을 수행
    • 시계열 데이터에  SimpleRNN, GRU, LSTM, 드롭아웃, 양방향 RNN을 모두 적용
  • 12장:텐서플로 라이트를 소개
    • 훈련된 간단한 모델을 텐서플로 라이트로 변환하고 예측을 수행
    • 전이 학습으로 만든 분류 모델을 텐서플로 라이트로 변환, 양자화를 통해 모델을 최적화
  • 13장: 안드로이드 앱에서 텐서플로 라이트를 사용하는 방법을 소개
    •  안드로이드 스튜디오를 사용해 새 프로젝트 생성, 텐서플로 라이트 모델을 추가하고, 추론에 사용하는 방법을 단계별로 안내
    • 분류 모델을 사용해 앱에서 이미지를 처리하는 예제
  • 14장: iOS 앱에서 텐서플로 라이트를 사용방법 소개
    • 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 원칙


 

 느낀 점

박해선 님은 항상 원서보다 더 나은 번역서가 되기 위해서 역자 노트에 추가적인 내용을 상세히 적어주신다.  또, 이전에 경력이 풍부하셔서 독자가 어떤 부분이 궁금해할지를 잘 알고 보충해 주시는 게 잘 보였다. 


텐서플로에서 제공하는 다양한 기능을 압축하여 하나의 책에 담아내고 있어 소장하고 있다가 텐서플로 사용 시 필요한 부분 찾아보기 좋은 책이다. ETL 병렬화부터 텐서플로라이트 사용법까지...
인공지능이나 머신러닝 프로젝트해야 하는 분들 중에서 텐서플로를 프레임워크로 선정했다면 이 책 갖고 먼저 탐색해 보고 어떤 API 사용할지 정하면 효율적으로 프로젝트 진행 할 수 있을 거 같다. 이전에 웹캠으로 사용자 신체 위치 정보를 가져오는 딥러닝 프로젝트에서 속도나 개인정보 문제로 TensorFlow.js 를 사용했었는데 TFJS에서 멘토님들도 잘 몰랐었고 나 조차도 잘 모르는 상태여서 처음 시도 했었기 때문에 도달하는 데에 오래 걸렸었다. 이 책 원본을 미리 접했었다면 제공하는 API 및 활용 케이스 알고 활용 가능한 API를 선택하는 과정이 축소될 수 있지 않았을까 싶었다. 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
반응형