Post

[Boostcamp] 5주차 회고

Boostcamp AI Tech 7기 NLP Track - 5주차 회고

Main Events

(240902 월) 강의 듣기

  • cue: 수요일에 피어세션에서 BERT 논문을 리뷰하기로 했는데, 마침 이번 주차 강의에서 BERT를 다루고 있는걸 발견! 논문 읽기 전에 강의를 보면 이해가 더 쉽겠다고 생각했다.
  • did: 평소에는 매일 조금씩 나눠 들었지만, 이 날은 몰아서 강의 거의 다 들음. BERT 강의가 9강으로, 꽤 뒤에 나왔기 때문.. NLP의 흐름에 따라 진행되기 떄문에 순서대로 들어야 이해가 돼서 BERT만 선택해 들을 수는 없었고, 결국 다 들었다.
  • felt: 모델의 등장 배경부터 모델의 핵심 구조에 대한 직관적 이해, 여기에 더해 수식적 이해를 더함으로써 어떻게 실제 연산으로 구동되는지까지 설명하는 명강이었다고 생각한다. 평소 NLP 이론들 공부하다보면, 대략적인 느낌만 전달하거나, 논문의 표현을 그대로 번역해오며 장황하게 설명하거나 거의 이 둘 중 하나였다. 그래서 NLP 이론들을 제대로 이해한다는 느낌을 많이 받지 못했는데, 이번 강의들 들으면서 토크나이저부터 기본적인 임베딩 개념, RNN 및 transformer 기반 다양한 모델들에 대해 잘 이해하게 됐다! 그동안 답답했던게 많이 풀려서 기분 좋았다:)
  • action plan: 이론 정리 + 코드 구현
    • 이론 정리: 급하게 강의를 듣다보니, 내 언어로 내용들을 다시 정리하지는 못했다. 1~3주차까지는 intro 느낌이 강했는데, 이번 강의들은 필수로 이해해야 하는 내용이라고 느꼈다. 지금은 많이 쓰이지 않는 방법이라 할지라도, 이 내용들이 새로 등장하는 모델들의 주요 근간이겠구나,, 싶은 생각. 그래서 이번 NLP 내용들은 제대로 이해하고, 내 언어로 다시금 정리해볼 생각이다.
    • 이론을 정리하는데 더해, 이런 내용들을 코드로 직접 구현하면서 (또는 구현된 코드를 뜯어보면서) 작동 방식을 제대로 더 살펴볼 생각이다. 이론 보고 이해한 것과, 이걸 정말 구현할 수 있느냐는 다른 차원이고, 후자가 가능해야 진짜 ‘안다’고 말할 수 있기 때문.

