반응형
wb_sunny 최근 일주일 공유
3주간의 초급 프로젝트가 어제 끝이 나는 날이었다. 그래서 오늘은 프로젝트 후기와, 어제 자연어 처리에 대해서 공부한 내용을 정리하고자 한다.
medication 초급 프로젝트 마무리
어떤 프로젝트였나
| 주제 | 이미지 속 여러 알약의 위치와 종류를 동시에 찾는 객체 탐지 |
| 데이터 | Kaggle 제공 232장 · 56종 (test 842장) |
| 평가 지표 | mAP@[0.75:0.95] |
| 팀 · 기간 | 4명(팀 파이리) / 2026.09.10 ~ 09.29 |
Faster R-CNN, RetinaNet, YOLO26n을 같은 조건에서 비교했는데, RetinaNet이 점수는 가장 높았지만 YOLO가 그 98.6% 점수를 절반도 안 되는 학습 시간에 냈다. 3주 안에 실험을 많이 돌려야 하는 상황이라 YOLO26n을 기본 모델로 정했다.
어떻게 실험했나
실험은 틀린 사례를 보고 → 왜 틀렸을지 가설을 세우고 → 설정 하나만 바꾸는 방식으로 진행했다. 두 개를 동시에 바꾸면 점수가 움직여도 무엇 때문인지 알 수 없기 때문이다. 실험 이름에 바꾼 항목을 그대로 넣고, 학습이 끝나면 구글 시트에 자동으로 기록되도록 만들어서 4명이 같은 실험을 두 번 하는 일을 막았다.
- 첫 실험: 기본 설정 그대로 → 0.2356. 위치는 잘 찾는데 비슷하게 생긴 알약의 이름을 헷갈렸다
- 해상도·학습량 조정: 각인이 뭉개지는 게 원인이라 보고 640→960, epoch 100으로 → 0.39139
- train/val 재분할: 특정 알약이 학습에 한 장도 없던 걸 발견, 조합 단위 분할로 변경 → 0.41503
- 그 이후 일곱 가지 설정(해상도 1280, cos_lr, 모델 크기, 전이학습, 손실 가중치, 증강 등)을 하나씩 바꿔봤지만 0.39~0.41 구간을 벗어나지 못했다
벽을 만나고, 원인을 찾다
로컬 검증 점수는 0.97 이상인데 제출 점수는 0.4대였다. 이 차이가 이상해서 test 사진을 직접 하나씩 열어봤고, 학습 데이터 56종에 아예 없는 알약이 18종이나 섞여 있다는 걸 발견했다. 배운 적 없는 알약은 어떤 설정으로도 맞힐 수 없다. 문제는 학습이 덜 된 게 아니라 알아야 할 정보 자체가 없는 것이었고, 손댈 곳은 학습 설정이 아니라 데이터였다.
그래서 AI Hub 「경구약제 이미지 데이터」를 학습 데이터에만 추가해 56종 183장 → 118종 10,394장으로 확장했다. (프로젝트 원본에 해당하는 데이터는 제외했다.)
최종 결과
| 구간 | 점수 변화 | 얻은 폭 |
|---|---|---|
| 기본 설정 → 설정 조정 | 0.2356 → 0.41550 | +0.180 |
| AI Hub 데이터 통합 | 0.41550 → 0.61074 | +0.195 |
| 오버샘플링 + WBF 앙상블 | 0.61074 → 0.62550 | +0.015 |
설정 일곱 가지를 전부 바꿔 얻은 폭이 0.026이었는데, 데이터 추가 하나로 0.195가 올랐다. 마지막에는 서로 다른 조건으로 학습한 두 모델의 예측을 WBF로 합쳐 최종 0.62550을 기록했다. 처음 0.2356에서 2.65배가 됐다.
재미있었던 건, 같은 모델을 해상도만 바꿔 여러 번 돌려 합친 건 효과가 없었는데(0.61084 → 0.61060), 다르게 학습한 두 모델을 합치니 점수가 올랐다는 점이다. 앙상블의 효과는 합치는 행위 자체가 아니라 모델들이 서로 다른 곳에서 틀린다는 데서 나온다는 걸 실험으로 확인했다.
배운 것
- 데이터는 직접 눈으로 봐야 한다 — 사진을 하나씩 열어보고서야 test에만 있는 알약, 각인만 다른 알약, 뒷면이 찍혀 단서가 없는 사진을 알았다. 표와 숫자만 봤다면 끝까지 몰랐을 것들이다
- 로컬 점수를 믿으면 안 된다 — 제출 점수와 절대 수준이 다르고, 방향까지 뒤집힌 사례도 있었다
- 기록을 남기는 것이 곧 분석이다 — 자동 기록 덕분에 일곱 실험을 한 표에 놓고 비교할 수 있었고, 그 표를 보고서야 0.41의 벽을 발견했다
- 순서가 중요하다 — 데이터가 부족하면 설정을 아무리 손봐도 올라갈 수 있는 천장이 낮다. "설정이냐 데이터냐"가 아니라 무엇을 먼저 하느냐의 문제였다
favorite 프로젝트 소감
이번 프로젝트는 VS Code로 진행한 첫 프로젝트였다. 가상환경을 맞추고, 브랜치를 나누고, 서로의 코드를 합치는 과정이 모두 낯설어서 초반에는 모델보다 팀원들과 호흡을 맞추는 데 더 많은 시간을 썼다. 하지만 그때 협업 방식을 함께 정리해 둔 덕분에 후반으로 갈수록 작업 속도가 빨라졌고, 각자 맡은 부분을 병렬로 진행할 수 있었다. GitHub 협업 익히기, VS Code에 익숙해지기, 끝까지 마무리하기라는 처음 목표를 모두 이뤄 만족한다.
가장 기억에 남는 것은 팀원들의 태도였다. 기간 내내 한 명도 결석하지 않고 매일 모여 진행 상황을 공유했고, 누군가 막히면 다른 팀원이 자연스럽게 도왔다. 혼자였다면 방향을 잃었을 순간도 팀이 함께였기에 넘길 수 있었다.
실험 과정도 의미 있었다. 설정을 무작위로 바꿔 보는 대신, 틀린 사례를 보고 왜 틀렸는지 가설을 세운 뒤 한 가지만 바꿔 확인하는 방식으로 진행했다. 그렇게 하나씩 원인을 지워 간 끝에 문제가 학습 설정이 아니라 데이터에 있다는 결론에 스스로 도달했고, 점수가 크게 오른 것보다 그 과정을 직접 밟아 봤다는 점이 더 값졌다.
아쉬운 점은 방향을 정하는 단계에서 내 의견이 크게 반영되다 보니, 팀원들에게 어느 정도 강제성을 준 것은 아니었나 하는 점이다. 다음 프로젝트에서는 큰 그림을 팀원들과 함께 그리고, 각자가 제안한 방향도 충분히 시도해 볼 수 있는 분위기를 만들고 싶다. 끝까지 함께해 준 팀원들에게 진심으로 감사드린다.
translate 자연어 처리 개요
자연어 처리란
- 인공어: 정보 전달을 위해 인위적으로 만들어진 언어(프로그래밍 언어)
- 자연어: 일상에서 자연 발생한 언어(한국어, 영어 등)
- 컴퓨터가 자연어를 다루려면 별도의 처리 과정이 필요 → NLP
- 자연어 데이터를 컴퓨터가 처리할 수 있는 형태로 변환해 의미 있는 분석을 수행하는 과정, 자연어 이해와 자연어 생성으로 나뉨
주요 Task
| Task | 구분 | 예시 |
|---|---|---|
| 텍스트 분류 | 이해 | 스팸 메일 필터링, 뉴스 기사 분류 |
| 감성 분석 | 이해 | 긍정/부정 리뷰 분석, 여론 파악 |
| 기계 번역 | 이해 + 생성 | 영어 → 한국어 |
| 문서 요약 | 이해 + 생성 | 뉴스·논문 요약 |
| 질의응답 | 이해 + 생성 | 주어진 텍스트 기반 답변 생성 |
| 자연어 생성 | 생성 | 자동 보고서, 챗봇 대화 |
| 음성 인식·변환 | - | 음성 비서, 오디오북 |
정보 추출
- 개체명 인식: 사람·조직·위치 등 특정 개체 식별 (이순신 → 사람, 조선시대 → 기간)
- 관계 추출: 엔터티 간 관계 추출 (Apple ← 설립 ← Steve Jobs)
- 문장 유사도: 텍스트 간 유사성을 수치화해 비교
처리 단계
- ① 데이터 수집·정제: 웹·DB·API로 텍스트 확보(이미지보다 수집이 쉬움), 노이즈 제거
- ② 텍스트 전처리: 태그·특수문자·불용어 제거(클렌징) → 형태소 분석·서브워드 분절로 토큰화 → TF-IDF나 밀집 벡터로 임베딩
- ③ 모델 학습·적용: CNN, RNN, Transformer(BERT, GPT) 등을 학습. 사전 학습 + 파인튜닝으로 분류·요약·QA·챗봇으로 확장
- ④ 평가·개선: Accuracy·Precision·Recall·F1, 생성 모델은 BLEU·ROUGE·METEOR
- ⑤ 애플리케이션 구축·배포: 벡터 DB 기반 RAG로 환각을 줄이고, 외부 도구와 다단계 추론을 결합한 AI 에이전트로 확장
왜 배워야 하는가
- 비정형 데이터의 중심: 기업·인터넷 데이터의 약 80% 이상이 문서·대화·리뷰 등 텍스트 기반
- 인터페이스 패러다임 변화: GUI → 대화형 CUI → AI가 직접 작업을 수행하는 AI 에이전트
- 생성형 AI의 기초: ChatGPT·Claude 등 LLM의 근간이 Transformer 기반 NLP. 원리를 알아야 프롬프트 엔지니어링을 넘어 튜닝·제어가 가능
접근 가능한 직무
- AI / NLP 엔지니어: 도메인 특화 언어 모델 설계·최적화
- LLM 애플리케이션 엔지니어: LangChain·LangGraph + RAG로 지식 검색, 챗봇, 업무 자동화 구축
- AI 에이전트 아키텍트: 외부 API·DB·검색 도구와 LLM을 결합한 에이전트 파이프라인 설계
- AI 솔루션 연구원 / MLOps: 오픈소스 모델을 경량화(PEFT, 양자화)해 온디바이스·에지 환경에 서빙
- 비정형 데이터 분석가: VoC·소셜 여론·뉴스에서 트렌드, 토픽, 이탈 시그널 발굴
nights_stay 어제 하루 회고
이제부터 내가 관심 있어 하는 LLM 관련해서 배우기 시작했다. 관심 분야인 만큼 더욱더 공부를 열심히 해서, 이번 파트가 끝나기 전에는 그래도 개인 프로젝트를 온전히 시작해서 마무리하고 싶다.
이제 팀도 변경이 될 것인데 어떤 팀원들과 함께할지도 너무나 궁금했다. 왜냐하면 어제 초급 프로젝트 발표에서 각자의 새로운 모습을 알게 되었고, 정말 알게 모르게 숨은 고수들임을 틀림없음을 느꼈기 때문이다!
반응형
'AI' 카테고리의 다른 글
| [부트캠프 공휴일] 21번의 계획서 변경 끝에 시작한 프로젝트 (0) | 2026.10.09 |
|---|---|
| [부트캠프 50일차] 초급 프로젝트 시작, 팀원들이 직접 코드를 짜기까지 (0) | 2026.09.15 |
| [부트캠프 43일차] 생성 모델 정리 (0) | 2026.09.04 |
| [부트캠프 40일차] 위클리 페이퍼, Segmentation 정리 (0) | 2026.09.01 |
| [부트캠프 38일차] 객체 인식 정리 (0) | 2026.08.28 |
