blog

[PS] 첫 자소서(Personal Statement) 작성

2024년 5월 29일 · blog

한화계열 스타트업, 그로들에 제출하기 위한 자소서를 작성 중이다. 이커머스 시장에서 생산성을 높일 수 있는 AI 솔루션을 개발하는 기업이다.

인턴쉽 채용공고는 다음과 같다. 채용공고

그로들 회사 홈페이지는 다음과 같다. 스타트업이라서 그런지 아직은 간단한 구성이다. 홈페이지

회사 홈페이지에서 찾은 채용공고 목록이다. 그로들이 어떤 프로젝트를 하고 있는지 감을 잡을 수 있었다. 채용공고목록

그로들의 요구사항을 정리하면 다음과 같다. “경제/산업 뉴스를 크롤링하여 요약할 수 있는 자연어처리/멀티모달 딥러닝 모델 개발” 만약 정규직으로 전환된다면, LLM과 Vision 쪽의 업무가 배정될 것이다. LLM은 summary, translation, document intelligence 등, vision은 문자인식, 객체인식, text/image-to-video 등이겠지. 모델 최적화나 분산학습 경험과 fine-tuning 경험자, 모델 개선 경험자도 찾고 있다. NLP에 필요한 데이터 수집 및 모델링도 경험한다면 우대사항이다. 상용 AI API와 tensorflow/pytorch와 같은 프레임워크에 대한 경험이 있다면 좋겠지. 또한, Linux/Unix와 Docker 환경을 주로 사용할 것이고, 협업(git, 코드리뷰)을 중요시하는 것으로 보인다.

와우! 내가 잘 풀어 쓸 수만 있다면, 난 준비된 인재일 것이다. 학부에서 들을 수 있는 모든 ai과목을 들었고, ta를 해봤으며, tensor와 pytorch 모두 써봤고, LLM의 데이터셋을 생성해봤으며, fine-tuning 경험도 있다. DDP(분산학습)도 깔짝여보긴 했고.. 서버에서 Linux로 온갖 일을 해봤지. git도 학부수준에서 나보다 많이 만진 사람이.. 많긴 하겠다. 자신은 있다 그래도. 잘 써보자.

우선 초안!