(240903-4 화-수) BERT 논문 리뷰

  • cue: 수요일에 BERT 논문을 리뷰하겠다고 자원했었다. 마침 Transformer의 주요 사례로 자주 언급되는 모델이기도 하고, 공모전 할 때 KR-SBERT 모델을 많이 사용했는데, 그 때 꽤 성능이 잘 나왔던 기억이 있어서 어떤 구조로 작동하는건지 궁금하기도 했었다. 평소에 갖던 이런 호기심들을 해결해보려 BERT 논문 읽기 시작했다.
  • did: 논문을 읽고 github 블로그에 정리했다. ((논문리뷰) BERT) 다른 사람이 가공한 글들은, 원문의 내용과 자신만의 해석들이 섞여있어 오히려 읽다보면 혼란스러워지는 경우가 있어서 원문인 논문을 우선적으로 읽었다. 물론 대충 볼 논문이면 다른 분들의 블로그가 정말 유용했겠지만, 이건 깊게 읽어볼 내용이었으니까..! 읽으면서 잘 이해가 안됐거나 궁금증이 드는 부분들을 추가해서 블로그 글을 작성했다. 그리고 이 글 바탕으로 수요일 피어세션에서 주요 내용 발표함
  • felt: 논문에서 전달하려는게 뭔지, 그 맥락을 이해하는데 목적을 두고 읽다 보니 내용 정리가 쉬웠다. 논문도 결국은 잘 쓴 하나의 주장문이라서, “기존 문제를 우리가 이렇게 잘 해결했다”의 내용이 대부분이다. 기존 문제가 뭐였는지, 왜 해결해야 하는지, 그래서 어떻게 해결했는지 를 중심으로 이해하고자 했다. 디테일에 매몰되다 보면 이 논문이 말하는게 뭔지 길을 잃기 쉬운데, 논문에서 말하려는 이 내용이 뭔지를 찾으려 의식하고 읽다보니 훨씬 이해가 쉬웠던 것 같다. 사실 논문 리뷰를 정기적으로 제대로 해본 적이 없어서 아직도 방법을 찾아가는 중이지만, 이런 점을 염두에 두고 논문을 읽었다는 점에서 만족스러운 접근이었다.
  • action plan: BERT 논문의 핵심 아이디어는 pre-training과 fine-tuning이었다. 최근 fine-tuning과 관련된 단어들이 많이 들리는데, 자주 사용되는 LoRA 튜닝을 비롯해, 다양한 튜닝 전략들이 궁금해졌다. 이런 부분에 대해 팀원들도 공감했고, 다음 논문에서는 LoRA 튜닝에 대한 논문 읽어보기로 했다.

(240904 수) MLOps 스터디

  • cue: ML 서비스가 어떻게 굴러가는지 알고 싶어 시작한 스터디. 지난 주에 이론과 실습, 개인 프로젝트를 모두 같이 진행해보자 했지만 부캠 일정과 병행하기에는 무리인 스케쥴이라는 생각이 들었다. FSDL 강의도 2강까지 들어보고, 프로젝트 기획서도 작성해보려 했으나 로드가 너무 크다는 생각.. 이에 스터디의 방향과 scope를 좀 더 명확히 좁히는 시간을 가졌다.
  • did: 개인 프로젝트도 물론 좋지만, 너무 heavy하게 문제를 가져갈 수는 없겠다 생각했다. 따라서 가이드가 명확하게 잡힌 커리큘럼을 따라가며 실습하고, 이를 내 미니미니ㅎ 사이드프로젝트에 적용해보기를 천천히 하는게 좋겠다 생각했다. 추천받았던 MLOps for MLE의 흐름을 그대로 따라가기로 얘기가 됐다. 한 주는 강의 들으며 실습하고, 다음 주는 내 프로젝트에 적용하고의 반복으로 진행키로 얘기됨. ML 모델로는 kaggle에서 진행된 영화 리뷰에 대한 감성분석 프로젝트를 참고해볼까 한다. 리뷰를 통한 감성분석 자체가 보편적인 주제인 만큼 레퍼런스도 많고, 평소 감성분석이 궁금하기도 했기 때문! word2vec 모델이 궁금한 것도 있었고.
  • felt: 이 스터디의 목적이 뭘까 고민했다. 각자의 프로젝트에 대한 진행상황 보고도 좋지만, 흐지부지되지 않게 완결내기 위해서는 공통의 커리큘럼이 필요하다고 생각했다. 지난주까지 얘기했던 FSDL도 좋았지만, 이 MLOps for MLE가 더 직접 구현하면서 flow를 경험하기에 잘 구성된 느낌이 들었다. 팀원들과 함께 실현 가능한 범위에서 스터디 목표를 구체화 한 것 같아 마음이 편해졌다. 이제 실천만 하면 됨~!
  • action plan: MLOps for MLE를 살펴보며 실습 진행해보려 한다. 비는 시간동안 짬짬이 FSDL도 살펴볼 예정. 2022년의 강의지만, 좋은 내용들로 잘 구성되어 있는 것 같다.

