[부스트캠프 AI Tech 4기] 1주차

신현수·2022년 9월 23일
0

부스트캠프를 시작하며

본인은 기계공학부에서 3학년 1학기까지 다니다 휴학 후 부스트캠프 AI Tech 4기에 입과했다. 내가 알기론 인공지능이 기계공학(고전역학)과 큰 접점이 없는 분야로 알고 있다. 하지만 나는 그냥 머신러닝에 관심이 생겨 올해부터 공부를 시작했다. 나에게는 아직 확실한 관심 분야나 하고 싶은 일이 없다. 또한 코딩 자체를 시작한지 정말 얼마 되지 않은 코린이 중에 코린이라 끝까지 잘 해낼 수 있을까 걱정이 되지만 부스트캠프 과정을 몸으로 부딪히며 인공지능 분야 뿐만 아니라 다양한 사람들에게 많은 것을 배울 수 있지 않을까 기대한다.


학습 정리

Python & AI Math

Python

새로 배운 내용은 굵게 표시 (다음 강의부터는 대부분 새로 배우는거라 사라질 예정)

1강

  • 컴퓨터 OS 개념, 컴퓨터 파일 시스템, 터미널 사용 방법 등 컴퓨터 기초 개념
  • Python의 유래 및 Python을 쓰는 이유
  • 개발 환경 설정, 코딩 시작 전 세팅법

2강

  • 변수(Variable)의 개념, 기본 자료형(integer, float, string 등등...), 연산, List
  • print문 formatting, 콘솔(터미널) 창에서 파이썬 실행
  • 조건문(if ~ else ~), 반복문(for문, while문), 디버깅(debugging) 하는법
  • 문자열(string) 다루기, 함수의 개념 및 사용법, function type hints, fucntion docstring

3강

  • 파이썬 자료구조(stack, queue, tuple, set, dictionary)
    + collection 모듈 (deque, Counter, OrderedDict, defaultdict, namedtuple)
  • Pythonic code → 파이썬 특유의 문법을 활용하여 효율적으로 코드를 표현하는 방법

4강

  • OOP(Object-Oriented Programming, 객체지향 프로그래밍)란, OOP가 어떻게/왜 쓰이는가, OOP의 특징 (상속, 다형성, 가시성)
  • 모듈, 패키지, 프로젝트의 개념 및 사용, 가상환경 설정 및 사용법

5강

  • 예외 처리 (try ~ except, raise, assert), 파일 읽기 / 쓰기, Pickle(파이썬의 객체를 따로 저장), 로그 데이터 남기기 (Logging)
  • 파이썬으로 Data Handling 하기 (CSV, HTML, XML, JSON)

6강

  • Numpy : 파이썬의 행렬, 벡터 연산 시 주로 쓰이는 라이브러리

7강

  • Pandas : 데이터 처리, 통계분석 시 주로 쓰이는 파이썬 라이브러리

AI Math

1강 벡터가 뭐에요

  • 벡터란? 공간상에서의 한 점, 벡터 연산, 벡터의 노름(Norm), 벡터의 내적

2강 행렬이 뭐에요

  • 행렬이란? 벡터를 원소로 가지는 2차원 배열 / 공간상에서 여러 점 / 연산자, 행렬 연산(덧셈, 뺄셈, 성분곱, 스칼라곱), 행렬의 내적, 역행렬 / 유사역행렬(pseudo-inverse)

3강 경사하강법 - 순한맛

  • 경사하강법(Gradient Descent) - 기울기 or gradient vector 를 통해 함수의 극소점 찾기

4강 경사하강법 - 매운맛

  • 경사하강법으로 선형회귀 계수 구하기, 확률적 경사하강법(Stochastic Gradient Descent, SGD)

5강 딥러닝 학습방법 이해하기

  • 신경망의 행렬 표현, 소프트맥스(Softmax) 연산, 원-핫(One-hot) 벡터, 활성함수(activation function), 역전파(back propagation) 알고리즘

6강 확률론 맛보기

  • 이산형 vs 연속형 확률변수, 조건부 확률, 기대값, 몬테카를로 샘플링

7강 통계학 맛보기

  • 모수란?, 모수추정 - 최대가능도 추정법(Maximum Likelihood Estimation, MLE), 쿨백-라이블러 발산(KL Divergence)

8강 베이즈 통계학 맛보기

  • 베이즈 정리의 개념 및 활용법, 조건부 확률과 인과관계

9강 CNN 첫걸음

  • CNN(Convolutional Neural Network), Convolution 연산 (사실 CNN에서 쓰이는 연산은 Convolution보다는 Cross-Correlation이 맞다), Convolution 연산의 역전파

