이전

리뷰 (2)

한줄평
평점 분포
  • 리뷰 총점10 50%
  • 리뷰 총점8 50%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 8.0
  • 40대 9.0
  • 50대 0.0
리뷰 총점 종이책
캐글에서 커널에서 요즘 자주 보게 되어 관심 갖게 된 케라스
"캐글에서 커널에서 요즘 자주 보게 되어 관심 갖게 된 케라스" 내용보기
길벗출판사의 개발자 리뷰어 이벤트를 통해 작성된 리뷰입니다. 최근 케라스에 관심을 갖게 된건 캐글 경진대회에서 상위권에 든 사람들이 케라스를 사용한 것을 보고 부터다. 하지만 케라스로 출판된 책이 많지 않아 책으로 정리 된 내용을 학습하고 싶었는데 최근 케라스 책이 몇 권 출판 되었다. 이 책도 그 중 하나로 딥러닝에 대한 이론 소개와 함께 칼텍의 데이터셋을 통해 사물인
"캐글에서 커널에서 요즘 자주 보게 되어 관심 갖게 된 케라스" 내용보기

길벗출판사의 개발자 리뷰어 이벤트를 통해 작성된 리뷰입니다.

index_image index_image

최근 케라스에 관심을 갖게 된건 캐글 경진대회에서 상위권에 든 사람들이 케라스를 사용한 것을 보고 부터다. 하지만 케라스로 출판된 책이 많지 않아 책으로 정리 된 내용을 학습하고 싶었는데 최근 케라스 책이 몇 권 출판 되었다. 이 책도 그 중 하나로 딥러닝에 대한 이론 소개와 함께 칼텍의 데이터셋을 통해 사물인식을 해볼 수 있는 예제와 삼목게임을 통한 강화학습으로 이루어져 있다. 케라스는 공식문서의 튜토리얼에서 30초만에 시작할 수 있다고 소개하는 만큼 쉽게 시작할 수 있다고 한다. 이 책은 케라스를 통해 딥러닝을 실험해 볼 수 있도록 어려운 수식보다는 코드를 통해 이해할 수 있도록 구성되어 있다. 4장은 이 책에서 가장 많은 비중을 차지하고 있으며 공통 데이터를 구축하고 9층, 16층, 152층의 네트워크로 학습과 예측을 하여 예측 정확도를 비교한다. 2단계 일반화와 자기 학습을 실행해서 모델 평균의 정답률을 올려본다. 그리고 6장에서는 딥러닝을 이용한 강화학습도 다루고 있다. 딥러닝을 시작한지 얼마 되지 않은 초보자로서 딥러닝 내부의 이론과 논문 자료들은 아직도 이해하기 어렵고 복잡하다. 방대한 딥러닝 이론을 깊이있게 알지는 못하더라도 코드를 통해 직접 딥러닝으로 이미지를 판별하고 예측해 볼 수 있다. 모델의 층을 늘려가면서 정답률을 올려볼 수 있는 예제를 돌려보면 케라스의 활용방법에 대해서는 어느정도 이해할 수 있는 책이다. 예제의 소스코드는 파이썬2로 작성되어 있으며 백엔드로는 Theano를 사용한다. 또 GPU를 통해 학습한다는 것을 전제로 하고 있기 때문에 CPU환경에서 돌리려면 성능을 비롯한 제약이 있다. 케라스를 학습하는 것 뿐만 아니라 케라스를 통해 무언가를 구현하고 직접 실험해 보고자 하는 목적에 충실한 책이다.

index_image index_image

그리고 아래는 책을 읽으며 정리한 내용이다.

1장

1장에서는 딥러닝의 성과로 시작한다. 음성인식의 경우 딥러닝을 사용함으로 과거에 비해 오답률이 20~30% 낮아졌다고 한다. 이 책에서는 이미지의 클래스 분류, 물체 검출, 강화학습을 다룬다. 이미지처리에서는 사진 속에 있는 사물을 검출하는 물체 검출을 다루며 엑스레이에서 암세포의 위치와 형태를 예측하는 것도 할 수 있다. 데이터를 다룰 때 예측의 정확도를 높이는 데이터의 확장, 전처리에 대한 사전처리 기법을 다룬다. 그리고 이 책에서 다루는 데이터셋은 칼텍에서 제공하는 머신러닝 이미지 Caltech 101을 사용한다. 그리고 이 이미지들은 101개의 카테고리로 분류하여 각각의 레이블을 붙여놓았다.

