"Do It! BERT와 GPT로 배우는 자연어 처리" Review

Dain Kwon·2022년 1월 10일
0

books-self-study

목록 보기
1/1
post-thumbnail

운좋게 이지스 퍼블리싱에서 서평단으로 당첨이 되어 접하게 된 책이다. 현재 다니고 있는 학회에서 한 학기 동안 NLP로 세션을 진행해야 하는데, CV쪽만 파본지라 기초나 입문 기반이 제대로 안 채워진 것 같아 NLP 기초를 새해 맞아 공부해보려 했다. 마침 서평단을 모집하길래 바로 지원했는데 돼서 기분 좋았다.😉

👀누구를 위한 책?

나는 RNN, Transformer(Attention)처럼 CV 분야에서도 자주 쓰이는 원리나 모델에 대해 공부한 기반이 있어 이 책을 공부할 때는 막힘없이 술술 읽은 것 같다. 아마 Colab을 이용하여 코드 실습이나 코드 수정을 해본 경험이 없는 입문자라면 책의 친절함에 감동받을 수도 있다. NLP를 어느 정도 아는 분들보다는 NLP에 부담없이 입문해보고 싶은 분들에게 추천한다. (마치 나처럼) 비전공자분들도 흥미롭게 공부할 수 있는, 적당한 난이도이다.

  • ML, DL 기초는 어느 정도 있지만 NLP 분야는 들어보기만 한 입문자들
  • NLP에 이제 막 관심을 가지기 시작한 분들
  • 언어 모델에 대한 inference 경험이 없지만 해보고 싶은 분들
  • 오픈소스를 적극적으로 이용해 보고 싶은 분들
  • 한국어 데이터를 다뤄보고 싶은 분들

👀책의 특징

철저하고 친절한 입문의 과정

책에 참 귀여운 그림들이 많다. 처음 접했을 때의 진입장벽을 친절하게 아래로 내려주는 장치로 생각하면 될 것 같다. 그렇다고 두루뭉실하게 이론을 다루냐고 묻는다면 그건 또 아니다. 알차게 여러가지의 토큰화 기법을 소개하거나 어텐션과 RNN 비교, 각 구조의 원리, 특징 및 장점 등을 깔끔하게 정리해두었다. 각 챕터가 끝날 때의 연계 논문이나 링크 추천하는 부분도 공부할 때 아주 좋았다. 실습은 주로 소개한 모델을 주어진 task에 이용하기 위해 어떻게 변형하는지 실제 코드를 통한 단계별 구현으로 잘 보여주고 있는데, 이 부분에서 주어진 task에 따라 모델을 어떻게 이용해야 하는지를 잘 배울 수 있었다.

실습의 비중이 많은 책

  • 책의 2/3가 이론을 바로 배우고 이것을 어떻게 구현하는지의 구성으로 이루어져 있다. 1~3장은 이론의 비중이 크다면, 나머지 4~8장은 전부 단계별 실습을 정리한 부분이다. 토큰화 기법을 배우면 토크나이저를 어떻게 구현하는지, 모델의 원리를 배우면 모델을 task 수행에 어떻게 이용하는지, 모두 '이론 - 이론 적용 실습'의 흐름으로 공부할 수 있다.

  • 실습으로 Colab과 pytorch를 이용하는데, pytorch를 이용한 DL 기반 언어 모델 구현 과정, 그리고 모델 학습에 필요한 모듈 등에 친숙해질 수 있을 것이다. 흥미로웠던 것은 간단한 웹서비스 구현 실습이었는데, 이를 보면서 학습한 모델을 어떻게 실제 서비스에서 inference하는지의 간단한 과정을 코드로 살펴볼 수 있었다.

  • 여러 개의 (최신) 오픈소스 라이브러리를 사용한다. 주로 모델링할 때 오픈소스를 가져와 사용하는 경우가 잦기 때문에 이런 것을 처음 사용해보시는 분들은 이런식으로 불러와서 이용하면 되는구나 하는 감도 나름 잡을 수 있다. 책에서는 pytorch-lightning, 허깅페이스의 transformers 라이브러리를 이용한다.

한국어 기반 데이터셋으로 공부하자

입문할 때에, 특히 언어 모델을 처음 공부할 때 이용하는 데이터셋이 한국어라면 (task가 전부 '자연어 처리'이다 보니) 훨씬 원리를 이해하기 쉽다. 언어 모델 실습 튜토리얼을 한국어 데이터로 할 수 있다는 점이 또 다른 이 책의 강점이자 특성이라 생각한다.

👀서평을 마치며, 참고하면 좋은 것들

책의 두께가 생각보다 얇아 놀랐는데, 내용은 또 허술하지 않아 읽어가며 구글링과 논문을 함께 병행하여 읽은 책이다. 분야 입문을 위해 알아둬야 하는 기초적인 베이스를 넓게, 적당한 깊이로 소개하고 있다. '알아두면 좋아요' 코너에서 같이 읽으면 좋은 논문 링크를 첨부하기도 하는데, 책의 내용을 좀 더 빠삭하게 알고 싶다면 넘어가지 말고 세부적으로 읽어보는 것을 추천한다.

트렌드, 과제 등을 설명할 때 영단어가 함께 기재되어 있는 단어 여럿을 나열한 부분이 있다. 또한 단어를 하나의 소제목으로 짧게 DL 개념을 소개하는 부분도 군데군데 수록되어 있다. 이 단어들 또한 NLP, 또는 DL 분야에서 중요한 task나 기술로 자리잡고 있는 기본 용어이기 때문에 관심 있는 부분을 더 자세히 알아보는 것이 보다 깊은 이해에 도움이 될 것이다.

입문자 분들이 읽어보신다면, 모델의 이론과 함께 모델을 train하기까지 어떤 과정을 거치는지에 대한 전체적 흐름을 이해할 수 있는 좋은 overview를 제공하는 책이 될 것이라 생각한다. 단계별로 모델 구현, output 후처리 등의 설명을 첨부하기 때문에 손쉽게 따라하며 배울 수 있는 친절한 책이다.

profile
야금야금 진화중인 개발자

0개의 댓글