10강 RNN 첫걸음

  • RNN(Recurrent Neural Network), 역전파 - BPTT(Back Propagation Trough Time), BPTT의 기울기 소실 문제와 해결책

피어세션

회고

사실 나는 피어세션을 매일 진행한다는 것에 큰 부담을 가지고 있었다. 다른 사람들과 학문적 교류를 한 경험이 학교에서 팀플 몇 번을 해본 것 말고는 없었다. 그래서 매일 다른 사람들과 공부하는 이야기를 나누는 것이 쉽지 않을 것 같다고 생각했다. 또 과정이 시작되기 전 Slack을 통해 캠퍼 분들이 자기소개를 한 것을 읽어봤는데 많은 분들이 프로젝트 경험이나 대회, 연구 경험이 있으시다는 것을 보고 잔뜩 쫄아있었다. (물론 지금도 똑같이 잔뜩 쫄아있다.) 그래서 내가 피어세션에서 너무 뒤쳐지면 어떡하지 하는 걱정을 많이 한 상태로 시작했다. 게다가 원체 성격이 낯을 많이 가려서 팀에 잘 녹아들 수 있을까도 걱정이었다.

그래도 다행히 너무 좋은 팀원 분들을 만난 것 같다. 놀랍게도 팀원 분들의 백그라운드가 다들 달랐다. 전공도 다 다르고 해본 일이나 경험도 다양했다. 팀원 분들의 다양한 얘기를 들을 수 있어 좋았다. 앞으로도 경험이 다양한 팀원들에게 많은 이야기를 듣고 많이 배워 갈 수 있을 것 같아 기대가 많이 된다. 나도 아는 것, 해본 것은 많지 않지만 최대한 팀에 도움이 되도록 노력해야겠다는 강력한 동기부여가 되는 것 같다. 또한 분위기를 잘 만들어가주는 팀원들에게 감사하다. 피어세션을 진행하면서 오늘은 뭐를 해야하지 라는 생각이 자주 들었는데 그 때마다 팀원 분들이 이걸 해보는건 어떨까 하고 제안을 해주시고 이끌어주셔서 너무 너무 감사하다.
다만 아쉬웠던 것은 첫 주차다 보니 피어세션의 진행 방식이 제대로 잡혀 있지 않았던 것 같았다. 강의나 과제 진도도 다들 달라 서로 이해가 안 되는 부분이나 모르는 부분들에 대해 이야기해 볼 수 있는 시간이 적었다. 첫 주이기도 하고 팀원 분들도 피어세션은 처음이니까 어쩔 수 없는 것이라 생각한다. 다음주, 또 그 다음주가 되면 점점 더 알차고 재밌는 시간이 될 것 같다. 앞으로 팀원들과의 피어세션이 더욱 기대가 된다.

여담) 팀원 분들께서 막내인 나에게 호칭을 정해달라는 중책을 주셨는데 염치 없이 호형호제 하자고 얘기를 했다. 사실 말하자마자 개념 없는 막내가 되는 것 같아 약간 후회를 했다 ㅎㅎ... 다행히 큰 형님을 포함한 팀원 분들께서 받아주셨다. 팀원 분들, 제가 낯을 정말 많이 가리는데 빨리 친해지고 싶어서 나름의 용기를 가지고 얘기를 드린 것이니 팀원 분들의 너그러운 이해와 사랑 부탁드립니다 ㅠㅠ

요일별 일지

Level 1 기간(8주) 동안 매일을 함께할 팀월들과 처음 인사를 나누었다. 다들 어색해하고 말이 별로 없었다. 서로를 소개하고 얘기를 나누는 시간을 가졌다.

팀원들과의 두번째 피어세션이었다. 처음보다는 서로 말이 많아졌다. 서로의 학습 방법에 대해 물어보기도 하고 부스트캠프에 참여하게 된 과정 이야기도 하였다. 매주 CV 관련 논문을 읽고 얘기를 나눠보자고 하였다.

CV 관련 논문 스터디를 어떤 방식으로 할지 좀 더 상세히 얘기를 나누었다. 일단은 매주 모더레이터가 논문 하나를 정해 자료를 준비 한 후 조원들에게 공유하여 같이 공부를 해보는 방향으로 정했다. 또한 과제를 각자 해 본 후 리뷰를 진행했다. 코어타임 이후 멘토님과 멘토링 시간을 가졌다. 멘토님과 처음 인사를 나누었고 간단한 QnA와 앞으로의 멘토링 방향에 대해 이야기했다. Notion에 팀 페이지를 만들어 질문과 진도를 정리하기로 하였다.