케라스는 Theano, 텐서플로우용 라이브러리로 간단하게 딥러닝을 실행할 수 있다.

그리고 GPU를 활용할 수 있는 방법에 대한 안내도 있다. GPU는 3차원 그래픽 계산을 처리하는 프로세서이지만 딥러닝의 방대한 행렬연산을 수행할 때 학습과 예측에 걸리는 시간을 10배 이상 줄여줄 수 있다. 여기에서는 게임용PC를 딥러닝용으로 셋팅하는 방법에 대해서도 소개하는데 우분투설치와 셋팅 방법까지 소개하고 있다.

2장 네트워크의 구성

chapter02

chapter02

chapter02

2장은 네트워크 구성으로 이미지 인식 분야에서 이용되는 네트워크와 층의 기본 구조를 설명한다. FFNN, FNN, CNN을 합성곱 이미지와 함께 설명해 준다.

3장

3장은 기본 용어로 과학습을 제어하여 예측정확도를 높이는 방법을 설명한다.

chapter03

chapter03

1) 딥러닝에는 입력데이터와 그 입력데이터의 지도학습 데이터가 있으며 예측 된 출력 데이터와 지도 학습 데이터의 오차를 이용하여 각 층의 가중치를 업데이트 해서 최적의 가중치를 구한다.

2) 활성화 함수는 뇌의 시냅스가 어떤 임계값을 초과하면 활성화하는 것처럼 움직임을 모방하기 때문에 활성화 함수(전달 함수 또는 출력 함수)라고도 한다.

chapter03

3) 손실문제는 예측한 출력 데이터와 지도 학습 데이터를 비교하여 오차를 계산하는 함수다. 여기에서는 평균 제곱 오차(mean squared error), 크로스 엔트로피(cross-entropy)는 클래스를 분류하는 오차함수를 소개한다.

chapter03

4) 확률적 경사 하강법(Stochastic Gradient Descent, SGD)은 가중치w에 대한 오차 E의 경사를 구해 경사가 양의 부호이면 w를 음의 방향으로 업데이트 하고 반대로 경사가 음의 부호면 w를 양의 방향으로 업데이트 한다. 모멘텀은 가중치의 업데이트양(벡터)이 이전 가중치의 업데이트양(벡터)과 방향이 크게 변하지 않게 하는 기능이다. 예를 들어 자동차의 핸들을 급하게 크게 틀어도 타이어의 각도는 서서히 변하는 것과 같은 이치다.

chapter03

5) 오차역전파법(back propagation) 출력층에서 역방향으로 진행해서 오차 신호를 입력층 쪽으로 점차 전파하여 가는 산출방법이다.

6) 트레이닝 데이터셋에 특화 된 파라미터가 나오는 것을 과잉 적합 또는 과학습이라 한다. 이를 통제하기 위해 K분할 교차 검증, 홀드아웃 검증을 사용한다.

  • 정규화 : 딥러닝 네트워크에는 많은 가중치(파라미터)가 있다. 학습할 때 이 파라미터 값에 제약을 주어서 과학습을 억제하는 방법을 정규화라고 한다. 정규화 중 하나로 가중치 감쇠 방법이 있는데 기존 손실 함수에 가중치의 제곱합을 더한 것을 새로운 손실 함으로 한다. 손실 함수의 값이 작을 수록 가중치를 업데이트하는데 가중치를 업데이트 할 때 각 가중치의 값이 극단적으로 큰 값 또는 작은 값을 갖지 않도록 파라미터에 제약을 가하는 방법이다.
  • 드롭아웃 : 층의 유닛을 드롭아웃하면서 학습하는 것으로 과학습을 억제하는 방법이다.

7) 데이터 확장과 전처리 데이터 확장은 트레이닝 데이터셋을 기초로 변형된 데이터셋을 만들어 데이터의 양을 증가시키다. 트레이닝 데이터셋과 테스트 데이터셋이 한쪽으로 치우쳐져 있다면 전처리를 해서 보정할 수 있다. 트레이닝 데이터셋에서 하는 전처리는 테스트 데이터셋에서도 해야 한다.

chapter03

8) 사전 학습된 모델 사전 학습된 모델을 이용하는 바법을 전이 학습이라고 한다. 파인튜닝은 사전 학습된 모델의 가중치를 신경망 가중치의 초깃값으로 설정하고, 새로운 트레이닝 데이터셋을 사용하여 재학습하는 방법이다. 파인튜닝을 하면 작은 에폭 수로도 높은 성능을 얻을 수 있다.

