3분 딥러닝: 파이토치맛

오늘 소개할 도서는 '펭귄브로의 3분 딥러닝: 파이토치맛'으로 두 명의 저자가 파이토리로 인공지능 구현하는 방법을 설명합니다. 인공지능을 개발할 때 많이 사용되는 프레임워크는 텐서플로우, 케라스, 파이토치 등이 있으며, 실제 연구에는 케라스 및 텐서플로우가 현재 많이 사용되고 있지만, 최근 들어 파이토치 또한 논문 및 연구 쪽에서 어렵지 않게 볼 수 있습니다. 개인적으로 추상화가 너무 잘되어 있어 디테일한 수정이 불가능했지만, 다른 프레임워크 보다 좀 더 빠르게 구현할 수 있다는 장점이 있었습니다. 

 

파이토치는 페이스북에서 만든 딥러닝 모델 오픈소스 프레임워크입니다. 이 책은 ANN, DNN, CNN, RNN, GAN 등을 파이토치를 이용해 구현해봅니다. 3분 시리즈의 특성상 수학적 공식과 같은 이론 위주의 도서보다는 코드 위주로 빠르게 구현하고 이해하는 데 집중하고 있습니다. 3장은 파이토치로 ANN인 인공신경망을 구현하고 있습니다. 딥러닝의 가장 기본인 ANN은 각 노드들이 유기적으로 연결되어 가중치를 역전파 알고리즘 등으로 조정하고 최적화합니다. 5장은 지금까지도 가장 활발히 사용되고 계속적으로 발전되고 있는지 CNN을 사용해 이미지 처리를 다룹니다. CNN은 컨볼루션 신경망으로 합성곱 신경망이라 합니다. 컨볼루션은 계층적으로 이미지를 인식하도록 단계마다 이미지의 특징을 추출하게 됩니다. 이렇게 컨볼루션을 거쳐 만들어진 이미지를 특성 맵이라고 합니다. 이후 ResNet도 소개하는데, 데이터셋이 복잡해질수록 학습량은 많아지고 좀 더 효율적인 아키텍처 필요합니다. 컨볼루션층의 출력에 전의 모든 레이어에 쓰였던 입력을 더해 과거의 특징을 함께 가져갑니다. 

 

7장의 RNN은 순차적인 데이터를 다룹니다. 흔히 보는 텍스트, 글, 음악, 시계열 데이터가 해당됩니다. 책에서는 설명도 설명이지만 코드와 함께 구현과 테스트가 따라하기 쉽게 적혀있습니다. 9장은 생산적 적대 신경망인 GAN을 소개합니다. 새로운 진짜같은 가짜 데이터를 생성하는 GAN은 아이디어부터 활용까지 정말 놀라운 딥러닝 방법입니다. 거기에다가 사용자가 원하는 레이블 정보와 함께 조건을 걸어 원하는 가짜 이미지를 생성하는 조건부 GAN도 존재합니다. 이후 현재까지도 다양한 GAN이 파생되어 연구되어 있습니다. 파이토치는 제품, 연구 등 딥러닝이 활용되는 분야에서 구현을 빠르게 할 수 있는 프로엠워크입니다. 입문자부터 시작해 학생, 전문가까지 빠르게 개념을 습득하고 싶을 때 이 책이 많은 도움이 될 것입니다. 특히, 이론보다는 실습이 좀 더 재미있고 효과가 좋은 독자에게 더욱 도움이 될 것입니다.

파이썬으로 배우는 딥러닝 교과서

오늘 살펴볼 도서는 한빛미디어의 '파이썬으로 배우는 딥러닝 교과서'입니다. 부제로 '이미지 인식 모델을 만들면서 익히는 딥러닝'을 사용하고 있는데, 파이썬 기초부터 시작해 이미지 인식을 다루는 딥러닝 예제를 살펴보는 번역서입니다. 딥러닝 초심자부터 중급자까지 다루는 도서인만큼 프로그래밍 경험이 다소 있지만 파이썬에 익숙치 않고 딥러닝이 처음인 독자를 위한 도서입니다. 기본적인 컴퓨터 지식과 기초적인 프로그래밍 경험, 함수 및 미분, 벡터, 행렬 등의 기초가 있으면 좋지만 이 책의 앞부분에서 꽤 다루고 있기때문에 기억이 가물가물하더라도 괜찮습니다. 초심자부터 시작하는 도서인만큼 처음부터 개발 환경을 준비하고, 머신러닝이 무엇인지 등 이론적인 내용부터 시작해, 파이썬을 활용한 딥러닝에 필수적인 사항인 변수 및 자료형, 문법, Numpy, Pandas 패키지 등을 다루고 있습니다. 

 

