부스트캠프 AI Tech 4기 Week 1

Geonhee Sim·2022년 9월 23일
0

학습 내용

1주차는 AI 개발에 필요한 기본적인 Python 및 수학 지식을 공부했다.

Python

Python의 기본적인 문법 그리고 데이터 분석 및 인공지능 학습의 필수적인 모듈인 Numpy, Pandas를 공부했다.
Python이 플랫폼 독립적인 인터프리터 언어이며, 객체 지향 동적 타이핑 언어라는 것 등 대충 알고 있던 개념적, 개발적(?)인 부분을 보충할 수 있어 좋았다. 언어에 대한 경험이 쌓인 뒤에 다시 공부함으로써 정확히 이해하기를 미뤄뒀던 부분들을 해결할 수 있어서 좋았다.
이번 주차에서 깨달았던 많은 내용들 중 몇가지만 꼽자면

  1. Python은 플랫폼 독립적인 인터프리터 언어, 그리고 객체 지향 동적 타이핑 언어라는 특징을 가지고 있다.
    Python은 각 OS에서 적절한 인터프리터가 설치되어 있기만 하면 돌아간다. 라떼판다, iOS, Windows, Ubuntu에서 Python을 사용해 왔었는데 플랫폼 제한이 아예 없을 줄은 몰랐다.
    동적 타이핑 언어 (dynamic typing) 라 함은 실행 하는 시점에서야 데이터 타입이 결정된다는 것이다.
    a = 4
    print(type(a))  # -> <class 'int'>
    a = 4.0
    print(type(a))  # -> <class 'float'>
    실행 시점에 코드를 해석하며 실행한다는 인터프리터 언어라는 특징의 연장선인 것 같다. 그래서 미리 컴파일이 되어 있는 C++보다 실행 속도가 느린 것이다. 그런데도 실무에서 Python을 쓰는 이유는? 현재 뛰어나게 발전한 컴퓨터의 성능이 Python의 느린 속도를 보정해주며, 상대적으로 간단하게 작성할 수 있으며 필요 메모리가 적은 장점을 지니기 때문이다.
  2. list comprehension으로 성능을 향상시킬 수 있다.
    temp = [[0 for _ in range(10)] for _ in range(10)]
    위와 같이 for문을 사용하지 않고 한 줄로 간단하게 리스트를 생성하는 기법이다. 나는 주로 for문을 사용해왔는데, 실은 list comprehension이 많이 사용되는 방법이며, 이 방법이 더 빠르다고 한다.
  3. generator로 메모리 절약이 가능하다.
    그 시점에 필요한 값만을 메모리에 반환하기 때문이라고 한다. 큰 데이터를 처리할 때 더욱 효과가 클 것이다. generator는 직접 사용해봐야 잘 이해할 수 있을 것 같다.
  4. regular expression
    정규식은 처음 알았다. 다양한 타입의 데이터에서 특정한 규칙을 가진 문자열의 집합을 추출 할 때 유용하게 사용할 수 있는 유용한 도구다. 특히 방대한 정보량의 웹(html)에서 학습에 필요한, 특정 규칙을 가진 문자열 데이터를 가져올 때 유용하다. Python 내에선 urlib로 url의 html 정보를 읽어와 re 모듈로 사용할 수 있다고 한다. 정규식의 문법은 방대해서, 시간날 때 계속해서 연습하는 것이 좋을 것이다.
    정규식 연습 사이트
    한 캠퍼분이 추천해준 정규식 십자말풀이 게임 사이트도 있다.
    Regex Crossword

그 외에도 PEP8을 따르도록 코드를 자동으로 수정해주는 black 등 개발에 유익한 모듈이나 extension들을 알 수 있어 좋았다.

AI Math

경사하강법과 기본적인 확률론, 최대가능도 추정법(MLE), 베이즈 통계학, 그리고 Vanila CNN과 RNN 모델에 대해 공부했다. 걱정했던 대로 수학이 어려웠다.😢😢 하지만 교수님께서 말씀하신 대로 주기적으로 리마인드를 시켜주면 이해도가 상승할 것이다. 가장 어려웠던 MLE에 대해 조금 정리해본다.

MLE, maximum likelihood estimation

유한한 데이터만으로 모집단의 분포를 정확히 하는 데엔 한계가 있다. 따라서 데이터의 분포를 가정 후 그 분포를 결정하는 모수(parameter)를 추정하는 모수적 방법을 기계학습에서도 종종 사용한다고 한다.
그 중 이론적으로 가장 가능성이 높은 모수를 추정하는 방법이 바로 MLE 이다.
from 부스트캠프 AI Tech 교육 자료
가능도 함수는 모수를 따르는 분포가 데이터 x를 관찰할 가능성을 도출하는 함수로, 확률 밀도 함수와 같은 포맷이나 확률로 해석하면 안 된다. 개념적으로도 '가능성'의 크기를 나타내는 지표고, 수식적으로도 모수에 대해 다 적분(continuous) or 더해(discrete)줬을 때 1이 되지 않기 때문이다.
데이터 X가 독립적으로 추출되었을 때, 가능도 함수에 로그를 씌운 로그가능도를 최적화할 수 있다.

