본인은 기계공학부에서 3학년 1학기까지 다니다 휴학 후 부스트캠프 AI Tech 4기에 입과했다. 내가 알기론 인공지능이 기계공학(고전역학)과 큰 접점이 없는 분야로 알고 있다. 하지만 나는 그냥 머신러닝에 관심이 생겨 올해부터 공부를 시작했다. 나에게는 아직 확실한 관심 분야나 하고 싶은 일이 없다. 또한 코딩 자체를 시작한지 정말 얼마 되지 않은 코린이 중에 코린이라 끝까지 잘 해낼 수 있을까 걱정이 되지만 부스트캠프 과정을 몸으로 부딪히며 인공지능 분야 뿐만 아니라 다양한 사람들에게 많은 것을 배울 수 있지 않을까 기대한다.
새로 배운 내용은 굵게 표시 (다음 강의부터는 대부분 새로 배우는거라 사라질 예정)
- 컴퓨터 OS 개념, 컴퓨터 파일 시스템, 터미널 사용 방법 등 컴퓨터 기초 개념
- Python의 유래 및 Python을 쓰는 이유
- 개발 환경 설정, 코딩 시작 전 세팅법
- 변수(Variable)의 개념, 기본 자료형(integer, float, string 등등...), 연산, List
- print문 formatting, 콘솔(터미널) 창에서 파이썬 실행
- 조건문(if ~ else ~), 반복문(for문, while문), 디버깅(debugging) 하는법
- 문자열(string) 다루기, 함수의 개념 및 사용법, function type hints, fucntion docstring
- 파이썬 자료구조(stack, queue, tuple, set, dictionary)
+ collection 모듈 (deque, Counter, OrderedDict, defaultdict, namedtuple)- Pythonic code → 파이썬 특유의 문법을 활용하여 효율적으로 코드를 표현하는 방법
- OOP(Object-Oriented Programming, 객체지향 프로그래밍)란, OOP가 어떻게/왜 쓰이는가, OOP의 특징 (상속, 다형성, 가시성)
- 모듈, 패키지, 프로젝트의 개념 및 사용, 가상환경 설정 및 사용법
- 예외 처리 (try ~ except, raise, assert), 파일 읽기 / 쓰기, Pickle(파이썬의 객체를 따로 저장), 로그 데이터 남기기 (Logging)
- 파이썬으로 Data Handling 하기 (CSV, HTML, XML, JSON)
- Numpy : 파이썬의 행렬, 벡터 연산 시 주로 쓰이는 라이브러리
- Pandas : 데이터 처리, 통계분석 시 주로 쓰이는 파이썬 라이브러리
- 벡터란? 공간상에서의 한 점, 벡터 연산, 벡터의 노름(Norm), 벡터의 내적
- 행렬이란? 벡터를 원소로 가지는 2차원 배열 / 공간상에서 여러 점 / 연산자, 행렬 연산(덧셈, 뺄셈, 성분곱, 스칼라곱), 행렬의 내적, 역행렬 / 유사역행렬(pseudo-inverse)
- 경사하강법(Gradient Descent) - 기울기 or gradient vector 를 통해 함수의 극소점 찾기
- 경사하강법으로 선형회귀 계수 구하기, 확률적 경사하강법(Stochastic Gradient Descent, SGD)
- 신경망의 행렬 표현, 소프트맥스(Softmax) 연산, 원-핫(One-hot) 벡터, 활성함수(activation function), 역전파(back propagation) 알고리즘
- 이산형 vs 연속형 확률변수, 조건부 확률, 기대값, 몬테카를로 샘플링
- 모수란?, 모수추정 - 최대가능도 추정법(Maximum Likelihood Estimation, MLE), 쿨백-라이블러 발산(KL Divergence)
- 베이즈 정리의 개념 및 활용법, 조건부 확률과 인과관계
- CNN(Convolutional Neural Network), Convolution 연산 (사실 CNN에서 쓰이는 연산은 Convolution보다는 Cross-Correlation이 맞다), Convolution 연산의 역전파
- RNN(Recurrent Neural Network), 역전파 - BPTT(Back Propagation Trough Time), BPTT의 기울기 소실 문제와 해결책
사실 나는 피어세션을 매일 진행한다는 것에 큰 부담을 가지고 있었다. 다른 사람들과 학문적 교류를 한 경험이 학교에서 팀플 몇 번을 해본 것 말고는 없었다. 그래서 매일 다른 사람들과 공부하는 이야기를 나누는 것이 쉽지 않을 것 같다고 생각했다. 또 과정이 시작되기 전 Slack을 통해 캠퍼 분들이 자기소개를 한 것을 읽어봤는데 많은 분들이 프로젝트 경험이나 대회, 연구 경험이 있으시다는 것을 보고 잔뜩 쫄아있었다. (물론 지금도 똑같이 잔뜩 쫄아있다.) 그래서 내가 피어세션에서 너무 뒤쳐지면 어떡하지 하는 걱정을 많이 한 상태로 시작했다. 게다가 원체 성격이 낯을 많이 가려서 팀에 잘 녹아들 수 있을까도 걱정이었다.
그래도 다행히 너무 좋은 팀원 분들을 만난 것 같다. 놀랍게도 팀원 분들의 백그라운드가 다들 달랐다. 전공도 다 다르고 해본 일이나 경험도 다양했다. 팀원 분들의 다양한 얘기를 들을 수 있어 좋았다. 앞으로도 경험이 다양한 팀원들에게 많은 이야기를 듣고 많이 배워 갈 수 있을 것 같아 기대가 많이 된다. 나도 아는 것, 해본 것은 많지 않지만 최대한 팀에 도움이 되도록 노력해야겠다는 강력한 동기부여가 되는 것 같다. 또한 분위기를 잘 만들어가주는 팀원들에게 감사하다. 피어세션을 진행하면서 오늘은 뭐를 해야하지 라는 생각이 자주 들었는데 그 때마다 팀원 분들이 이걸 해보는건 어떨까 하고 제안을 해주시고 이끌어주셔서 너무 너무 감사하다.
다만 아쉬웠던 것은 첫 주차다 보니 피어세션의 진행 방식이 제대로 잡혀 있지 않았던 것 같았다. 강의나 과제 진도도 다들 달라 서로 이해가 안 되는 부분이나 모르는 부분들에 대해 이야기해 볼 수 있는 시간이 적었다. 첫 주이기도 하고 팀원 분들도 피어세션은 처음이니까 어쩔 수 없는 것이라 생각한다. 다음주, 또 그 다음주가 되면 점점 더 알차고 재밌는 시간이 될 것 같다. 앞으로 팀원들과의 피어세션이 더욱 기대가 된다.
여담) 팀원 분들께서 막내인 나에게 호칭을 정해달라는 중책을 주셨는데 염치 없이 호형호제 하자고 얘기를 했다. 사실 말하자마자 개념 없는 막내가 되는 것 같아 약간 후회를 했다 ㅎㅎ... 다행히 큰 형님을 포함한 팀원 분들께서 받아주셨다. 팀원 분들, 제가 낯을 정말 많이 가리는데 빨리 친해지고 싶어서 나름의 용기를 가지고 얘기를 드린 것이니 팀원 분들의 너그러운 이해와 사랑 부탁드립니다 ㅠㅠ
월
Level 1 기간(8주) 동안 매일을 함께할 팀월들과 처음 인사를 나누었다. 다들 어색해하고 말이 별로 없었다. 서로를 소개하고 얘기를 나누는 시간을 가졌다.
화
팀원들과의 두번째 피어세션이었다. 처음보다는 서로 말이 많아졌다. 서로의 학습 방법에 대해 물어보기도 하고 부스트캠프에 참여하게 된 과정 이야기도 하였다. 매주 CV 관련 논문을 읽고 얘기를 나눠보자고 하였다.
수
CV 관련 논문 스터디를 어떤 방식으로 할지 좀 더 상세히 얘기를 나누었다. 일단은 매주 모더레이터가 논문 하나를 정해 자료를 준비 한 후 조원들에게 공유하여 같이 공부를 해보는 방향으로 정했다. 또한 과제를 각자 해 본 후 리뷰를 진행했다. 코어타임 이후 멘토님과 멘토링 시간을 가졌다. 멘토님과 처음 인사를 나누었고 간단한 QnA와 앞으로의 멘토링 방향에 대해 이야기했다. Notion에 팀 페이지를 만들어 질문과 진도를 정리하기로 하였다.
목
심화과제에 대한 이야기를 했다. 심화과제를 아직 시도해보지 않은 팀원들도 있어서 1번까지만 진행했다. 다행히(?) 나만 어려워한게 아니었다.
금
매주 금요일에 하는 팀 회고를 진행했다. 이번 한 주 동안의 잘했던 점, 아쉬운 점, 개선 사항 등을 공유하며 Notion에 팀 회고지를 작성했다.
부스트캠프의 첫 주차가 정말 정신 없이 지나가버렸다. 너무 많은 일들이 이 짧은 5일 동안 있었다. 시간도 매우 빨리 갔다. 시계를 볼 때마다 '벌써 이렇게 됐나' 라는 생각이 들었다. 또한 이렇게 규칙적인(?) 생활을 하는 것이 오랜만인것 같다. 앞으로 5개월 동안 계속 이와 같은 패턴으로 생활해야 한다. 지치지말고 매너리즘에 빠지지 말고 끝까지 해서 큰 성장을 이루고 싶다. 앞으로의 내가 초심을 잃지 말고 힘을 냈으면 좋겠다.