자 기 소 개 서 한동대학교 AI.컴퓨터공학 전공 4학년(졸업 예정) 배재호

  1. 지원동기 및 소개 저는 인공지능과 소프트웨어 공학 분야에 관심을 가지고 있으며, 그로들에서의 인턴십을 통해 웹 크롤링과 자연어 처리 모델 개발에 기여하고자 합니다. 그로들이 인공지능을 활용하여 생산성을 높이는 솔루션을 개발하는 과정에 동참하고 싶습니다. 특히, 인턴십 업무인 크롤링한 뉴스를 요약하는 멀티모달 분석 기반 딥러닝 모델 개발은 저에게 굉장히 흥미롭게 다가옵니다.
  2. 인턴 직무 관련 경험 사항
    • 학부생 연구원 저는 한동대학교의 Intelligent Software Engineering Lab(ISEL)에서 18개월 동안 학부생 연구원으로 활동하며, 사전 훈련된 언어모델이 실제 프로젝트 상의 보안 취약점을 탐지할 수 있는지를 연구했습니다. 자바 소스코드에 보안 취약점이 있는지 ChatGPT API에 질의하는 VIChecker, 자바 바이트코드를 오픈소스 라이브러리에서 수집해 데이터셋을 생성하는 mvnCrawler, 생성된 바이트코드 데이터셋을 학습시켜 보안 취약점을 예측하는 ByCoBERT의 세 가지 프로젝트를 주도적으로 구현하였습니다. 특히 바이트코드를 보안 취약점 검출에 활용하는 연구가 드물었기에, 선행 연구들에 대한 동향 조사를 정리한 ‘바이트코드 분석을 통한 보안 취약점 검출 기술 동향’ 논문으로 2023년 한국 소프트웨어공학 학술대회에서 학부생 부문 우수논문상을 받는 성과가 있었습니다. VIChecker에서 저의 역할은 당시 출시되었던 ChatGPT-3.5 API를 사용해 자바 소스코드와 취약점을 내포하고 있는지를 프롬프트로 질의 후, 응답을 기록하는 것이었습니다. 생성형 언어모델이 코드상의 보안 취약점을 검출할 수 있는지 가능성을 검토하기 위해 수행되었습니다. 가장 많이 사용되는 6개 자바 오픈소스 라이브러리에서 GPT가 학습하지 않은 커밋 히스토리를 수집하고, 그중 유의미한 수정이 이뤄진 2만여 개의 자바 파일을 추출하여 데이터셋을 생성하였습니다. 동일한 프롬프트로 GPT API에 질의하고, 그 응답을 체계적으로 정리하였습니다. 본 프로젝트는 ‘GPT 모델을 활용한 보안 취약점 탐색’ 논문으로 정리되어 정보과학회 컴퓨팅의 실제 논문지(KTCP)에 제출하였고, 심사를 기다리고 있습니다. mvnCrawler는 바이트코드 기반 대규모 언어모델(LLM)을 학습시키기 위해 보안 취약점 여부를 라벨링 한 자바 바이트코드 파일을 수집하는 동적 웹 크롤러입니다. 바이트코드를 활용하여 보안 취약점을 찾는 선행연구가 없었기 때문에 독자적인 데이터셋을 생성할 필요가 있었습니다. 자바 오픈소스 라이브러리가 담긴 maven 저장소에서 임의 개수의 프로젝트를 보안 취약점 정보와 함께 자바 바이트코드 파일을 크롤링합니다. Maven 저장소 특성상, selenium을 활용해 동적으로 웹 크롤링하도록 구현했으며, 프로젝트의 maven URL, CVE(Common Vulnerability Enumerations), 바이트코드 파일의 로컬 경로를 묶어 테이블에 기록하도록 하였습니다. 본 프로젝트 경험을 바탕으로, 인턴쉽에서 웹 크롤러 제작에 기여할 수 있을 것이라 생각합니다. ByCoBERT는 mvnCrawler로 생성한 바이트코드 데이터셋을 사전 학습시킨 언어처리 모델입니다. TensorFlow와 torch, scikit-learn을 사용하여 구현된 BERT 모델을, 바이트코드를 읽도록 일부 코드를 수정하였습니다. 이는 바이트코드가 소스코드를 넘어 자연어만큼이나 유의미한 naturalness가 존재함이 밝혀진 것을 근거로 합니다. 실제로 ByCoBERT는 사전훈련 단계에서 뛰어난 Masked Language Modeling(MLM)과 Next Sentence Prediction(NSP) 성능을 보였습니다. 프로젝트 단위 보안 취약점 예측에서도 상용모델인 spotbug보다 우수한 f1-score 성능을 보여 정보과학회논문지에 ‘ByCoBERT: Bytecode pre-trained 모델 기반 보안 취약점 예측 기법’을 제출하고 1차 심사를 기다리고 있습니다. 자연어처리 모델인 BERT를 목적에 맞게 직접 수정한 경험은 그로들의 인턴십에서 유용하게 쓰일 것입니다.
    • 소통 훈련 학부생 연구원을 통해 얻은 가장 큰 경험은 소통 훈련이라고 생각합니다. 분명 ISEL 연구실에 들어가기 전에도 여러 팀 프로젝트와 동아리 활동에서 협업할 기회는 많았습니다. 그러나 단순한 역할 분담을 넘어, 서로가 어떤 작업을 하고 있고, 왜 해야 하며, 어떻게 통합할 것인지 이해하는 경험을 지도교수님과 팀원들 간의 코드 리뷰를 통해 얻을 수 있었습니다. 또한, 연구실 인턴과 병행했던 Java 과목의 TA(Teaching Assistant)에서도 동일한 요구사항에 대해 서로 다른 이해와 구현 방식이 도출되는 경험을 하며 반복적인 확인과 소통이 필수임을 되새겼습니다. 이로 인한 변화는 저 혼자만의 느낌으로 끝나지 않고, 기본 프로그래밍 언어에 대한 멘토링을 제공하는 코딩 아워에서 당년도 우수 TA로 선정되며 성장을 확신할 수 있었습니다.
  3. 직무 관련 이수한 교육과정
    • Python, Java 관련 파이썬 기본적인 문법과 자료구조, 파일 처리, 객체지향 설계 등 파이썬이 다른 언어와 어떤 부분에서 차이가 있는지 배웠습니다. 파이썬 과목을 들으며 공식 문서를 자주 읽을 수 있었고, 이 경험은 ISEL 연구실에서 수행하던 프로젝트들에 큰 도움이 되었습니다. 프로그래밍 능력과 다양한 프로젝트 수행 경험을 인정받아, 기본 프로그래밍 언어(C/C++, Java, Python)를 멘토링 하는 코딩 아워 TA(Teaching Assistant)로 2023년 3월부터 2024년 6월까지 근무하고 있습니다. 자바 프로그래밍 언어 객체지향적으로 프로젝트를 설계하는 방법과 다양한 라이브러리를 사용하는 법, gradle과 같은 빌드 도구를 사용하는 방법을 배울 수 있었습니다. 이후, 모든 프로젝트에서 객체지향적으로 설계하려고 노력하고 있습니다. 우수한 이해를 인정받아 2023년 3월부터 12월까지 자바 과목의 TA를 맡았습니다. 다양한 실습 환경에서 발생하는 이슈들을 해결하고, 자바에 대한 학생들의 이해를 돕는 역할입니다.
    • 머신러닝, 딥러닝 관련 머신러닝 회귀, 분류, 밀도 추정, PCA 등의 머신러닝 개념을 수학적으로 이해하고, scikit-learn을 사용해 직접 구현하였습니다. 특히, 라이브러리를 사용하지 않고 구현한 코드와, 라이브러리를 사용하여 구현된 코드를 모두 만들어 보면서 머신러닝 알고리즘 구현에 대한 이해를 높일 수 있었습니다. 딥러닝 개론 CNN과 RNN을 수학적으로 이해하고, 실무에서 사용되기 위해 어떤 정규화 전략들이 존재하는지 학습하였습니다. 나아가 Attention, BERT, Explainable AI, Auto-Encoding 등의 주요 논문들에 대한 세미나를 진행했습니다. 주도적으로 선행 논문들을 조사하고, 정리하여 발표하는 경험을 쌓았습니다.
    • AI 개발 도구 사용 경험 관련 AI 프로젝트 입문 AI와 머신러닝의 기본 개념을 학습하고 PyTorch와 TensorFlow로 직접 regression과 CNN, RNN, AE 등을 구현해 보는 경험을 가졌습니다. 3인 팀으로 AI를 활용한 서비스를 개발하도록 과제를 부여받았습니다. 저희는 협업 필터링을 사용해 옷 추천 서비스를 제작하였습니다. 다만 사용할 수 있던 데이터가 팀원 3인뿐이었기에 큰 효과를 보진 못했습니다. 그러나 유사도 측정 알고리즘이 잘 동작한다는 점, 크롤링을 통해 옷의 가격 비교를 할 수 있다는 점 등에서 높은 점수를 받았습니다. 이를 바탕으로 24년 3월부터 6월까지 AI 입문 과목의 TA를 맡아 학생들의 실습을 돕고 있습니다. 컴퓨터 비전 opencv 라이브러리를 사용해 이미지 처리와 분석 기술의 개념을 학습하고 실습하였습니다. 특히 CNN을 활용한 분류 작업과 나아가 객체 인식 기법에 흥미를 느꼈습니다. 마음이 맞는 팀원들과 함께 YOLO를 사용해 수화를 학습시켜 실시간 수화 통역 서비스를 구현하였습니다. 가장 큰 어려움은 GPU를 사용하기 위한 CUDA 환경 설정 문제였습니다. NVIDIA와 TensorFlow의 공식 문서를 여러 번 교차 확인하며 올바른 버전과 경로를 찾을 수 있었습니다. 캡스톤 프로젝트에서 수행한 세 프로젝트(VIChecker, mvnCrawler, ByCoBERT)는 Python과 Shell로 구현되었고, 이 과정에서 AI 모델을 활용한 문제 해결에 대한 이해를 쌓을 수 있었습니다. 잘 구현된 mvnCrawler와 ByCoBERT 모델, 그리고 이를 문서화한 보고서를 졸업과제로 제출하여 2023년도 캡스톤2 부문 우수상을 받았습니다.
    • 경제/산업 관련 경제학 입문 AI의 발전으로 컴퓨터공학 전공자들은 본인이 복무하는 도메인에 대해서도 전문가와 소통할 수 있을 만큼 이해할 필요가 있다고 생각합니다. 저는 다른 분야의 기초전공과목들도 들으며 사회에 대한 상식을 쌓고자 했습니다. 그중 경제학 입문 과목을 통해 수요와 공급, 시장 균형, 소비자 이론 등 경제학의 핵심 개념과 용어들에 익숙해졌습니다. 이를 바탕으로 경제 뉴스의 맥락을 더 잘 이해하고, 모델에 반영할 수 있을 것이라 기대합니다.
  4. 입사 후 계획 그로들에서의 인턴십을 통해 AI 엔지니어로서 실무 경험을 쌓고, 최신 AI 기술을 배우고자 합니다. 이후, 그로들의 혁신적인 프로젝트들에 참여하며 제가 만든 서비스가 사회에 편리함을 가져다주는 경험을 하고 싶습니다. AI를 활용한 이미지 번역, 자동영상제작, 자동회의록작성, 추천시스템 등 다양한 서비스를 개발한 선배 전문가들과 소통할 기회라는 점이 매력적으로 다가왔습니다. 장기적으로는 AI를 위한 소프트웨어 공학, SE를 위한 인공지능을 실무에서 정립하는 엔지니어가 되어 개발자들의 생산성을 높이는데 기여하고 싶습니다.

초안 작성 완료. 이제 형식을 갖췄으니, 실제로 내용을 채워보자.