왜 굳이 로그가능도를 사용하냐면, 로그의 특징으로 인해 곱셈으로 결합된 항을 덧셈으로 분리할 수 있기 때문이다. 이는 곱셈연산으로 인한 컴퓨터의 연산 오차를 줄일 수 있다. 또한 경사하강법의 연산량을 O(n^2) -> O(n) 로 크게 줄일 수 있다.

1주차에 강의 분량이 매우 많았다. 그래서 공부 말고도 논문 리뷰, 과제 제출, 코테 스터디도 해야 했는데 시간이 부족해 벅찼던 것 같다.😖 그래도 담주부턴 강의가 이번 주보단 적다니까...ㅎㅎ 하지만 그만큼 난이도는 상승하겠지😂😂

과제

기본적인 Python 문법을 활용하는 문제로, 1주차인 만큼 쉬웠다. 풀면서 코드가 다 똑같을 거라 생각했는데, 제출 후 피어세션 때 팀원들의 코드와 꽤 다른 부분들이 있어서 놀랐다. 자세한 사항은 아래 피어세션 부분에서 다루겠다.

피어세션

부스트캠프는 5명씩 팀이 이뤄져있다. 1주차부터 8주차까진 운영진 측에서 정해준 팀으로 움직인다. 첫날 Zoom 미팅에서 만났을 땐 서로 수줍어했는데, 오빠 언니 동생하며 1주차 매일매일 함께 얼굴 보며 얘기하다 보니 다들 많이 편해졌다ㅎㅎ🥰🥰
첫 날엔 다음과 같이 우리 팀의 그라운드 룰을 정했다.

  1. 서로 모닝콜 해주기
  2. 출석 리마인드 해주기
  3. 건강을 위해 오늘 한 운동 인증하기
  4. 매주 블로그에 최소 주 1회 글쓰기
  5. 호칭은 형동생으로
  6. 알고리즘 문제 하나씩 풀고 주 1회 스터디
  7. 하버드 확률론 기초 강의 매주 2개씩 듣고 주 1회 스터디

3번은 우리 팀에 운동하는 사람이 많아서 정했고, 6번은 코테 감을 잃지 말자는 취지로 정했다.
7번은 이번 주 수학 강의에서 확통이란 높은 벽을 느껴버리고😂 유명한 강의를 들으며 함께 기초부터 천천히 공부하기로 했다. 하버드 확률론 기초 강의는 부스트코스에서 계정만 있으면 무료로, 상시 들을 수 있는 강의다. 한글 자막도 달려있으니 관심있는 분들은 들어보세요!
부스트 코스 하버드 확률론 기초 강의 바로가기

매일 모닝 스크럼, 피어세션을 통해 각자 계획한 하루 일과를 공유하고, 서로 격려하고, 그리고 공부하다 마주친 문제점, 의문점을 묻고 답하며 학습에 탄력을 받을 수 있었다. 역시 혼자 공부보단 함께하는 공부가 최고다ㅎㅎ🥰🥰
오늘 피어세션에선 금주 과제를 각자 어떻게 풀었는지 코드 리뷰를 했다. 단순한 문자열 처리 문제라서 해답 코드가 다 똑같을 줄 알았는데, 아니었다. 예를 들어 나는 입력받은 문자열을 for문으로 돌며 조건문을 사용해서 풀었다면, 다른 팀원은 정규식을 사용해서 처리한 것이다.
이렇게 간단한 문제임에도 생각보다 서로 생각한 방식이 달라서 신기했다. 내심 다양한 코드들을 보는 것이 문제 해결력 향상에 도움됨을 되새길 수 있었다.

학습회고

캠프의 첫주인 이번 주는 정신없이 지나갔다. 적응할 것도, 해내야 할 것도 많았기 때문이다. 그만큼 밀도있게 시간을 보낸 것 같아 뿌듯하다.

  1. Python 문법을 꼼꼼히 다져볼 수 있었다.
  2. 확통이라는 벽은 높다... 그리고 기존에 알고 있던 수학 지식도 다 까먹어버린 나를 발견할 수 있었다(삼각함수 특수각을 서치할 때의 그 슬픔이란!😂😂). 이번 기회를 통해 처참해진 수학 실력을 보수하고, 더 나아가 next level로 향할 수 있을 것이라 기대한다.
  3. 새로운 방법을 거부하지 말자✨ 이번 주 강의에서 정규식, list comprehension과 같이 새로 배우거나 익숙치 않은 내용들을 접했는데, 이번 주 과제를 풀 때 하나의 방법으로 전혀 생각하지 않았다. 그런데 위의 방법들을 쓰면 더욱 깔끔하게 풀 수 있는 문제들이었다. 기존에 내가 알고 있던 지식에 안주하지 말고 새로운 지식을 받아들이면 어디에 쓸 수 있을지 고민해보고 활용하도록 노력하자. '안주'는 곧 '정체'다.

게시물 내 모든 사진 자료는 부스트캠프 AI Tech 교육 자료의 것임을 알립니다.

profile
기록이란 걸 해보자

0개의 댓글