1주차는 AI 개발에 필요한 기본적인 Python 및 수학 지식을 공부했다.
Python의 기본적인 문법 그리고 데이터 분석 및 인공지능 학습의 필수적인 모듈인 Numpy, Pandas를 공부했다.
Python이 플랫폼 독립적인 인터프리터 언어이며, 객체 지향 동적 타이핑 언어라는 것 등 대충 알고 있던 개념적, 개발적(?)인 부분을 보충할 수 있어 좋았다. 언어에 대한 경험이 쌓인 뒤에 다시 공부함으로써 정확히 이해하기를 미뤄뒀던 부분들을 해결할 수 있어서 좋았다.
이번 주차에서 깨달았던 많은 내용들 중 몇가지만 꼽자면
a = 4
print(type(a)) # -> <class 'int'>
a = 4.0
print(type(a)) # -> <class 'float'>
실행 시점에 코드를 해석하며 실행한다는 인터프리터 언어라는 특징의 연장선인 것 같다. 그래서 미리 컴파일이 되어 있는 C++보다 실행 속도가 느린 것이다. 그런데도 실무에서 Python을 쓰는 이유는? 현재 뛰어나게 발전한 컴퓨터의 성능이 Python의 느린 속도를 보정해주며, 상대적으로 간단하게 작성할 수 있으며 필요 메모리가 적은 장점을 지니기 때문이다.temp = [[0 for _ in range(10)] for _ in range(10)]
위와 같이 for문을 사용하지 않고 한 줄로 간단하게 리스트를 생성하는 기법이다. 나는 주로 for문을 사용해왔는데, 실은 list comprehension이 많이 사용되는 방법이며, 이 방법이 더 빠르다고 한다.urlib
로 url의 html 정보를 읽어와 re
모듈로 사용할 수 있다고 한다. 정규식의 문법은 방대해서, 시간날 때 계속해서 연습하는 것이 좋을 것이다.그 외에도 PEP8을 따르도록 코드를 자동으로 수정해주는 black
등 개발에 유익한 모듈이나 extension들을 알 수 있어 좋았다.
경사하강법과 기본적인 확률론, 최대가능도 추정법(MLE), 베이즈 통계학, 그리고 Vanila CNN과 RNN 모델에 대해 공부했다. 걱정했던 대로 수학이 어려웠다.😢😢 하지만 교수님께서 말씀하신 대로 주기적으로 리마인드를 시켜주면 이해도가 상승할 것이다. 가장 어려웠던 MLE에 대해 조금 정리해본다.
유한한 데이터만으로 모집단의 분포를 정확히 하는 데엔 한계가 있다. 따라서 데이터의 분포를 가정 후 그 분포를 결정하는 모수(parameter)를 추정하는 모수적 방법을 기계학습에서도 종종 사용한다고 한다.
그 중 이론적으로 가장 가능성이 높은 모수를 추정하는 방법이 바로 MLE 이다.
가능도 함수는 모수를 따르는 분포가 데이터 x를 관찰할 가능성을 도출하는 함수로, 확률 밀도 함수와 같은 포맷이나 확률로 해석하면 안 된다. 개념적으로도 '가능성'의 크기를 나타내는 지표고, 수식적으로도 모수에 대해 다 적분(continuous) or 더해(discrete)줬을 때 1이 되지 않기 때문이다.
데이터 X가 독립적으로 추출되었을 때, 가능도 함수에 로그를 씌운 로그가능도를 최적화할 수 있다.
왜 굳이 로그가능도를 사용하냐면, 로그의 특징으로 인해 곱셈으로 결합된 항을 덧셈으로 분리할 수 있기 때문이다. 이는 곱셈연산으로 인한 컴퓨터의 연산 오차를 줄일 수 있다. 또한 경사하강법의 연산량을 O(n^2) -> O(n) 로 크게 줄일 수 있다.
1주차에 강의 분량이 매우 많았다. 그래서 공부 말고도 논문 리뷰, 과제 제출, 코테 스터디도 해야 했는데 시간이 부족해 벅찼던 것 같다.😖 그래도 담주부턴 강의가 이번 주보단 적다니까...ㅎㅎ 하지만 그만큼 난이도는 상승하겠지😂😂
기본적인 Python 문법을 활용하는 문제로, 1주차인 만큼 쉬웠다. 풀면서 코드가 다 똑같을 거라 생각했는데, 제출 후 피어세션 때 팀원들의 코드와 꽤 다른 부분들이 있어서 놀랐다. 자세한 사항은 아래 피어세션 부분에서 다루겠다.
부스트캠프는 5명씩 팀이 이뤄져있다. 1주차부터 8주차까진 운영진 측에서 정해준 팀으로 움직인다. 첫날 Zoom 미팅에서 만났을 땐 서로 수줍어했는데, 오빠 언니 동생하며 1주차 매일매일 함께 얼굴 보며 얘기하다 보니 다들 많이 편해졌다ㅎㅎ🥰🥰
첫 날엔 다음과 같이 우리 팀의 그라운드 룰을 정했다.
- 서로 모닝콜 해주기
- 출석 리마인드 해주기
- 건강을 위해 오늘 한 운동 인증하기
- 매주 블로그에 최소 주 1회 글쓰기
- 호칭은 형동생으로
- 알고리즘 문제 하나씩 풀고 주 1회 스터디
- 하버드 확률론 기초 강의 매주 2개씩 듣고 주 1회 스터디
3번은 우리 팀에 운동하는 사람이 많아서 정했고, 6번은 코테 감을 잃지 말자는 취지로 정했다.
7번은 이번 주 수학 강의에서 확통이란 높은 벽을 느껴버리고😂 유명한 강의를 들으며 함께 기초부터 천천히 공부하기로 했다. 하버드 확률론 기초 강의는 부스트코스에서 계정만 있으면 무료로, 상시 들을 수 있는 강의다. 한글 자막도 달려있으니 관심있는 분들은 들어보세요!
부스트 코스 하버드 확률론 기초 강의 바로가기
매일 모닝 스크럼, 피어세션을 통해 각자 계획한 하루 일과를 공유하고, 서로 격려하고, 그리고 공부하다 마주친 문제점, 의문점을 묻고 답하며 학습에 탄력을 받을 수 있었다. 역시 혼자 공부보단 함께하는 공부가 최고다ㅎㅎ🥰🥰
오늘 피어세션에선 금주 과제를 각자 어떻게 풀었는지 코드 리뷰를 했다. 단순한 문자열 처리 문제라서 해답 코드가 다 똑같을 줄 알았는데, 아니었다. 예를 들어 나는 입력받은 문자열을 for문으로 돌며 조건문을 사용해서 풀었다면, 다른 팀원은 정규식을 사용해서 처리한 것이다.
이렇게 간단한 문제임에도 생각보다 서로 생각한 방식이 달라서 신기했다. 내심 다양한 코드들을 보는 것이 문제 해결력 향상에 도움됨을 되새길 수 있었다.
캠프의 첫주인 이번 주는 정신없이 지나갔다. 적응할 것도, 해내야 할 것도 많았기 때문이다. 그만큼 밀도있게 시간을 보낸 것 같아 뿌듯하다.
게시물 내 모든 사진 자료는 부스트캠프 AI Tech 교육 자료의 것임을 알립니다.