한빛출판네트워크

IT/모바일

밑바닥부터 시작하는 딥러닝 2

파이썬으로 직접 구현하며 배우는 순환 신경망과 자연어 처리

한빛미디어

번역서

판매중

좋아요: 6
  • 저자 : 사이토 고키
  • 역자 : 개앞맵시(이복연)
  • 출간일 : 2019-05-01
  • 페이지 : 420쪽
  • ISBN : 9791162241745
  • 물류코드 :10174

합계 : 26,100

  • 직접 구현하면서 배우는 본격 딥러닝 입문서 

    이번에는 순환 신경망과 자연어 처리다! 

     

    이 책은 『밑바닥부터 시작하는 딥러닝』에서 다루지 못했던 순환 신경망(RNN)을 자연어 처리와 시계열 데이터 처리에 사용하는 딥러닝 기술에 초점을 맞춰 살펴본다. 8장 구성으로 전체를 하나의 이야기처럼 순서대로 읽도록 꾸몄다. 전편에서 배운 내용을 요약한 신경망 복습을 첫 장에 배치하여 신경망과 파이썬 지식을 어느 정도 갖춘 분이라면 전편을 읽지 않아도 무리 없이 따라올 수 있도록 배려했다.

     

    추천사

     

    『밑바닥부터 시작하는 딥러닝』에 이어 널리 사용되는 딥러닝 모델을 직접 구현하면서 기본 원리를 체득하는 체험형 입문서입니다. 전편이 딥러닝의 기본 이론을 밑바닥부터 구현할 수 있도록 안내했다면 이번에는 자신만의 딥러닝 프레임워크를 구축할 수 있는 토대를 만들어줍니다. 파이썬과 넘파이의 활용까지 책임지는 훌륭한 지침서입니다. 딥러닝 프레임워크를 연구하는 모든 분께 이 책을 추천합니다. 

    - 윤영선, 한남대학교 정보통신공학과 교수

     

    머신러닝 라이브러리를 이용하여 딥러닝 분야에 뛰어들게 되면 네트워크의 내부 구조와 디테일한 부분들을 자세하게 알 수 없어 한없이 답답합니다. 이 책은 큰 부분부터 디테일한 부분까지 밑바닥부터 직접 구현해 네트워크에 대한 이해를 돕고, 답답함을 한 방에 날려줍니다. 그동안 국내에 출판된 책들이 RNN 계열이나 자연어 처리 계열을 잘 다루지 않는 것에 비해, 이 책은 기초적인 자연어 처리부터 응용, 심화 과정까지 설명합니다. 자연어 처리 분야에 뛰어들 분들께 추천합니다.

    - 박동주, 광주과학기술원 석사과정

     

    앞으로 자연어 처리 기본서는 이 책의 전과 후로 나뉠 겁니다. 전편에서와 마찬가지로 직관적이고 논리적으로 설명해주는 부분에서 감탄했습니다. 자연어 처리를 처음 접하는 입문자부터 단순히 프레임워크를 활용해본 경험자까지, 자연어 처리 과정이 어떻게 이루어지는지 알고 싶은 모든 분께 추천합니다. 특히 통계 기반 기법과 추론 기반 기법의 장단점과 차이점을 설명하는 부분이 명쾌해서 내용을 이해하는 데 큰 도움이 되었습니다.

    - 성민석, 홍익대학교 컴퓨터공학과 4학년

     

    딥러닝을 이용한 자연어 처리의 기본을 밑바닥부터 공부할 수 있습니다. 전편과 마찬가지로 RNN, LSTM, 어텐션 등을 구현하면서 각각의 작동 원리를 쉽게 공부할 수 있습니다. 저는 작년에 일본어판을 먼저 읽어보았는데, 번역 또한 전편과 마찬가지로 아주 좋습니다.

    - 김선웅, (주)스캐터랩 머신러닝 엔지니어

     

    이 책은 RNN 기반 신경망에 대한 개념을 쉽게 설명해주고, 복잡한 응용 모델들을 그림과 예제를 통해 알려줍니다. 시계열을 공부하는 분, RNN 공부를 시작하는 분께 큰 도움이 될 것입니다.

    - 김동성, 삼성 리서치(Samsung Research) 연구원

     

    쉽게 풀어쓴 이론과 친절하게 설명한 코드를 따라가다 보면 자연어 처리 분야의 발전 과정을 자연스럽게 이해할 수 있습니다. 딥러닝 기초가 필요한 분은 전편부터 공부하시는 걸 추천합니다.

    - 양민혁, 현대모비스 빅데이터팀

     

    밑바닥부터 시작하는 딥러닝 2편이 나오다니! 너무나 신납니다. 저처럼 어린 학생들도 자연어 처리에 맞추어 무리 없이 쉽게 이해하며 따라 할 수 있는 책입니다. 저와 같은 어린 학생들이 과연 할 수 있을까 망설이고 있다면, 주저 없이 이 책을 집어 드세요.

    - 김경수, 봉일천고등학교 2학년

     

    밑바닥부터시작하는딥러닝2_상세이미지_940.jpg

  • [저자] 사이토 고키

    1984년 나가사키 현 쓰시마 태생. 도쿄공업대학교 공학부를 졸업하고 도쿄대학대학원 학제정보학부 석사 과정을 수료했다. 현재는 기업에서 컴퓨터 비전과 기계학습 관련 연구•개발에 매진하고 있다. 오라일리재팬에서 『밑바닥부터 시작하는 딥러닝』을 집필했으며, 『실천 파이썬 3』, 『컴퓨터 시스템의 이론과 구현』, 『실천 기계학습 시스템』 등을 번역했다.

     

    [역자] 개앞맵시(이복연)

     

     

    고려대학교 컴퓨터학과를 졸업하고 삼성소프트웨어멤버십을 거쳐, 삼성전자 소프트웨어센터와 미디어솔루션센터에서 자바 가상 머신, 바다 플랫폼, 챗온 메신저 서비스 등을 개발했다. 주 업무 외에 분산 빌드, 지속적 통합, 앱 수명주기 관리 도구, 애자일 도입 등 동료 개발자들에게 실질적인 도움을 주는 일에 적극적이었다. 그 후 창업 전선에 뛰어들어 소셜 서비스, 금융 거래 프레임워크 등을 개발하다가, 무슨 바람이 불어서인지 책을 만들겠다며 기획•편집자(자칭 Wisdom Compiler)로 변신했다.

     

    한빛미디어에서 『밑바닥부터 시작하는 딥러닝』(2017)과 『Effective Unit Testing』(2013)을 번

    역했고, 인사이트에서 『이펙티브 자바, 3판』(2018)과 『JUnit 인 액션』(2011)을 번역했다.

     

    ‘개앞맵시’는 ‘개발자의 앞길에 맵핵 시전’을 줄인 말로,역자가 어려서부터 꿈꿔온 후학 양성의 의지를 담은 필명이다. 번역 외에도 게임, 서버, 웹 등 주요 직군별 개발자에게 필요한 기술과 역량을 다루는 책들로 로드맵을 만들어 공개하거나 프로그래머를 위한 책쓰기를 안내하는 등 재미난 아이디어가 생길 때마다 짬짬이 무언가를 만들어 공유하는 걸 좋아한다.

     

    - 페이스북 facebook.com/dev.loadmap

    - IT 전문서 로드맵 모음 mindmeister.com/ko/users/channel/86528

    - 프로그래머의 책쓰기 github.com/WegraLee/Writing-IT-Books 

  • CHAPTER 1 신경망 복습

    1.1 수학과 파이썬 복습

    1.2 신경망의 추론

    1.3 신경망의 학습

    1.4 신경망으로 문제를 풀다

    1.5 계산 고속화

    1.6 정리

     

    CHAPTER 2 자연어와 단어의 분산 표현

    2.1 자연어 처리란

    2.2 시소러스

    2.3 통계 기반 기법

    2.4 통계 기반 기법 개선하기

    2.5 정리

     

    CHAPTER 3 word2vec

    3.1 추론 기반 기법과 신경망

    3.2 단순한 word2vec

    3.3 학습 데이터 준비

    3.4 CBOW 모델 구현

    3.5 word2vec 보충

    3.6 정리

     

    CHAPTER 4 word2vec 속도 개선

    4.1 word2vec 개선 ①

    4.2 word2vec 개선 ②

    4.3 개선판 word2vec 학습

    4.4 word2vec 남은 주제

    4.5 정리

     

    CHAPTER 5 순환 신경망(RNN)

    5.1 확률과 언어 모델

    5.2 RNN이란

    5.3 RNN 구현

    5.4 시계열 데이터 처리 계층 구현

    5.5 RNNLM 학습과 평가

    5.6 정리

     

    CHAPTER 6 게이트가 추가된 RNN

    6.1 RNN의 문제점

    6.2 기울기 소실과 LSTM

    6.3 LSTM 구현

    6.4 LSTM을 사용한 언어 모델

    6.5 RNNLM 추가 개선

    6.6 정리

     

    CHAPTER 7 RNN을 사용한 문장 생성

    7.1 언어 모델을 사용한 문장 생성

    7.2 seq2seq

    7.3 seq2seq 구현

    7.4 seq2seq 개선

    7.5 seq2seq를 이용하는 애플리케이션

    7.6 정리

     

    CHAPTER 8 어텐션

    8.1 어텐션의 구조

    8.2 어텐션을 갖춘 seq2seq 구현

    8.3 어텐션 평가

    8.4 어텐션에 관한 남은 이야기

    8.5 어텐션 응용

    8.6 정리

     

    APPENDIX A 시그모이드 함수와 tanh 함수의 미분

    A.1 시그모이드 함수

    A.2 tanh 함수

    A.3 정리

     

    APPENDIX B WordNet 맛보기

    B.1 NLTK 설치

    B.2 WordNet에서 동의어 얻기

    B.3 WordNet과 단어 네트워크

    B.4 WordNet을 사용한 의미 유사도

     

    APPENDIX C GRU

    C.1 GRU의 인터페이스

    C.2 GRU의 계산 그래프

  • 『밑바닥부터 시작하는 딥러닝』의 명성을 그대로!

    이 책은 『밑바닥부터 시작하는 딥러닝』의 속편입니다. 전편에 이어 계속 딥러닝 기술을 다룹니

    다. 특히 이번에는 자연어 처리와 시계열 데이터 처리에 초점을 맞춰 딥러닝을 사용해 다양한

    문제에 도전합니다. 그리고 전편과 똑같이 ‘밑바닥부터 만든다’는 기치 아래, 딥러닝을 활용한

    고급 기술들을 차분히 만끽해갈 것입니다.

     

    자연어 처리와 시계열 데이터 처리에 초점을 맞춰!

    이 책에서는 자연어 처리와 시계열 데이터 처리에 초점을 맞춰 딥러닝에서 중요한 기술들을 배웁니다. 구체적으로는 word2vec과 RNN, LSTM과 GRU, seq2seq와 어텐션 같은 기술입니다. 이 책은 이 기술들을 가능한 한 쉬운 말로 설명하고 실제로 만들어보면서 확실한 내 것이 되도록 안내합니다.

     

    이 책에서 다루는 내용

    • 외부 라이브러리에 의지하지 않고, 밑바닥부터 딥러닝 프로그램을 구현합니다.
    • 『밑바닥부터 시작하는 딥러닝』의 속편으로서 자연어 처리와 시계열 데이터 처리에 사용하는 딥러닝 기술에 초점을 맞춥니다.
    • 실제로 동작하는 파이썬 소스 코드와 독자가 직접 실습해볼 수 있는 학습 환경을 제공합니다.
    • 가능한 한 쉬운 말로, 명확한 그림을 많이 동원하여 설명합니다.
    • 수식도 사용하지만 그 이상으로 소스 코드에 기초한 설명을 중시합니다.
    • ‘ 왜 그 기법이 뛰어난가?’, ‘왜 그 방식이 먹히는가?’, ‘왜 그것이 문제인가?’ 등 ‘왜’를 소중히 합니다.


    • 10년도 더 전에 대학에서 컴퓨터 과학을 전공했고 대학원에서 인공지능과 관련된 공부를 했었습니다. 


       


      당시 옆에 있던 연구실에서 뉴럴 네트워크에 대해 한참 무언가를 한다는 얘기를 들었었는데, 전 당시 이 책에서 소개하고 있던 통계적 모델과 비슷한 무언가를 했었고 저의 짧은 판단으로 너무 뜬구름 같은 세상의 얘기같다는 판단에 석사만 마치고 실용적인 것을 해보자는 생각에 취업을 했습니다.


       


      10년 간 직장 생활을 하다보니 인공지능과 관련된 소식들이 심심치 않게 들리고 어느덧 많은 사람들이 실제로 그 혜택을 경험하면서 이제는 꼭 전공자가 아니더라도 쉽게 자료나 강의도 접할 수 있는 시대가 되었습니다.


       


      저도 다시 관심을 갖고 이전 추억도 떠올리며 다시 공부를 해볼까 했는데 어디에서부터 이어가야 할지 좀 막연하더라구요.


       


      밑바닥부터 배우는 딥러닝 1, 2권은 저와 같은 사람에게 많은 도움이 되었습니다. 물론 오래 전에 잊어버린 벡터나 미분과 같은 개념을 다시 깨우는데 시간이 걸리긴 했지만 친절한 저자의 안내와 좋은 번역 품질 덕에 용기를 얻어  다시 감을 살리고 나면 고개를 끄덕이며 책을 읽게 됩니다.

       


      2권은 1권에서 다룬 신경망에 대한 기초적인 부분을 설명해 주기는 하지만,

      혹시 이쪽 분야를 처음 접하시는 분이시라면 1권부터 보실 것을 추천합니다.



       


      기초가 어느 정도 있으신 분이라면,

      2권에서도 1권처럼 저자의 세심한 배려를 통해 자연어 처리 분야에서 사용하는 기법들과 문제들을 신경망을 통해 어떻게 해결해 갔는지 하나씩 배울 수 있습니다.


       


      이제는 인공지능과 관련된 지식들이 많이 대중화 되었고 조금 더 지나면 어린 학생들도 쉽게 접하고 배우며 즐겁게 놀 수 있는 분야가 될 수 있겠다는 생각이 듭니다. 


      이 분야에 관심이 있으시고 처음에 조금 시간이 드는 것 같아도 차근 차근 하나씩 배워가시는 걸 좋아하시는 분들께는 이 책을 강력 추천드립니다.


       


      끝으로 이런 책을 쓸 수 있는 저자들이 국내에도 많이 나왔으면 좋겠습니다.


    • 2년 전 정말 재미있게 읽었던 책의 후속편이 나왔다. 당시에는 딥러닝을 공부하려면 기저의 원리를 정확하게 이해하는것이 필수라는 생각에 그 책을 집어들었다. 하지만 지금은 생각이 바뀌어서 각자 필요로 하는 것이 무엇인지가 가장 중요하다고 생각한다.


      예를 들어 딥러닝의 동작 원리가 무엇인지 너무 궁금해서 이 의문을 해결하지 못하고서는 단 한발자국도 앞으로 나아갈 수 없는 사람에겐 딥러닝의 동작 원리를 이해하는 것이 가장 중요하다. 하지만 당장 딥러닝이라는 마법의 도구를 가지고 내가 직면한 문제를 풀어보고 싶은 사람에겐 Tensorflow나 PyTorch 홈페이지의 최상단에 있는 예제 코드라를 복사, 붙여넣기 해서 내 문제에 맞게 수정하여 돌려보고 결과를 내보는 것이 훨씬 더 가치있는 일이다.


      전자의 경우에 이 책은 정말 흠잡을 데 없는 완벽한 안내서다. 물론 딥러닝 일반에 대한 의문을 해소하는데에는 1권이 좀 더 좋겠지만, 만약 딥러닝을 이용한 자연어 처리가 어떻게 이루어지는지에 관심이 많고 하지만 여전히 딥러닝이 무엇인지 잘 모르겠다면 2권으로 바로 시작해도 전혀 문제가 없을 것이다. 딥러닝의 근간을 이루는 수학적 원리부터 시작해서 1권의 요약본에 해당하는 내용을 제공한다.


      자연어 처리의 세자기 접근법(시소러스, 통계기반 그리고 추론 기반 기법)에 대해 간략하게 소개한 뒤 본격적으로 딥러닝을 이용한 자연어 처리에 입문하게 되는데 주요 키워드는 아래와 같다.


      • word2vec

      • RNN

      • BPTT (BackPropagation through Time)

      • LSTM (or GRU)

      • seq2seq

      • Attention


      위 키워드들에 대해 충분한 학습이 되어 있다면 최근 쏟아져 나오는 기술들을 이해하기 위한 기반은 다 갖추었다고 생각된다. 이 책의 내용 외에 더 찾아보아야 할 내용은 논문을 직접 보고싶거나 (책에 참고자료로 잘 정리되어있다.) Tensorflow, PyTorch와 같은 프레임워크로는 어떻게 구현하는지 정도라고 생각된다.


      만약 자신이 당장의 문제 해결에 더 관심이 있다면 이 책을 펼쳐보기보다는 조악하더라도 인터넷 여기저기서 예제 코드들을 짜깁기하여 조악한 결과라도 먼저 내보기를 추천하고 싶다. 운이 좋아 만족할만한 성능이 나왔다면 딥러닝 별거 아니네 하면서 계속 나아가면 된다. 원하는 성능이 나오지 않으면 여러 블로그, 유튜브를 검색해보면서 이것저것 붙여보고 튜닝도 해보자. 끝끝내 원하는 결과를 얻지 못하고 이제는 이게 도대체 어떻게 돌아가는건지, 수 많은 하이퍼 파라미터들이 어떤 역할을 하는건지 알아야겠다는 생각이 들면 그 때 이 책을 집어들면 가장 몰입감이 높을 것이라고 기대된다.


    • photo_2019-06-09_20-51-16.jpg


       


       


      자연어처리에 대해 구현해보고 싶은분들에게는 추천해보고싶은 책


       


      하지만 1편난이도로 생각하거나 1편두 안읽구 바로 보는것은 비추입니다.


       


      덕분에 내용자체는 매우 흥미롭습지만 


       


      이는 수학적 난이도가 높은편이여서 많은 시간이 소요됩니다.


       



      https://www.kudryavka.me/?p=646



    •  



      KakaoTalk_20190608_122647145.jpg


       


       



      즘 업계의 화두는 AI,빅데이터와 더불어 기계학습과딥러닝이라고 해도 과언이 아닙니다. 오래전부터 딥러닝에 관심을 가져왔었고 대학원에서 기계학습과 머신러닝이라는 제목으로 수업을 듣고 있는데 이번 한빛 미디어에서 진행하는 이벤트로 좋은 책을 리뷰할수 있는 기회가 생겨 밑바닥부터 시작하는 딥러닝2라는 책을 리뷰할려고 합니다.


       



      이책은 [밑바닥부터 시작하는 딥러닝]의 속편으로, 딥러닝의 가능성을 한층 더 깊게 설명하였습니다. 전편과 마찬가지로, 라이브러리나 프레임워크 등 기존 제품을 사용하지 않고 '밑바닥부터'만드는데 촛점을 뒀습니다.


       



      먼저 1장에서는 전편의 복습에서부터 시작합니다. 수학과 파이썬 그리고 신경망에 대한 복습으로 전편에서의 내용을 토대로 다시한번 짚고 넘어가는 장입니다.



      신경망에서는 백터와 행렬이 있는데, 먼저 이 용어들에 대해 정리하여 이 책을 읽는데 도움이 될수 있도록 하였습니다.



      저같이 수포자들에게는 벡터와 행렬이라는 이름만 들어도 선뜻 다가서기가 어려웠는데 기본적인 개념과 예를 제시하여 신경망에서 있어 사용하는데 도움이 될수 있도록 하였습니다. 처음에는 읽기가 어려웠는데 몇번 읽다보니 어느정도는 이해가 되었습니다.



      KakaoTalk_20190608_122644366.jpg



      2장은 자연어 처리의 대해서 소개합니다. 컴퓨터에게 '단어의 의미'를 이해시키는 주제로 먼저 시소러스를 이용한 기법을 설명하고, 이어서 통계 기반 기법으로



      설명을 하였습니다. 이장에서도 수학적인 용어가 나와서 이해하기가 어려웠는데 오히려 파이썬 코드를 타이핑하면서 결과값을 확인하니 그나마 좀 알수 있었습니다.



      KakaoTalk_20190608_122644847.jpg

      3장과4장은 자연어 언어 처리중에서도 단어의 분산 표현에 관한 내용입니다. 이장에서는 "단순한" word2vec 구현하기입니다. 단어를 자동으로 분석해 가까운 의미의 키워드를 유사한 숫자값으로 표현하는 이 기술은 많은 자연어 처리에서 많은 성과로 입증된 AI 딥러닝 기술중에 하나입니다. 실제로 예제를 가지고 구현해 볼수 있어서 좋았습니다.


      KakaoTalk_20190608_122645304.jpg



      그리고 5장,6장,7장에서는 순환신경망(RNN)에 대해서 다루고 있습니다. RNN은 데이터를 순환시킴으로써 과거,현재,미래로의 데이터를 계속해서 순환해서 흘려보냅니다. RNN은 순환 경로를 포함하며 과거의 정보를 기억 할 수 있었습니다. 구조가 단순하여 구현도 쉽게 할수 있지만 성능이 좋지 못합니다.



      요즘에는 단순한 RNN 대신 LSTM이나 GRU라는 계층이 많이 쓰입니다. 6장과 7장에서 LSTM의 구조를 살펴보고 LSTM 을 사용해 언어 모델을 만들어 실제로 데이터를 학습하는 방법도 설명해 줍니다.



      KakaoTalk_20190608_122643905.jpg



      "밑바닥부터 시작하는 딥러닝"에서 다루지 못했던 순환 신경망(RNN)을 자연어 처리와 시계열 데이터 처리에 사용하는 딥러닝 기술에 초점을 맞춰 설명을 하였습니다.



      전편에서 배운 내용을 토대로 신경망과 파이썬지식을 어느 정도 갖췄다면 전편을 읽지 않아도 무리 없어 따라 올수 있을것 같습니다.  


       




    •  


       


      드디어 기다렸던 밑바닥부터 시작하는 딥러닝 2 책이 5월에 출간되었기 때문에, 리뷰해보고자 한다. 


       



      밑바닥부터 시작하는 딥러닝 1은 기초적인 "파이썬"에 초점을 맞춰 초보자들이 딥러닝에 입문 할 수 있게 도와준 책이라면, 이번에 새로이 출간된 밑바닥부터 시작하는 딥러닝 2는 "순환신경망"과 "자연어처리"에 입문하기 위한 기초적인 지식들을 담았다.





       



      밑바닥부터 시작하는 딥러닝 1과 2 모두 "밑바닥부터" 시작하고자 하는 이들에게 도움을 주고자 하는 방향은 변치 않았다. 책에서 배울 수 있는 기술들은 다음과 같다. 


       



      • 파이썬을 이용한 텍스트 처리


      • 딥러닝 등장 이전의 단어 표현 방법


      • 단어 벡터를 얻기 위한 word2vec


      • 대규모 데이터의 학습을 고속화 하는 네거티브 샘플링


      • 시계열 데이터를 처리하는 RNN, LSTM, GRU


      • 시계열 데이터의 오차역전파법인 BPTT


      • 문장을 생성하는 신경망


      • 시계열 데이터를 다른 시계열 데이터로 변환하는 seq2seq


      • 중요 정보에 주목하는 어텐션 


       


       


       



      이 책은 딥러닝 프레임워크 사용법을 다루지 않으며, 오로지 넘파이(Numpy), 맷플롯립(Matplotlib)에 기반한 파이썬 코드들만을 다룬다. 또한, 주로 자연어 처리 기법에 대해 다루며, 영상과 같은 다른 주제는 다루지 않는다. 딥러닝 프레임 워크 사용법을 터득하고 싶다면 한빛미디어에서 출간된 "텐서플로를 활용한 머신러닝"을 필독하길 추천한다. 


       



      또한, 이 책은 신경망에 대한 기초적인 지식을 1장에서만 살짝 언급하고 있기 때문에 아주 기초적인 신경망에 대한 지식을 얻고 싶다면, 1권을 사는 것을 추천하고, 자연어 처리나 순환 신경망에 관심이 있다면 2권을 사는 것을 추천한다. 


       


       


       


       


      책에서 주의 깊게 보았던 챕터는 계산 고속화, word2vec, RNN 이다. 


       


       




      1. 계산 고속화 


      이 책에서는 자연어 처리 뿐만 아니라 "계산 고속화" 라는 주제에 대해서도 다루고 있다. 신경망의 학습과 추론에 드는 연산량은 상당하기 때문에 신경망에서는 얼마나 빠르게 계산 하느냐가 중요한 주제이다. 그래서 이 책에서는 "비트 정밀도"와 "GPU"에 대해 설명하고 있었다. 최근에 관심 갖게된 분야가 바로 "최적화" 분야인데, 아직 입문자라 그런지 전체적인 흐름에 대한 개념이 미숙했는데, 책을 통해서 보완하게 되었다. 


       


      간단히 설명하자면, 넘파이의 부동소수점 수는 기본적으로 64 데이터 타입을 사용하는데, 신경망에서는 32비트 부동소수점 수로도 인식률을 거의 떨어뜨리는 일 없이 수행할 수 있다고 한다. 메모리 관점에서 봤을 때, 64 비트 보다는 32 비트가 더 매력적으로 들려온다. 그래서 넘파이에서 32 비트 부동소수점 수를 우선으로 사용하려면 다음과 같이 데이터 타입을 지정한다. 필자도 64 데이터 타입으로 코드를 짜지않고 32 비트로 변경하여 코드를 짜니 성능이 훨씬 더 좋아졌었다. 


       


      b = np.random.randn(3).astype(np.float32)

       


      32 비트보다 더 강력한 16 비트 부동소수점 수를 사용해도 인식률이 거의 떨어지지 않는다고 말하고 있지만 ... 사실 인식률이 떨어지는건 사실이다. 일반적으로 CPU와 GPU는 연산 자체를 32 비트로 수행하기 때문에 16 비트로 변환하여 계산하더라도 계산 자체가 32 비트로 이루어지기 때문에 처리 속도의 영향을 미치지 않는다. 


       


      여기서 번외로 쿠파이(cupy) 라는 개념이 나오는데 GPU 를 이용하여 병렬 계산을 수행하는 라이브러리이다. 엔비디아 GPU 에서만 동작하며, CUDA 를 설치해야 사용할 수 있다. 


       


       


       


       




      1. word2vec


      단어를 벡터로 표현하는 방법은 크게 "통계 기반 기법"과 "추론 기반 기법"이 있다고 한다. word2vec 은 통계 기반 기법의 문제점을 해결하고, 추론 기반 기법의 이점을 거시적 관점에서 설명할 수 있다. 통계 기반 학습 방법은 학습 데이터를 한꺼번에 처리하는데, 이에 반해 추론 기반 기법은 학습 데이터의 일부를 사용하여 순차적으로 학습한다. 즉 배치 학습과 미니 배치 학습의 관계라고 볼 수 있다. 


       



      추론 기반 기법은 주변 단어(맥락)가 주어졌을 때 빈칸에 무슨 단어가 들어가는지를 추측하는 작업이라고 할 수 있다. 이러한 추론 문제를 반복해서 풀면서 단어의 출현 패턴을 학습하게 된다. 신경망에서의 단어 처리는 원핫 표현으로 나타낸다고 한다. 


       



      you □ goodbye and I say hello. 


       


      이 책에서는 word2vec 을 구현하기 위한 자세한 설명과 CBOW 모델에 대한 설명도 자세히 기술해놓았다. 


       


       


       


       



      • 순환 신경망


      순환신경망은 피드포워드 신경망이 "시계열 데이터"의 패턴을 충분히 학습 할 수 없다는 단점 때문에 등장하게 되었다. 순환신경망은 RNN(Recurrent Neural Network) 인데, 몇번이나 반복해서 일어나는 일을 뜻한다. 즉, 신경망을 순환하면서 학습하게 되는 형태로 구성이 된다. 순환하기 위해서는 경로가 존재해야 데이터가 같은 장소를 반복해서 지나 갈 수 있다. 


       


      마찬가지로 이 책에서는 RNN의 계층 구현을 위한 설명을 자세히 기술해놓았다. 덧붙여, 게이트가 추가된 RNN에 대해서도 다루고 있었으며, RNN 구조에 기반한 LSTM 에 대해서도 다루고 있었다. 


       


       


       


       


       


       


       


       


       




       


       


       



      밑바닥 부터 시작하는 딥러닝 1과 마찬가지로 실습에 필요한 소스코드를 git에 공개하고 있다.



      공식 깃허브 저장소는 다음과 같다. 


       



      https://github.com/WegraLee/deep-learning-from-scratch-2


       



       


      WegraLee/deep-learning-from-scratch-2


      『밑바닥부터 시작하는 딥러닝 ❷』(한빛미디어, 2019). Contribute to WegraLee/deep-learning-from-scratch-2 development by creating an account on GitHub.


      github.com




       


       



      대체적으로 밑바닥부터 시리즈는 진짜 "밑바닥" 부터 차근차근 세세하게 공부하여 큰 물고기를 잡을 수 있는 능력을 개발자들에게 길러주도록 훈련된 책 같다. 깃허브도 공개되어있고, 소스코드가 포함되어있기 때문에 책을 보면서 실습을 할 수 있고, 이 책에서는 누구나 노트북으로 실습할 수 있게끔 GPU 를 쓰는 코드는 최소화 시켰다고 한다.



       



      어찌보면 이 책은 "누구나" 밑바닥부터 시작할 수 있는 딥러닝 책이 아닌가 싶다. 딥러닝 쌩 초보자들이 읽기에는 시즌 2보다는 시즌1이 수월하겠지만, 딥러닝을 이미 접했거나, 자연어 처리나 순환 신경망에 관심이 있는 개발자들이라면 충분히 무리 없이 따라 갈 수 있는 책이라고 생각된다. 개인적으로 밑바닥부터 시리즈가 계속 나와줬으면 하는 바람이 있다. 


       


    •  



      IMG_2653.JPG


       


       


      제가 처음 딥러닝을 공부했을 당시 개념을 잡지 못해 어려움을 겪고 있었을 때 "Deep Learning from Scratch - 밑바닥부터 시작하는 딥러닝"이라는 책을 보고 개념을 잡게 되었습니다. 


      뭔가 막혔던 천장을 뚫고 올라간 기분이라 할까요. 한 단계 올라 올라선 느낌이었습니다.


       


      그 뒤로 다른 딥러닝 관련 책을 보거나 MOOC 강좌, 논문리뷰등 공부할 때 항상 참조 하는 책이었습니다. 그렇게 기초를 잘 닦고 나니 계속 한단계 한단계 수월하게 올라갈 수 있었습니다. 


       


      계속 새롭게 업그레이드 되는지 실펴보고 있었는데 "Deep Learning from Scratch- 밑바닥부터 시작하는 딥러닝 2"의 출간 소식을 접하게 되었습니다. 그리고 게다가 제가 취약하다고 느끼고 있었던 RNN과 NLP관련 내용이라니...... 계속 출간을 기다렸고 드디어 공부를 했습니다.


       



      IMG_2725.jpg


       


       


       


      역시 이 책으로 제가 부족하다고 느꼈던 부분에 대해 개념부터 확실히 잡을 수 있게 되었습니다.


       


      이 책은 1편과 마찬가지로 해당 기술의 주요 개념을 먼저 쉽게 설명한 후에 파이썬 코드로 구현까지 진행합니다. 


       


      이 책에서 배울 수 있는 기술은 다음과 같습니다. 


       


      • 파이썬을 이용한 텍스트 처리

      • 딥러닝 등장 이전의 단어 표현 방법

      • 단어 벡터를 얻기 위한 word2vec( CBOW 모델과 skip-gram모델)

      • 대규모 데이터 학습을 고속화하는 네거티브 샘플링

      • 시계열 데이터를 처리하는 RNN, LSTM, GRU

      • 시계열 데이터의 오차역전파법인 BPTT

      • 문장을 생성하는 신경망

      • 시계열 데이터를 다른 시계열 데이터로 변환하는 seq2seq

      • 중요 정보에 주목하는 어텐션


       


       


       


       



       


      제가 생각하는 이책의 백미는 LSTM과 어텐션 입니다.

       


      LSTM에서는 각 gate가 어떤 의미인지 설명을 하고 있는데, 이렇게 각 gate의 의미를 쉽게 설명한 자료는 다른 곳에서는 본 적이 없었던 것 같습니다.


      "어텐션"도 마찬가지로 맥락 벡터를 구하고 가중치를 구하는 과정등 각 과정이 왜 필요한지 개념을 쉽게 설명을 하고 있습니다. 그동안 어렴풋이 알았던 내용에 대해서도 확실히 개념을 잡게 되었네요.


      저는 주변에 처음 딥러닝을 공부하는 분들에게 "Deep Learning from Scratch-밑바닥부터 시작하는 딥러닝"시리즈를 자신있게 권합니다.



       

    •  



      2990.jpg


       


      딥러닝은 몇 년전부터 관심이 있었던 분야였다. 그래서 다른 사람이 먼저 시작하긴 했지만 회사 내 스터디도 참가하여 텐서플로우를 이용한 딥러닝도 다뤄보면서 공부하곤 했었다. 그러다가 바쁜 업무와 온갖 핑계로 인해 딥러닝과는 잠시 멀어져 있었다. 그리고 기회가 주어져 이 책을 만나게 되었다.


       


       



      밑바닥부터 시작하는 딥러닝 2


       



      전편이 있는 서적인데, 전편을 읽어보진 못했지만 2편으로도 나에게는 다시 딥러닝을 살펴볼 수 있는 좋은 기회가 주어졌다. 저자는 이 책을 누구를 위한 책이 아닌가를 지향하는 책이라고 얘기한다. 그저 밑바닥부터 차근차근 공부하는 딥러닝책이라고만 설명한다. 


       



      이 책에서는 다루지 않는 부분이 많다.


       



      딥러닝 분야의 최신 연구에 대해서는 자세히 다루지 않는다.



      카페, 텐서플로, 체이너 등 딥러닝 프레임워크 사용법은 설명하지 않는다.



      딥러닝 이론을 아주 상세한 수준까지는 담지 않는다.



      자연어 처리를 주로 다루고, 영상, 음성, 강화 학습 등의 주제는 다루지 않는다.


       



      이 책에서는 요즘 핫한 분야인 영상, 음성, 강화 학습에 대해 다루지 않고, 자연어 처리를 다룬다. 그 점이 나에겐 오히려 좋은 점으로 다가왔다. 딥러닝을 잘 모를뿐더러, 밑바닥부터 차근차근 배우려면 조금 쉬운 예제가 필요했기 때문이다.



      예제 소스는 python3 로 작성되어 있고, GitHub 저장소에서 소스 코드를 받을 수 있다.


       



      https://github.com/WegraLee/deep-learning-from-scratch-2


       



      numpy와 matplotlib를 제외하고 외부 라이브러리는 사용하지 않고 딥러닝의 밑바닥부터 구현하는 것이 목표라고 한다. 외부 라이브러리를 사용하면 코드 작성은 편해지겠지만 원리를 잘 이해하지 못하는 경우가 많다. 맨땅에 헤딩하는 것 같지만 기초부터 차근차근 접근하는 방식이 마음에 든다.


       



      이 책은 밑바닥부터 시작하는 딥러닝 2편이기 때문에 전편에 이어 딥러닝의 가능성을 한층더 깊이 다룰 것이라고 소개한다.



      1장은 전편의 요약으로 시작한다. 수학과 파이썬 그리고 신경망의 복습을 담고 있다. 수학 공식과 파이썬 코드가 독자들을 어렵게 하지만 밑바닥부터 하려면 이정도는 해줘야 딥러닝을 한다고 할 수 있겠다.


       



      2991.jpg


       



      2장에서는 시소러스를 이용한 자연어와 단어의 분산 표현, 3, 4장에서는 ord2vec 그리고 순환신경망(RNN) 등 자연어 처리에 대한 딥러닝을 차례대로 학습할 수 있는 내용이 담겨있다.


       



      책을 여러번 보고 있지만 수학공식은 여전히 눈에 잘 들어오지 않는다. 오히려 파이썬 코드만 눈에 잘 들어온다. GitHub에서 소스도 다운받아 예제 하나씩 돌려보고 있는데, 순환신경망(RNN)을 제대로 이해하는게 제일 중요한 것 같다.


       



      RNN을 이용하여 언어 모델을 만들고 이를 구현함으로써 자연어 처리관련 다양한 어플리케이션에 응용할 수 있기 때문이다. 특히 마지막장의 어텐션 구조를 활용한 연구는 활용폭도 넓고, 최근 연구에도 많이 활용된다고 하니 다시 한번 주목할 필요가 있다고 생각한다. 


       



      2992.jpg






      오랜만에 수학공식을 보니 혼란스럽긴한데, 딥러닝에 발을 들인 이상 내 것으로 만들기 위해 밑바닥부터 차근차근 다시 해보려한다.


       



      한빛출판사의 나는 리뷰어다 활동을 통해 도서를 제공받아 작성한 리뷰입니다


       



      #밑바닥부터시작하는딥러닝2 #딥러닝 #나는리뷰어다 #한빛미디어













    • 이 책은 딥러닝입문 책으로는 정말 유명한 밑바탁부터 시작하는 딥러닝2이다.



      딥러닝 입문을 위해 전문가들이 추천하거나 개인적으로 알아본 결과



      밑바닥딥러닝이 상당히 높게 평가된다는 것을 알게 되었다.






      따라서 밑바닥 부터시작하는 딥러닝1 에 해당되는 책을 먼저 보았고 상당히 괜찮은 책이라 판단했다. 기본적인 핵심은 이렇다. 외적인 라이브러리를 최소한으로 사용하면서 각 개념에 대한 기초 뼈대 코드를 직접만들어 봄으로써 하나하나 기초부터 이해하며 공부하자!






      김성훈교수님의 딥러닝 영상과 같이 공부한다면 정말 좋은 방법이라 생각한다.



      이렇게 좋은 책이라 판단했지만 습득과 체득의 차이는 크기 때문에 체득을 위해 다시 공부할 예정이다. 그러던 찰나 "밑바닥부터 시작하는 딥러닝2"가 나왔다는 소식을 알게 되었다.






      은근슬쩍 한빛에서 나는리뷰어다를 통해서 받을 수 있지 않을까? 했더니 역시나!!!!!!!!!1



      한빛미디어로부터 책을 받게 되었다!!!!!!!!!!!!!!!!!!!



      역시 으리가 넘치는 한빛 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ



      감사합니다.






      하지만 워낙 짧은 시간안에 서평을 해야해서...제대로 보기에는 이미 글렀고...



      전체적으로 빠르게 훑어 보면서 내가 이 책으로 부터 어떤 내용을 공부할 수 있는지 정리해 보겠다.






      CHAPTER 1 신경망 복습



      이전 책 밑바닥딥러닝1에 내용을 간단하게 복습한다.



      백터와 행렬, 브로드캐스트, 행렬의 곱등 간단하게 복습



      신경망에 대한 이야기 가중치, 활성화 함수, 순전파, 역전파, 손실함수, 미분 기울기,



      연쇄 법칙 개념들...



      계산 그래프를 설명하며 노드들간의 계산방식에 대한 개념(노드덧셈,노드곱셈,노드분기,노드반복)



      경사하강법으로 가중치를 갱신하는 것 마지막으로 테스트코드를 통해 실습을 해보며 확인하고



      계산을 고속화 하기위한 내용, GPU를 사용해서 계산하는 쿠파이등에 대한 내용이다.






      CHAPTER 2 자연어와 단어의 분산 표현



      자연어처리(Natural Language Processing)NLP



      말은 문자로 구성되며 말의 의미는 단어로 구성된다.



      단어를 컴퓨터에게 어떻게 이해시킬까?



      시소러스(유의어사전 대표적WordNet) :



      사람 노가다, 시대변화따라가기 어려움, 미묘한 차이 표현불가



      통계기반



      말뭉치(대량의 텍스트데이터)에서 핵심을 추출,



      분산표현 : RGB처럼 단어를 벡터로 표현한다.



      분포 가설 : 단어의 의미는 주변 단어에 의해 형성된다.



      동시발생 행렬 : 어떤 단어에 주목했을 때 그 주변에 어떤 단어가 몇 번이나 등장하는가



      벡터 간 유사도 : 유사 단어의 랭킹 표시하여 단어간의 유사도를 알아본다



      통계기반 기법 개선



      점별 상호정보량 Pointwise Mutual Information(PMI) :



      등장 횟수보다는 관련성이 얼마나 강한가?



      (두 단어의 동시발생 횟수가 0이면 오류가나서 양의 상호정보량 Positive PMI(PPMI)을 사용함



      차원감소 : 중요한 정보는 유지하면서 벡터의 차원을 줄인다 특잇값분해Singular Value Decomposition (SVD)



      펜트리뱅크 PTB 데이터셋( 주어진 기법의 품질을 측정하는 벤치마크로 자주 이용됨)



      추론기반(word2vec)






      CHAPTER 3 word2vec



      여기까지...통계기반은 대규모 말뭉치를 다룰때 문제가 발생함 그래서 다음 추론기반을 보자



      추론기반(word2vec)



      통계기반기법은 학습데이터를 꺼번에 처리함(배치처리) 부하가 큼



      추론기반기법은 학습데이터의 일부를 사용 순차적으로 학습(미니배치처리)



      따라서 대량의 데이터도 추론기반기법으로 학습이 가능



      추론기반기법개요



      추론기반기법에는 모델을 만들어 신경망을 사용 학습의 결과로 단어의 분산표현을 얻음



      신경망에서 단어 처리 대표적인 방법 원핫



      단순한 Word2vec



      모델을 신경망으로 구축 continuous bag-of-word CBOW 모델



      CBOW와 skip-gram



      중심단어로 맥락단어를 알아내냐 맥락단어로 중심단어를 알아내냐의 차이점



      CBOW 모델과



      맥락으로부터 타깃을 추측하는 용도의 신경망(타깃은 중앙단어 주변단어들이 맥락)



      skip-gram 모델



      CBOW에서 다루는 맥락과 타깃을 역전시킨 모델



      정리하면 통계기반과 추론기반이 서로 우열을 가릴수 없다고 함



      하이퍼파라미터에 크게 의존함 이후에 이 두기법을 융합한 GloVe기법이 등장






      CHAPTER 4 word2vec 속도 개선



      속도개선의 방법설명 이거는 내가 진짜 사용할때 자세히 보기로..






      CHAPTER 5 순환 신경망(RNN)



      지금까지 설명한 신경망은 피드포워드 유형의 신경망(단방향)



      시계열데이터를 잘 다루지못함 그래서 순환신경망 RNN(Recurrent Neural Network)등장


  • 내용이 없습니다.
닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?