심화과제에 대한 이야기를 했다. 심화과제를 아직 시도해보지 않은 팀원들도 있어서 1번까지만 진행했다. 다행히(?) 나만 어려워한게 아니었다.

매주 금요일에 하는 팀 회고를 진행했다. 이번 한 주 동안의 잘했던 점, 아쉬운 점, 개선 사항 등을 공유하며 Notion에 팀 회고지를 작성했다.


회고

잘한 점?

  • 입과 전 Pre-Course를 들은 것이 천만 다행이었다. Pre-Course에서 학습한 내용이 1주차 수업 내용이었다. 그래서 수업을 다시 들으니 처음보다는 수업 내용을 많이 이해 할 수 있었다. 많은 수업량이었지만 전에 수업을 들어놨었기에 시간에 쫓기지 않고 학습을 완료할 수 있었던 것 같다.
  • 복습하며 들은 강의들이지만 그래도 잘 이해가 되지 않는 부분들이 많았다. 이런 부분들에 대해서는 유튜브에서 강의를 찾아보거나 구글링을 통해 개념들을 이해하고 넘어갔다.
  • 수학에서 이해가 안되는 부분이 있어 한참을 쳐다봤는데 손으로 풀어보니 이해가 됐다. 계산식을 보고 이게 왜 이렇게 되지? 라고 생각하며 쳐다만 보다가 쓰면서 해보니 바로 이해가 되버리는 마법을 경험했다. 임성빈 마스터님께서도 마스터 클래스에서 같은 얘기를 해주셨다. 역시 수학은 손으로... 앞으로도 수학은 무조건 눈이 아니라 손으로 이해하려고 해야겠다.

아쉬운 점?

  • 첫 주차였다보니 정신이 없어서 그런지 계획적인 학습을 하지 못했다. Pre-Course를 수강했음에도 불구하고 이것 저것 신경쓸게 많았던 한 주였다. 수업을 들으면서도 '이것도 해야되는데...', '저건 언제하지...' 와 같은 생각이 들었다. 그러다보니 수업을 다 들은 후에는 과제를 했다가, 정리를 했다가 하며 해야할건 많은데 어떤거부터 해야할지는 모르겠는 상태가 되어버렸다. 다음주부터는 주차 시작 전에 요일마다 어떤 걸 어떤 순서로 해야할지 스스로 계획을 세워보고 학습 체계를 잡아가야겠다.
  • 심화과제를 스스로 해내지 못했다. 스스로 최대한 해보다가 한계에 부딪혀 주어진 정답을 보고 이해하는걸로 만족해야 했다. 이해...가 된건가 싶기도 하다. 나만... 이렇게 어려운건가... 심화 과제를 시도해보면서 내가 이해를 다 하고 넘어간게 아니구나를 깨닫고 들었던 강의들을 다시 보고 길게 고민해봤다.
  • 역시나 이해가 안되는 부분은 그래도 많았다. (특히 수학...) 선형대수와 확률론이 아직 익숙하지 않아 수학 부분의 계산식들이나 원리가 잘 이해되지 않았다. 유튜브나 구글링을 통해서 좀 더 알아봤지만 완벽하게 내 것으로 만들지 못한 부분들이 있었다.
    - MLE와 쿨백-라이블러 발산이 완벽히 이해되지 않았다.
    - RNN의 BPTT 계산 과정이 잘 이해되지 않았다.
  • 시간관리에 실패했다. 생각보다 회고를 적는데 긴 시간이 걸렸다. (너무 많은 걸 적은 것 같기도 하다.) 반면 위의 학습정리를 보면 시간 부족으로 인해 각 강의의 정리라기보다는 어떤 내용이 있는지 간략히 적어놨다. 강의를 들으면서 같이 정리를 해놨으면 좋았을텐데... 다음주부터는 블로그에 회고 부분은 간략화하고 학습 정리를 좀 더 자세하고 알차게 적어보도록 해야겠다.

마무리하며...

부스트캠프의 첫 주차가 정말 정신 없이 지나가버렸다. 너무 많은 일들이 이 짧은 5일 동안 있었다. 시간도 매우 빨리 갔다. 시계를 볼 때마다 '벌써 이렇게 됐나' 라는 생각이 들었다. 또한 이렇게 규칙적인(?) 생활을 하는 것이 오랜만인것 같다. 앞으로 5개월 동안 계속 이와 같은 패턴으로 생활해야 한다. 지치지말고 매너리즘에 빠지지 말고 끝까지 해서 큰 성장을 이루고 싶다. 앞으로의 내가 초심을 잃지 말고 힘을 냈으면 좋겠다.

0개의 댓글