10장부터는 본격적인 데이터 시각화에 대해 다루고 있는데, 딥러닝의 결과를 시각적으로 나타내고 성능 또한 그래프로 나타내는 것이 중요합니다. 실제 딥러닝은 수많은 수치 연산으로 이뤄지기 때문에 성능 평가와 그 결과를 시각화해 이해하고 객관적인 지표로 사용하는 것이 중요합니다. 따라서 한 번 익혀놓으면 어떻게 활용해야 될지 감이 잡히고 시간이 흐른 후 여러분만의 딥러닝 모델을 만들때 또는 다른 사람의 모델을 볼 때 많은 도움이 될 것입니다. 기본적인 패키지는 matplotlib를 사용하지만 최근에는 반응형, 웹형 패키지도 이용하고 있습니다. 더군다나 tensorboard와 같은 추상화과 잘된 패키지를 이용할 경우 전문가들처럼 다양한 수치 및 시각적인 자료를 코드 한 줄로 해결할 수 있습니다. 패키지를 워낙에 많이 존재하니 본인한테 익숙하거나 많은 사람들이 사용하는 패키지를 사용하는 것이 좋을 듯 합니다.

 

이미지 데이터의 경우 15장부터 OpenCV를 활용해 처리합니다. 이미지 데이터는 행렬과 유사하므로 또다른 접근법이 필요합니다. 많이 사용되는 프레임워크는 OpenCV로 컴퓨터 비전분야에서 많이 사용됩니다. 16장은 지도학습 중 분류문제에 대한 기초를 다루고 있습니다. 대표적인 통계적 기법인 회귀, 서포트 벡터 머신, 랜덤 포레스트 등을 다루고 있는데 데이터의 종류, 형태, 구성에 따라 이러한 기법을 자유자재로 다뤄야 되는데 이 때 하이퍼파라미터와 같이 기법의 수치적인 사항을 조절해 알맞게 적용해야 합니다. 머신러닝과 다르게 딥러닝은 신경망을 이용해 손실 함수를 정의하고 이 손실함수가 최소화가 되도록 반복적으로 학습합니다. 신경망 중 가장 널리 사용되는 것이 합성곱 신경망인 CNN으로 21장부터 이미지 인식에 필요한 CNN을 다루고 있습니다. 분류 문제를 다루고 있으며, 해당 이미지가 dog 이미지인지, cat 이미지인지 등 해당 이미지의 클래스를 구별합니다. 이미지 인식률을 높이기 위해서 다양한 데이터 기법들이 사용되는데, 여기서는 22장에서 데이터 부풀리기, 정규화, 전이 학습 등 비교적 간단하게 설명하고 있으니 좀 더 깊게 알고 싶으면 개인적인 공부가 더 필요할 듯 합니다.

 

이 책은 전체적으로 파이썬을 활용한 딥러닝의 기초를 위한 도서입니다. 초심자에게 파이썬 기초부터 딥러닝이 어떻게 구성되고 실제 구현이 어떻게 이뤄지는 지 궁금한 독자분들이 많은 것입니다. 특히 비전공자일수록 그럴 수 있는데, 초급부터 중급 독자를 위한 도서인 만큼 넓은 계층에서 지금은 널리 사용되는 딥러닝의 기초를 익혀 많은 도움이 되길 바랍니다.

 

친절한 그림과 코드가 훌륭하다.

벌써 봄날씨가 가득합니다. 올해도 여김없이 서평단 기회를 가져다준 한빛미디어 관계자분들께 감사드립니다.

항상 많은 도움이 되는 리뷰가 되도록 노력하겠습니다.

 

오늘 책은 알기쉬운 비유와 기초 수학으로 시작하는 그로킹 딥러닝이라는 도서입니다. 

구글 딥마인트 리서치 사이언티스트인 앤드루 트라스크가 저술했고, 박상현 역자가 옮겼다. 인공신경망을 연구하는 저자로서 이번 도서 역시 제목에서 알수있듯이 딥러닝에 관한 도서이다. 딥러닝을 처음 접하는 입문자에게 필요한 이론 도서인 셈이다. 파이썬을 기본으로 코드가 구성되지만 코드의 양은 그렇게 많지 않다. 

 