9) 학습 계수 조정

  • AdaGrad
  • RMSProp
  • Adam

4장 이미지 클래스의 분류

chapter04

chapter04

chapter04

이 책에서 가장 많은 비중을 차지하고 있는 챕터로 실제 딥러닝PC를 사용해 학습과 예측을 하는 것을 설명한다. 공통 데이터를 구축한 후 9층, 16층, 152층의 네트워크로 학습과 예측을 실행하여 예측의 정확도를 비교한다. CUDA환경에서 실행해 보는 것을 가정하고 있기 때문에 환경이 다르면 성능에 제약이 있고 사소하지만 가상환경 설정 내용이 pip freeze 되어 있으면 구성이 좀 더 편할 거 같다. 그리고 imagemagicK 같은 일부 라이브러리에 대한 설치 안내가 좀 부족한 편이다. 백엔드로 돌아가는 텐서플로우와 Theano에 대한 버전도 맞춰주어야 하는 데 환경설정에 관련 된 부분이 좀 더 친절했으면 하는 아쉬움이 있다.

5장 물체 검출 : 26층의 네트워크

chapter05

chapter06

Yolo(You only look once) : 물체의 의치, 크기, 종류 예측에 사용되며 동영상에서 실시간으로 물체를 검출하는 기능도 있지만 이 책에서는 정지 이미지에 물체를 검출하는 기능을 사용한다. 신경망을 이용하는 물체 검출에는 R-CNN과 Fast R-CNN이 있다. Yolo처럼 물체 검출 성능이 있고 R-CNN의 1000배, Fast R-CNN의 100배 정도 고속으로 처리할 수 있다고 알려져 있다.

6장 강화 학습 : 삼목 게임에 강한 컴퓨터 키우기

강화 학습은 이세돌과 알파고의 바둑대결에서 영국의 구글 딥마인드가 개발한 컴퓨터 바둑 프로그램으로 강화 학습 방법으로 만들었다.

  • Q러닝 : 강화학습에는 각 행동에 지도 학습 데이터가 붙어있지 않다. 지도 학습 데이터 대신에 각 행동에 Q값의 지표를 예측하여 부여한다. 바둑과 장기에서 도중에 한 수는 좋은지 나쁜지 알 수 없지만, 최후에 승리하면 그때까지 둔 일련의 수가 좋다고 생각하게 되는게 강화 학습의 특성이며 지도 학습 데이터를 단순하게 구현할 수 없는 복잡한 행동에서도 학습이 가능하다.

  • DQN : Q러닝에서 모든 상태, 행동을 망라할 수는 없지만 딥러닝을 이용하여 근사적인 Q값을 구한 것으로 보상받을 가능성이 높은 다음 한 수를 예상하는 것은 가능하다. Q러닝과 딥러닝을 이용한 모델을 DQN이라 한다.

정리

케라스에 대한 책이 많지 않아 정리 된 내용을 보고 싶었는데 최근에 출간 된 책으로 케라스를 학습할 수 있었다. 아직 케라스를 많이 사용해 보지는 않았지만 백엔드를 Theano나 텐서플로우를 사용하고 다른 딥러닝 알고리즘에 비해쉽게 사용할 수 있기 때문에 앞으로도 케라스를 계속 사용해 볼 예정이다. 이 책을 통해 케라스의 기본 개념과 딥러닝 이론에 대해 정리할 수 있었다.

z****e 2018.01.14. 신고 공감 0 댓글 0
리뷰 총점 종이책
딥러닝 부트캠프 케라스
"딥러닝 부트캠프 케라스" 내용보기
현업에서 딥러닝 이전의 머신러닝 알고리즘을 다루다보니  AI업계에서 딥러닝의  발전속도가 매우 빨라 이를 발맞추지 못하는것같은 자신이 불안했었습니다. 텐서플로우를 비롯해 여러 프레임워크들도 지원을 잘 해주고있는 현 상황에서 이 책은 아주 반가운 책이었습니다. 텐서플로우를 기반으로 보다 쉽게 모델구현이 가능하고 인기를 몰고있는 케라스 프레임워크를 실제 관심있었던 컴
"딥러닝 부트캠프 케라스" 내용보기

