SK네트웍스 Family AI캠프 16기

[플레이데이터 SK네트웍스 Family AI캠프 16기] 9주차 회고

minorii 2025. 8. 18. 09:41

 

✅ 일주일 동안 한 일과 느낀 점

9주차는 자연어 처리(NLP)와 리눅스 환경 실습을 중심으로 진행된 주차였다.
앞선 주차에서는 시계열, 이미지, 구조화 데이터 등 여러 입력 형태에 딥러닝을 적용해보았다면, 이번 주는 그 중에서도 텍스트 데이터 처리에 집중할 수 있었다.

특히 9주차는 개인적으로도 의미가 있었다. 11일과 14일은 병가로 인해 실습에 직접 참여하지 못했는데, 대신 강의자료와 소스파일을 바탕으로 스스로 분석하고 공부했다.
처음에는 따라가지 못했다는 아쉬움이 컸지만, 오히려 혼자 학습하면서 자료를 곱씹어 보는 시간이 되어 이해도가 깊어졌다. "수업 참여"가 아니라 "자율 학습"으로도 잘 따라갈 수 있었다.


✅ 주요 학습 내용 및 기술 회고

📌 8월 11일 — NLP 기초 (자료 분석 학습)

  • 텍스트 전처리와 토큰화
    • 형태소 분석기(Okt, Mecab, Komoran 등)와 서브워드 토큰화(BPE, WordPiece, Unigram LM) 비교
    • 한글의 특수성(조사, 어미, 복합어) 때문에 단순한 띄어쓰기 기반 분할이 부족하다는 점 학습
    • Out-of-Vocabulary(OOV) 문제 → 사전에 없는 단어를 처리하지 못하는 한계
    • 이를 해결하기 위해 서브워드 단위로 분해하여 처리하는 최신 기법들의 장점 이해
  • 느낀 점
    자료를 보며, 왜 최신 NLP 모델들이 형태소 단위보다 서브워드 방식을 채택하는지 명확하게 이해할 수 있었다.
    단순히 “문장을 쪼갠다”가 아니라, 어떻게 쪼개야 모델 성능이 좋아지는가라는 고민이 중요하다는 걸 알게 되었다.

📌 8월 12일 — 리눅스 + Streamlit 실습

  • 리눅스 기초 학습
    • Ubuntu 환경 설정 및 VirtualBox 활용
    • 파일 시스템 구조(FHS) 이해: 루트(/), 홈 디렉토리(~), 시스템 디렉토리들의 역할
    • 주요 명령어:
      • pwd, cd, ls : 경로 탐색
      • ifconfig, ping, netstat, traceroute : 네트워크 설정 및 확인
      • vi 편집기 : 입력 모드 전환(i, a), 저장(:w), 종료(:q!) 등 기본 조작
  • Streamlit 실습
    • pip3 install streamlit으로 설치 → 실행 오류 시 PATH 환경변수 설정
    • 웹 대시보드 제작 예제
      • st.text_input() : 사용자 입력 처리
      • st.slider() : 숫자 입력
      • st.button() + st.balloons() : 이벤트 기반 UI
    • Pandas+Matplotlib 응용 → CSV 저장/불러오기 + 그래프 생성
  • 느낀 점
    지금까지는 주로 파이썬 코드만 다뤘는데, 리눅스를 통해 “운영체제와 개발 환경”을 직접 다루면서 개발자의 기본기를 느낄 수 있었다.
    Streamlit은 생각보다 간단히 웹앱을 만들 수 있어서, 앞으로도 데이터 분석 결과를 시각화하거나 대시보드 형태로 공유할 때 유용하게 쓸 수 있을 것 같다.

📌 8월 13일 — 언어 모델과 문장 생성

  • 이론 학습
    • 언어모델 발전 흐름: N-gram → RNN/LSTM/GRU → Transformer
    • RNN의 한계(장기 의존성 문제, Gradient Vanishing/Exploding)와 이를 개선한 LSTM, GRU 구조
    • Attention 메커니즘의 등장과 Transformer 구조의 혁신
    • BERT vs GPT 비교 → BERT는 양방향(Masked LM), GPT는 단방향(Autoregressive)
    • LLM(대규모 언어모델)의 학습 전략(사전학습 + 파인튜닝)과 Zero-shot, Few-shot 학습 개념
  • 실습
    • HuggingFace KoGPT2 모델 불러오기
    • generate() 함수로 문장 자동 생성
    • 생성 방식 비교
      • Greedy Search: 가장 확률 높은 단어만 선택 → 단조롭고 반복적
      • Top-k Sampling: 확률 상위 k개 중 랜덤 선택 → 창의적이지만 가끔 엉뚱함
      • Nucleus(Top-p) Sampling: 누적 확률 p 이하 단어 중 선택 → 다양성과 자연스러움 균형
  • 느낀 점
    직접 문장을 생성해보니, AI가 단순히 "다음 단어를 맞추는 것"을 넘어서 “사람처럼 문장을 만든다”는 느낌이 확 와닿았다.
    단 몇 줄의 코드로도 이렇게 다양한 결과물이 나온다는 게 인상적이었고, 파라미터 조정만으로 창의성을 조율할 수 있다는 점도 흥미로웠다.