2장은 머신러닝에 관련된 내용으로 파라미터릭 모델과 넌파라미터릭 모델 및 지도, 비지도 학습의 패러다임에 대해 소개한다. 딥러닝에 대해 본격적으로 공부하기 전 컴퓨터가 어떻게 학습하는지 알아보는 것이다. 3장부터 본격적인 순전파 신경망에 대해 알아본다. 결국 딥러닝의 최종목표는 예측이다. 미래에 어떤 일이 일어날지 과거의 데이터를 기반으로 확률적으로 알아보는 것이다. 이 때 여러 입력이 있을 수 있으며, 출력도 한 개 또는 그 이상일 수 있다. 이러한 다양한 문제를 모델로 구축하는 것이 딥러닝의 핵심이다. 

 

수포자도 이해할 수 있는 딥러닝 입문

이러한 확률을 계산하는데 있어 다양한 수학적 기법이 사용되는데 그 중 모델의 최소값, 즉 미분해서 0이 되는 지점을 찾기위해서는 경사하강법 등이 필요하다. 4장은 이러한 기법을 코드를 통해 살펴볼 수 있는데, 넘어가 5장에서 이를 좀 더 일반화시키고 있다. 

 

정규화와 함께 오버피팅의 원인등을 알아보는 8장,9장에서는 활성화 함수에 대해서도 알아보는데, 대표적인 sigmoid와 tanh의 차이와 함께 언제 무엇을 사용해야 하는지도 보여준다. 나아가 10장부터는 딥러닝의 대표적인 모델인 CNN과 RNN에 대해 살펴본다. RNN의 비중이 좀 더 많은 단어주머니 모델 및 임베딩 등의 내용을 다루며 연속적인 언어 모델링에서 딥러닝이 어떻게 사용되는지 알 수 있다. 

 

13장부터는 딥러닝 프레임워크에 대해 알아본다. 우리가 잘 알고 있는 텐서플로, 파이토치, 케라스 모두 딥러닝 프레임워크 중 하나이다. 결국 코드를 좀 더 간단하게 하여 딥러닝 구축을 손쉽고 빠르게 하며 성능도 높여주는 것이 목적이다. 복잡한 모델을 디버깅하거나 내부적인 동작을 좀 더 깊이 알고싶을 때 어떻게 사용되는지도 알 수 있다. 

 

처음에 이 책에서는 수포자도 이해할 수 있다고 했다. 결국 복잡한 수식이 나오지 않았다는 뜻인데, 실제로 수식을 거의 없애고 도식과 간단한 코드로 나타냈다. 이공계열을 전공하지 않았지만 딥러닝을 배워야하는 독자에게 필요한 책이다. 비유와 그림이 이 책의 내용을 잘 안내하고 있으며, 딥러닝, 머신러닝, 신경망 구현, 모델링 등에 대해 잘 설명하고 있으며 번역도 훌륭하게 이뤄진 도서이다. 많은 독자들에게 추천하는 바이다.

 

 

"이 리뷰는 한빛미디어의 지원을 받아 작성되었습니다"

케라스 창시자에게 배우는 딥러닝

케라스 창시자에게 배우는 딥러닝

프랑소와 숄레 저/박해선

단어 하나, 코드 한 줄 버릴 것이 없다!
창시자의 철학까지 담은 딥러닝 입문서

케라스 창시자이자 구글 딥러닝 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이 책 역시 많은 사람에게 딥러닝을 전달하는 또 다른 방법이며, 딥러닝 이면의 개념과 구현을 가능하면 쉽게 이해할 수 있게 하는 데 중점을 두었다. 1부에서는 딥러닝, 신경망, 머신 러닝의 기초를, 2부에서는 컴퓨터 비전, 텍스트, 시퀀스, 생성 모델을 위한 딥러닝 같은 실전 딥러닝을 설명한다. 이외에도 딥러닝을 언제 적용하는지, 한계는 무엇인지...


이 책은 케라스 창시자인 프랑소와 숄페의 저서로, 케라스에 입문하거나 케라스로 처음 딥러닝을 경험하려는 사람들에게 좋습니다...(중략)...한 가지 특이한 점은 단순하게 내용을 나열하거나 사전식으로 늘어놓는 것이 아니라 어떠한 과제를 제시하고 그 과제를 해결하는 과정에서 케라스 코드와 함께 딥러닝 구현 방법을 설명합니다.

-추천사 중...-



본 책은 딥러닝을 처음 배우고나 이해의 폭을 넓히가조 하는 모든 독자층을 위한 도서이다. 머신러닝 기술자, 소프트웨어 엔지니어, 학생들까지 많은 것을 배울 수 있다. 그에 맞게 이 책은 크게 1부와 2부로 구성되어 있다. 1부는 딥러닝을 이론적으로 소개하고 있다. 딥러닝의 배경, 정의, 머신 러닝과 신경망을 시작하는 데 필요한 모든 개념이 들어가 있다.



1장: AI, 머신 러닝, 딥러닝에 관한 핵심 사항과 배경지식