현업에서 딥러닝 이전의 머신러닝 알고리즘을 다루다보니  AI업계에서 딥러닝의  발전속도가 매우 빨라 이를 발맞추지 못하는것같은 자신이 불안했었습니다. 텐서플로우를 비롯해 여러 프레임워크들도 지원을 잘 해주고있는 현 상황에서 이 책은 아주 반가운 책이었습니다.


텐서플로우를 기반으로 보다 쉽게 모델구현이 가능하고 인기를 몰고있는 케라스 프레임워크를 실제 관심있었던 컴퓨터 비전 분야의 주요 해결과제인 이미지 클래스 분류, 물제검출을 맛볼 수 있고 거기에 강화학습까지 체험해볼 수 있는 내용을 담고있다니 흥미롭기 그지 없었습니다.


이 책을 덮으며, 몇가지 장단점을 공유해볼까 합니다.


장점 1. 주요한 이론을 핵심적으로 짚어줍니다.

    최근 머신러닝 계는 발전속도는 빠르나 기반지식의 수준이 높아 진입장벽이 높다고 생각이 듭니다. 이 책을 통해 공부할 것도 많고 습득해야하는 기술도 많은데 드는 시간과 노력을 많이 줄였습니다. 예를 들어, 이미지 클래스 분류에서 CNN이 인기가 있다? 고 하지만 CNN이 정확히 어떤 알고리즘인지, 현재까지의 역사는 무엇인지에 대해서 CNN의 정의 및 원리를 설명하고 시간대별로 주요한 CNN 알고리즘인 AlexNet, VGGNet, GoogLeNet, ResNet 이 등장했다는 것을 설명합니다. 물론, 각각이 어떤 네트워크 구조를 가지는지도 상세한 설명이 있습니다.


장점 2. 실습코드가 최신버전으로 잘 작성되어있습니다.  

   실습코드를 작성하면서 중요한 점이라 생각하는 것은 최신버전을 잘 반영하는지 입니다. 발전속도가 빠르고 프레임워크들의 내부 코드 개선과정도 빠르다보니 이전에 작성한 예제코드들이 실행오류가 나는 상황들이 빈번합니다. 하지만 이 책의 코드들은 최신화되어있으며 실행환경과 소프트웨어버전을 동일하게 셋팅했다는 가정 하에 매우 잘 동작하는 것을 확인했습니다. 코드 내부 구조의 이해를 위해선 한 줄 한 줄의 의미를 파악하는 것도 중요하나, 우선 이 코드들이 잘 동작하는지가 첫번째 겠지요. 그런 의미에서 본 책이 최신인 만큼 코드 또한 최신으로 잘 반영되어있습니다.


다음으로 단점들입니다.

단점 1. 완전히 새로운 환경으로 셋팅하는것을 설명합니다.

   저의 경우, 윈도우10환경의 Python 3를 사용합니다만, 본 책에서 설명하는 설치환경은 리눅스OS의 Python 2 버전입니다. 그렇기 때문에 저처럼 윈도우 유저들은 버추얼박스 등을 설정하지않으면 OS부터 설치하기는 힘들어 보입니다. Python 3환경에서는 본 코드가 잘 동작하지않는 면을 보입니다. 윈도우OS에서의 케라스 설치 라든가, 파이썬 가상환경 설정을 따로 찾아볼 수 있게 정보를 제공하면 좋겠다는 생각이 들었습니다.


단점 2. 좀더 많은 내용을 담았으면 하는 아쉬움이 있습니다.

   책을 읽어나갈때는 몰랐었는데 다 덮으면서 뒤돌아 보면 아쉬움이 많이 남던 책이었습니다. 컴퓨터 비전 뿐 아니라, 자연어 처리, 음성 인식 이라는 큰 분야도 있고 알고리즘으로 보면 CNN 뿐 아니라, RNN, GAN 과 같이 굵직한 알고리즘 들도 있는 걸로 알고 있습니다. 강화학습만 해도 그렇구요. CNN계열 알고리즘을 중점적으로 설명하다보니 분량 상의 문제가 있을수도 있다고 예상되지만 얕고 넓게라면 폭넓은 분야나 알고리즘을 과제별로 실습해보고싶다는 생각이 들었습니다.



결과적으로 이 책으로 많은 시간을 절약하여 감사함과 아쉬움으로 책을 덮습니다.

본 책은 파이썬을 처음 다루시는 분들에게는 절대 추천드리지않습니다.



YES마니아 : 로얄 g******l 2018.01.14. 신고 공감 0 댓글 0