블로그 글 작성에 대한 고민최근까지 내 블로그의 모든 글은 아주 가끔적는 회고와 단순 개념 서술식의 글이 전부이다. 처음에는 공부한 내용을 단순하게 정리해서 블로그에 올리기만 하면 된다고 생각했다. 하지만 그 결과물은 여러 블로그에서 흔히 볼 수 있는 수천 개의 게시글 중 하나였다. 특히 최근에는 글쓰기에 특화된 ChatGPT 4o with canvas와 같은 모델들도 나오면서 단순한 지식나열은 점점 더 가치가 떨어질 것이라고 생각했다. 그래서 어떻게 하면 블로그 글을 의미있는 나만의 것으로 적어나갈 수 있을지 고민했다. 이때까지의 글을 회고하며대부분의 글에 내 생각이 담겨있지 않았다. 정보 전달력도 최근나온 GPT나 필력좋은 다른 글보다 결코 좋다고 장담할 수 있는 수준은 아니다. 다수의 타인을 잘 ..
제주도로 워케이션 가는 비행기안에서 짧게나마 저번주말 해커톤을 회고해본다. 10월 마지막 주말 학교에서 “교내 생활 문제 해결”이라는 주제의 해커톤이 있었다. 파트별 멤버는 PM 2명, 디자인 1명, FE(React) 2명, BE(Django) 2명, AI 3명이었고, 우리 팀은 기숙사생 룸메이트 매칭 서비스를 제안하였다. AI를 서비스에 어떻게 추가할지 고민하는 과정에서 나는 사람 간의 매칭이라는 큰 관점에서 데이팅 앱을 조사하였고, 튤립이라는 서비스의 가치관 기반 매칭 시스템을 적용하면서 AI를 서비스에 연결시키고자 하였다. 해당 앱의 매칭 알고리즘은 회원가입 시 약 30개의 객관실 질문에 대한 답변을 입력하게 되고, 그 답변을 기반으로 가장 비슷한 답변을 한 사람과 이어주는 방식이다. 나의 목표내가..
개발을 하다 보면 중요한 정보들을 코드 안에 직접 작성하는 것이 아닌, 외부 파일에 따로 저장하고 이를 가져오는 방식으로 관리하는 것이 필요합니다. 특히 API 키, 데이터베이스 비밀번호와 같은 민감한 정보는 .env 파일을 통해 관리하는 것이 가장 일반적입니다. 1. .env 파일이란?.env 파일은 환경변수를 저장하는 텍스트 파일로, 보통 프로젝트 루트 디렉터리에 위치하며 각 줄에 KEY=VALUE 형식으로 데이터를 저장합니다. 이를 통해 민감한 정보를 코드와 분리하여 보안성을 높일 수 있습니다. .env 파일의 내용은 다음과 같습니다. 2. Python에서 .env 파일 사용하기파이썬에서 .env 파일을 로드하고 사용할 수 있는 가장 일반적인 방법은 python-dotenv 라이브러리를 사용하는 것..
개발자로서 깃허브(GitHub)와 블로그는 단순히 기록을 남기는 공간이 아닙니다. 그것들은 자신의 성장과 성실성을 보여주는 중요한 수단으로도 쓰입니다. 하지만 이 두 채널을 꾸준히 관리하는 것은 결코 쉬운 일이 아니며, 특히 프로젝트에 몰두할 때에는 둘 중 한쪽이 소홀해지기 쉽습니다.그래서 깃허브 프로필을 통해 최근 블로그 활동을 보여주는 기능을 추가하고자 합니다. 이를 위해 깃허브 프로필의 README.md 파일에 블로그 게시글을 자동으로 불러오고, 새로운 게시글이 작성되면 깃허브에 커밋(commit)하여 최신 상태를 유지하는 방법을 적용했습니다. 이렇게 하여 깃허브와 블로그를 하나의 일관된 포트폴리오로 활용할 수 있기를 기대합니다.이 방식을 더 발전시켜 깃허브 프로필을 하위 마크다운 페이지로 나누고,..
팀 기능과 함께 모델 버전 관리, 협업 및 배포 지원을 제공해 팀 단위로 머신러닝 모델을 관리하는 데 유용한 Hugging Face 사용법을 정리한다.Organization 생성Organization을 만들면, 여러 팀원이 하나의 허깅페이스 계정에서 협업할 수 있게 된다. 팀 단위로 모델과 데이터셋을 관리하여, 모든 멤버가 동일한 리소스에 접근하고 업데이트할 수 있고, 각 멤버에게 관리자, 편집자, 읽기 전용 등의 권한을 부여할 수 있어, 팀 내에서 역할에 맞게 접근 권한을 설정할 수 있다. 그러기 위해서1. 허깅페이스에 로그인한 후, 프로필 메뉴에서 "Create an Organization"을 선택2. Organization 이름과 설명을 입력하고 생성- 이때 Organization Username ..
프로젝트를 시작하면서 세운 목표지난 문장간 유사도 문석(STS)프로젝트에서는 베이스라인 개발, 모델리서치 및 실험, 앙상블 파트에 집중하였다. 프로젝트 시작 후 베이스라인 개발을 우선시하다 보니, 데이터분석과 활용에는 많이 신경 쓰지 못했던 아쉬움이 있었다. 그래서 이번 프로젝트는 데이터 분석과 데이터기반 성능향상에 초점을 맞추고자 했다.프로젝트에서 시도한 것에 대한 설명제공 데이터 분석우선 제공된 데이터분석을 진행하였다. 그 과정에서 그래프를 그릴 때 데이터의 분포와 데이터간 상관관계를 직관적으로 파악하기 위해 seaborn라이브러리를 사용하였고, 최대한 분석 목적에 맞는 그래프의 종류를 사용하려고 노력했다.우선 데이터의 구조를 판단하고, train, validation, test 데이터들의 분포를 확..
자연어 처리(NLP)는 최근 몇 년 동안 놀라운 발전을 이루었고, 그 중심에는 GPT-1 같은 주춧돌이 되는 모델이 있습니다. 이번 글에서는 GPT-1의 구조와 기능, 그리고 자연어 처리 작업에서의 뛰어난 성능을 살펴보겠습니다. 첫 번째 섹션에서는 기존 NLP 방법들이 가진 주요 문제점들을 다룹니다. 문맥 이해의 한계, 복잡한 작업 처리의 어려움 등 기존 모델들의 문제는 GPT-1 같은 새로운 접근법의 필요성을 높였습니다.두 번째 섹션에서는 GPT-1의 모델 구성과 학습 방식을 소개합니다. GPT-1은 다음 단어를 예측하는 방식을 통해 학습하며, 이를 통해 다양한 NLP 작업에 적용될 수 있습니다. 이 섹션은 GPT-1의 작동 원리를 이해하는 데 중요한 내용을 담고 있습니다.세 번째와 네 번째 섹션에서는..
첫 한달동안은 나름 자유로움이 크다고 생각했다.대략 2달차로 들어서며, 커리큘럼이 꽤나 타이트해졌다.강의와 프로젝트가 함께 열리며, 두가지를 병행하다 보니 조금 더 타이트하다고 느꼈고,다른 사람들도 꽤나 이렇게 느낀 것 같았다.강의 자체는 큰 부담이 없지만,프로젝트를 함께하다보니 프로젝트의 성능(리더보드의 순위)을 목표로 하게 되면 성능향상에 많은 시간을 쏟아 붓게 되어 시간을 먹히기 쉬울 것 같았다. 이론적 지식 학습(강의 수강)+실전지식(프로젝트 진행)의 밸런스를 잘 잡는게 굉장히 중요하다고 느꼈다. TBD
Background1. 기존 연구의 한계BERT 논문이 나타나기 이전에도 언어 모델을 사전 훈련한 후에 task에 대해서 feature-based 모델을 만들거나 fine-tuning하는 방식이 인기를 끌었다. BERT가 나타나기 이전에 나온 대표적인 모델은 GPT-1으로 많은 양의 데이터를 학습된 pre-trained model이며 fine-tuning을 통해 성능을 보장했기에 상당한 인기를 얻었다.그러나 GPT-1과 같은 기존 모델들은 오토레그레시브(Autoregressive) 방식을 사용하는 디코더 모델이기 때문에, LSTM이나 RNN처럼 결국에는 문제를 해결하기 위해서 문장을 학습할 때에 순차적으로( LTR; Left-to-Right ) 읽을 수 밖에 없다는 문제점을 지니고 있다. (추가로 ELM..
자연어 처리의 이해자연어처리는 다양한 Task로 나뉘어질 수 있다.이러한 Task에 따라 어떤 형태의 모델을 사용할지도 달라진다.입출력 패턴에 따라 Task를 분류하여 봄으로써, 자연어처리 Task와 모델별 입출력패턴 특징을 알아본다.모델의 종류1. Encoder Only Model입력 토큰 벡터를 Encoder Block이 학습하여 고정된 크기의 출력 토큰 벡터를 생성하는 모델이다.대표 모델로는 BERT, RoBERTa, ALBERT와 같은 BERT계열 모델이 있다.고정크기의 출력을 생성하므로, N21형태와 N2N형태의 입출력 패턴 Task에 적합하다. 2. Encoder-Decoder Model입력 토큰 벡터 를 인코딩한 후, 그 인코딩된 정보를 바탕으로 디코더가 출력 토큰 벡터를 생성하는 구조이다...