📌 8월 14일 — 한국어 NLP 심화 (자료 분석 학습)

  • RNN/LSTM/GRU 비교 실습
    • RNN_한글.ipynb : 기본 텍스트 분류
    • 감정분석_LSTM.ipynb, LSTM_쇼핑긍정부정.ipynb : 감정(긍/부정) 분석
    • GRU_의도분류.ipynb : 의도(Intent) 분류 → 챗봇 시나리오 기반 다중 클래스 분류
  • NER (개체명 인식)
    • NER.ipynb : 문장에서 인물, 장소, 기관명 추출
    • BIOES 태깅 스킴 학습 (Begin, Inside, Outside, End, Single)
  • 데이터셋 기반 분류 실습
    • 한국뉴스_데이터셋_분류.ipynb : 기사 카테고리 분류
    • 네이버쇼핑_분석, 쇼핑몰_분석 : 리뷰 기반 감정 분석
    • 한국가요_분류.ipynb : 가사 텍스트 분류
  • 느낀 점
    수업에는 참여하지 못했지만, 소스파일을 하나하나 분석하면서 “데이터의 성격에 맞는 모델 선택”의 중요성을 느꼈다.
    같은 분류 문제라도 단순 RNN보다 LSTM/GRU가 더 안정적인 성능을 내고, 데이터 전처리에 따라 정확도가 크게 달라진다는 걸 실험을 통해 확인할 수 있었다.
    또, NER 실습은 단순히 문장을 분류하는 것을 넘어, 텍스트에서 의미 단위를 추출한다는 점에서 새로운 경험이었다.

✅ 아쉬웠던 점 & 개선 포인트

  • 병가로 인해 일부 실습에 직접 참여하지 못한 점이 가장 큰 아쉬움이었다. 다만, 덕분에 스스로 학습하며 복습할 기회를 가질 수 있었다.
  • NLP 모델들을 비교 적용해보긴 했지만, 하이퍼파라미터 튜닝이나 데이터 증강 같은 실험은 충분히 해보지 못했다.
  • 리눅스 명령어와 네트워크 관리 실습은 기본 수준에 그쳐, 실무 서버 환경에서 활용할 만큼 깊게 다루지 못했다.

✅ 마무리

9주차는 “언어를 이해하고, 생성하고, 분류하는 AI”를 경험한 주차였다.
수업에 온전히 참여하지 못한 날도 있었지만, 자료를 복습하고 소스코드를 직접 분석하면서 오히려 개념을 더 차근차근 이해할 수 있었다.

이번 주차를 통해 NLP의 다양한 태스크(감정 분석, 의도 분류, 개체명 인식, 문장 생성)를 폭넓게 다뤘고, 전처리·모델 선택·평가 지표까지 한 흐름으로 학습할 수 있었다.
앞으로 진행될 프로젝트에서는, 이번에 쌓은 NLP 경험을 적극 활용해 모델 성능뿐 아니라 데이터 처리 전략과 결과 해석 능력까지 한층 더 발전시키고 싶다.


🎉 예상치 못한 우수 회고자 선정

8월 13일 수요일, 뜻밖에도 우수 회고자로 선정되었다! 🎉
그동안 꾸준히 회고를 작성해왔지만, 내가 받을 거라고는 전혀 예상하지 못했기에 더 기쁘고 놀라웠다.
스타벅스 기프티콘이라는 선물도 기뻤지만, 무엇보다도 “내가 꾸준히 기록한 노력”이 인정받은 것 같아 큰 보람을 느꼈다.

앞으로도 단순히 과제를 제출하는 수준이 아니라, 나의 배움과 성장을 기록으로 남기는 습관을 이어가고 싶다.
이렇게 선물도 받고 나니 글을 쓰는데에 더 신경쓰게 된달까,,
너무 행복한 하루였다!!