2장: 딥러닝을 배우기 위한 기초 개념에 대해 배운다. 텐서, 텐서 연산, 경사 하강법, 역전파에 대해 배운다.

3장: 신경망에 필요한 딥러닝 프레임워크인 케라스를 소개하고, 딥러닝 컴퓨터 설정, 예제등을 배운다. 회귀 작업을 위한 간단한 신경망을 학습시킬 수 있고 학습 과정에 어떤 일이 일어났는지 확실히 이해할 수 있다.

4장: 대표적인 머신 러닝 작업 흐름을 배운다. 흔히 나타나는 문제와 해결책도 소개한다.


2부는 컴퓨터 비전과 자연어 처리 분야의 실용적인 딥러닝 애플리케이션에 대해 자세히 다룬다. 


5장: 이미지 분류에 알맞은 실용적인 컴퓨터 비전 예제를 배운다.

6장: 텍스트와 시계열과 같은 시퀀스 연속 데이터를 처리하기 위한 기술에 대해 배운다.

7장: 최고 수준의 딥러닝 모델을 구축해본다.

8장: 이미지와 텍스트를 생성할 수 있는 딥러닝 생성 모델을 소개한다.


450페이지에 달하는 이 책은 딥러닝, 머신러닝, 인공지능을 케라스라는 프레임워크를 이용해 쉽고 재미있게 설명해주고 있다. 데이터를 준비하고, 전처리하며, 모델을 구성하고, 훈련된 데이터를 검증하는 일반적인 과정부터 시작해, CNN, RNN, LSTM과 같은 신경망 종류도 배운다.


한 가지 내용을 집어서 살펴보자. 딥러닝에서는 그래디언트 소실 문제가 존재한다. 흔히 심층 신경망을 학습시키기 위해 사용되는 알고리즘에 역전파 알고리즘이 있는데, 이는 출력 손실에서 얻은 피드백 신호를 하위 층에 전파하는 알고리즘이다. 이 때 피드백 신호가 계속 깊은 층을 통과해 전파되면 신호가 아주 작아지거나 완전히 사라질 수 있다. 이렇게 신경망이 학습되지 않는 문제는 그래디언트 소실(vanishing gradient)문제라고 한다.



딥러닝에서 모든 것은 벡터라고 한다. 모두가 기하하적인 공간에 놓은 하나의 포인트인거이다. 이러한 다차원 벡터를 흔히 텐서라 불리며, 이러한 텐서의 공간에서 각 텐서를 연결해 연산을 수행하는 것이 텐서플로우(Tensorflow) 프레임워크의 핵심 구조이다. 한 마디로 마술 같다. 데이터가 가진 의미를 벡터와 기하학 공간으로 변환해 특정 공간에서 다른 공간으로 매핑하는 복잡한 기하하적 변환을 차근차근 학습한다. 원본 데이터에 있는 모든 형태의 관계를 찾기 위해 충분한 고차원 공간이 필요하게 되는 이유이다.


4장 머신 러닝의 기본 요소에서 과대적합(overfitting)과 과소적합(underfitting)에 대해 설명하고 있다. 머신 러닝에서는 항상 이러한 문제가 발생하게 되는데 상황에 따라 어떻게 해결해야 하는지 잘 설명해주고 있다. 과대적합을 막는 가장 단순한 방법으로는 모델의 학습 파라미터 수를 줄이는 것이다. 그 외에도 가중치 규제를 두어 네트워크의 손실 함수에 큰 가중치로 연관된 비용을 추가한다. 그 외에 훈련하는 동안 무작위로 층의 일부 출력 특성을 제외시키는 드롭아웃을 추가하는 방법이 있다. 이러한 방법 모두 그래프와 개념 그림, 코드와 함께 상세하지만 어렵지 않게 설명해주고 있다.



개인적으로 지금까지 읽어본 책 중에서 가장 '역주'가 많은 책이지 않나 싶다. 매 페이지마다 1개 이상의 역주가 있을 만큼 번역자의 꼼꼼함이 돋보이는 책이다. 보충 설명이 필요하거나 혼동될 수 있는 부분을 잘 정리해주고 있어 독자들이 읽기에 많은 도움이 된다.


부록에서는 예제를 실행하기 위해 구축해야할 설정 및 프로그램 설치등 환경 구성에 관한 부분을 친절히 설명해주고 있다. 끝으로 이 책은 쉽고 알차고, 예제까지 배울 수 있는 훌륭한 딥러닝 및 인공지능 기본서이다. 개념부터 실전 예제까지 꾸준히 공부하며 차근차근 완성해 나가보자! 


+ Recent posts