[책 리뷰] 트랜스포머를 활용한 자연어 처리

Yejin Kim·2023년 3월 26일
0

나는 리뷰어다

목록 보기
2/3

최근 chatGPT로 인해 많은 사람들이 NLP(Natural Language Processing; 자연어 처리)에 관심을 가지고 있다. 나 또한 chatGPT를 사용해 보았고, 그 성능에 놀라지 않을 수가 없었다.
실제 개념, 사건 등에 대한 내용 뿐만 아니라 추상적인 개념과 논리적인 사고력이 필요한 내용까지 그럴싸하게 대답을 해준다. 비록 아직 그 대답의 신뢰도에 대해서는 얘기가 많지만 불과 몇년 전까지만 해도 상상하지 못했던 수준의 모델이었다.

어떻게 이렇게 수준 높은 자연어 처리 작업이 가능했던 것일까? 그 기술적 바탕이 되는 model이 바로 "Transformer(트랜스포머)"다.

Transformer는 2017년에 소개되었고, 그 이후 학계와 산업계에서 광범위하게 사용되고 있다. Google의 검색 엔진, OpenAI의 GPT, Github의 Copilot(코파일럿) 등에서도 모두 tranformer가 사용된다.

이 책은 Transformer를 쉽게 활용하여 애플리케이션을 만들 수 있는 방법에 대해 소개한다.
읽어보니 머신러닝, 딥러닝에 대한 기본은 어느 정도 잡혀 있다고 가정하고 설명을 하고 있다는 느낌을 받았다. 적어도 딥러닝에 대한 강의 하나 혹은 책 한 권 정도는 읽어 본 적이 있어야 이 책을 수월하게 읽을 수 있을 것 같다.
나의 경우에는 딥러닝에 대한 강의를 하나 본 정도의 수준이고, RNN, LTSM, Attention mechanism 에 대해서 책을 읽기 전 간단한 조사를 통해 사전 학습을 했다.

1장은 Transformer의 introduction이다.
transformer의 이전 model의 문제점은 무엇이었는지, 이를 해결하기 위해 transformer에는 어떤 기법이 적용되었는지 등을 간략히 살펴볼 수 있다.
또한 허깅페이스의 트랜스포머스에서 제공하는 API를 통해 NLP로 처리할 수 있는 task들에 대해 살펴본다.

2장은 Text classification(텍스트 분류)에 대해 얘기한다.
챕터의 이름은 텍스트 분류이지만 실제로 내용은 data를 어떻게 처리할 것인가에 더 가까웠다.
우리가 어떤 문장 "I didn't feel humilated."를 입력으로 사용할 때, 이를 model이 적절히 활용할 수 있도록 전처리를 해야 한다. 알파벳 단위로 ['i', 'd', 'i', ... , 'e', 'd', '.'] 와 같이 자르는 것이 좋을 지, 단어 단위로 ['I', 'didnt', ... , 'humilated'] 와 같이 자르는 것이 좋을 지에 대해 논의한다. 또한 잘라낸 알파벳, 혹은 단어를 어떻게 수치화하여 model에게 입력으로 넣을 지 등에 대해서도 얘기한다.

결국 모든 학습 과정은 data를 어떻게 처리할 지에 대한 문제인데, 이에 대해 코드와 함께 상세히 설명되어 있어 개인적으로 도움이 많이 되었다.
그 전까지 GPU에 data를 load하고 training, inference, test 등을 해본 적이 없었는데, 이번 기회로 Google Colab에서 간접적으로나마 훈련을 시켜보았다. 확실히 직접 training 코드를 돌려보고 책과 다른 예시를 넣어보면서 inference를 했을 때 결과가 나오니 더욱 흥미로웠다.

3장에서는 transformer의 아키텍쳐에 대해 보다 상세히 설명한다.
어떤 식으로 가중치를 학습을 하는 지에 대해서는 자세히 기술되어 있지 않지만 그 아키텍쳐의 구성 요소들이 각각 어떤 역할을 하는 지, 그래서 transformer model을 통해 어떤 task를 처리하고자 하였는 지에 대해 간략히 이해할 수 있다.

4장부터 7장까지는 3장까지 배운 내용을 바탕으로 transformer를 여러 task 적용해본다.

  • 4장: 다중 언어 개체명 인식
  • 5장: 텍스트 생성
  • 6장: 요약
  • 7장: 질문 답변

8장부터는 조금 더 디테일한 측면으로 들어가, 효율적인 프랜스포머 구축, 레이블 부족 문제 다루기, 대규모 데이터셋 수집하기, 향후 방향에 대해 설명한다.

Transformer가 "왜" 잘 되는 지에 대해 궁금한 독자보다
Transformer를 "어떻게" 활용할 지에 대해 궁금한 독자들이 이 책을 읽으면 더 많은 것을 얻어갈 수 있을 것 같다.

또한 활용의 측면에서 책을 보면 좋은 만큼 책을 읽으면서 예제 코드에서 제시된 데이터의 구조나 함수를 이해하고 직접 코드를 실행해보는 것을 강력히 추천한다.
앞으로 이 책을 읽을 독자들을 위해 예제 코드가 업로드 되어 있는 Github repository 주소를 첨부하고 글을 마무리 하고자 한다.
https://github.com/rickiepark/nlp-with-transformers


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

profile
The World Is My Oyster 🌏

0개의 댓글