(240905 목) 과제3: seq2seq with attention 구현

  • cue: 수요일까지는 이론을 공부하는 데 초점을 뒀는데, 이제 코드도 깊게 볼 시점이라 생각했다. 마침 과제에서 attention을 활용한 seq2seq 모델 구현을 진행하길래, 과제에서 요구된 코드를 채워넣는 것 뿐만 아니라 전체적인 코드를 모조리 뜯어봤다. 딥러닝 모델이 어떤 흐름으로 구성, 학습, 평가되는지가 궁금했고, 특히 NLP 모델에서 토큰화를 비롯한 데이터 전처리 작업을 어떻게 수행하는지 궁금했기 때문에 flow에 집중하면서 코드를 봤다.
  • did: 전체 코드를 뜯어봤고, ‘이렇게 작동하면 결과가 달라지나?’ 싶은 부분들을 모두 테스트해가면서 눈으로 확인했다. 저작권 이슈로 내가 살펴본 내용을 모두 공개할 수는 없지만, 주요 맥락과 새로 알게 된 내용들 정도만 간단히 정리해서 Seq2Seq with Attention 모델 구현로 업로드했다.
  • felt: 딥러닝 코드 볼 때마다 막막함, 두려움이 있었는데 찬찬히 보다보니 이론에서 나왔던 내용을 코드로 풀어 쓴 것 밖에 없었다. 코딩은 결국 사칙연산일 뿐이라던 말을 들었던게 생각나기도 하고, 찬찬히 보면 이해해낼 수 있다는 자신감이 생겼다!! 그리고 찬찬히 뜯어보면서, 내가 잘못 코딩해둔 부분들을 찾을 수 있었고 해결된 결과를 보니 뿌듯하기도 했음:)
  • action plan: 강의에서 다룬 다른 내용들도 코드로 어떻게 구현될 수 있는지 추가로 살펴보기

주간 회고

[+] Positive

  • 깊게 뜯어보면서 이해해낸 것! 끈기를 갖고 문제들에 접근했던 한 주였다. 논문, 코드도 처음 볼 때는 막막했지만 차근히 접근하다보니 이해가 되는 순간이 왔다. 내가 해냄~!
  • 지난 주에 조급해지지 말자고 다짐했는데, 이 다짐을 지키기 위해 노력했던 한 주였다. 당장 A를 하다보면 B도 해야 될 것 같아 산만해지곤 했는데, A를 시작하면 거기에만 집중하도록 주의를 기울였다. akiflow를 이용한 시간 관리가 이제 많이 체화돼서, 이런 점에서 도움을 많이 받고 있다.
  • 이번 주도 매일 오늘의 질문 꾸준히 업로드했다.

[-] Negative

  • 공부한 내용들을 잘 정리해둬야 하는데, 계속 미루게 된다. 정리를 잘 해야 한다는 생각에 부담을 느껴 그러는 듯. 잘 하기보다, 일단 하자는 마인드가 좀 더 필요하다.

[!] To Try

  • 강의에서 다룬 모델들을 이론적으로 정리하고, 코드로도 꼭 구현해보기!
  • 놓치지 말고 틈틈이 공부/확인할 것들
    • NLP 뿐만 아니라 딥러닝 전반의 근본 구조 이해
    • 최근 학계/산업계의 트렌드 및 use case들 확인
    • 코딩 및 cs 지식
    • 독서와 영어공부.. AI를 잘 활용하려면 잘 ‘생각’해야 한다!!! 이를 위해 책 읽기

[?] Question

  • NLP의 가능성은? 한계는?
  • 멀티모달은 어떻게 연구/활용되고 있을까?
  • AI 모델의 다양한 use case들이 더 알고싶어졌다.

[.] Takeaway

  • 하나를 해도 제대로 하자는 마인드였던 일주일. 이것저것 하면서 정신없는것보단 이 편이 실력으로도, 심적으로도 더 도움이 되는 것 같다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.