지난 주에 다섯 번째 개인 프로젝트가 끝났다.

이번에는 지정 과제가 주어졌다.
이진 분류 인공신경망의 순전파까지 Numpy 등을 이용하여 직접 구현하는 과제였다.
인공신경망 구조에 대해 정확하게 이해하고 있어야 구현할 수 있는 과제라고 할 수 있다.

지정 과제를 먼저 작성하고,
역전파 과정 추가, 은닉층 추가, 은닉층 추가 모델에 지정 데이터 외 새로운 데이터에 적용, 호출 그래프 작성 등의 과정을 추가하는 방식으로 과제를 구성하였다.
데이터 탐색 과정과 데이터의 특성(불균형 데이터)에 대한 처리도 추가하였다.

과제 초반에는 지정 데이터에 대한 탐색과 더불어, 기능별로 함수를 분리하고 함수를 하나씩 직접 작성해 나갔다.
지난 6개월간 공부한 내용을 확인하고 실제로 구현해 보는 의미있는 시간이었다.

그런데 전혀 예상치도 못한 문제가 발생했다.
내가 주로 사용하고 있는 서재의 벽면을 마주한 책장 뒤 쪽으로 곰팡이가 크게 번진 것을 발견하게 된 것이다.

벽지를 제거하고 부분 도배를 해야하는 상황에서 이번 프로젝트에만 온전히 시간을 쏟을 수 없게 되었다.
어떻게 이 상황을 타개해 나갈 것인지에 대한 빠른 판단이 필요했다.

고민하다가 예전에 공부했던 ‘파이썬 날코딩으로 알고 짜는 딥러닝’(윤덕호, 2019)에서
기초적인 함수는 참고하되 수정∙보완하고,
데이터 탐색 및 데이터 처리, 새로운 데이터에 적용 등을 하는 것도 주어진 시간 안에서 프로젝트를 완성하는 것으로 방향을 잡았다.
대신 함수 하나 하나에 자세한 설명과 변수명에 대한 설명을 주석으로 추가하였다.

추후에 보완할 내용은 남았지만,
원래 계획했던 내용은 모두 담아서 기간 내에 제출까지 마칠 수 있었다.

이번 과제를 수행하면서 주어진 조건과 자원을 고려한 빠른 선택의 중요성에 대해 고민하는 시간이 되었다.
특히 과제의 의미를 살릴 것인가, 기한 내에 최소한의 성능을 보장하여 완성할 것인가에 대해 실질적으로 고민해보는 시간이 되었던 것 같다.

덧붙이는 말

이번 다섯 번째 개인 프로젝트에서 작성한 코드와 Readme 파일 등은 제 깃허브 my_project5 레포지토리에 함께 담아 두었습니다!