캠프 기간동안 주로 사용하는 언어인 Python을 공부한다. 한 주간 들어야하는 Python 강의는 아주 기초적인 내용부터 시작한다. 학교를 다니는 동안 Java, C++, C, Javascript 등 다양한 언어로 프로젝트를 해봤다고 방심하다 가끔씩 움찔할 때가 있다.
특히 Pythonic code
강의를 들으면서 파이썬스럽게 코딩하는 방법을 배웠다. 가장 인상 깊었던 내용은 리스트 컴프리헨션
을 사용해 코드를 더 깔끔하게 작성하라는 것이었다.
# 리스트 컴프리헨션 # number = [] # for n in range(0, 10): # number.append(n) number = [x for x in range(0,10)]
내가 정말 좋아하는 교수님께서는 코드를 짧게만드는 기법을 굉장히 싫어하셨다. (ex. 삼항연산자)
그 이유는 나중에 내가 내 코드를 볼때나 다른 사람이 코드를 볼때 자칫 잘못하면 이해하기 힘들 수 있기 때문이라고 하셨다.
그래서 python의 이러한 특성을 받아들이기 힘들었다. 내 눈에는 읽기 힘들어 보여서 그랬는데 마스터님께서 오히려 이러한 요소들이 다른 사람이 봤을 때 더 쉽고 이해하기 편한 기법이라고 알려주셨다.
다른 사람이 쉽게 이해할 수 있는 코드로 작성해야 하는 이유
1주 동안은 Python 기초 문법 위주 강의기 때문에 가벼운 마음으로 듣고 있다.
딥러닝에 필요한 기초 수학을 1주동안 배운다. (선형대수
, 확률 통계
, ...
)
수학은 정말 기본도 없어서 캠프 시작 전부터 참 걱정이 많았다. 강의를 듣고도 잘 이해가 되지 않아 주말에 따로 공부좀 더 해서 내용을 보충해야 할 것 같다.
오늘은 벡터와 행렬 그리고 경사하강법에 대해 학습하였다.
벡터
벡터의 기본 연산 및 성질을 이해하였고 L1-노름, L-2노름의 차이점과 공식을 배웠다.
L-2노름을 이용하여 두 벡터 사이의 거리 및 각도도 이제 구할 수 있다.
살다 보니 두 벡터(x, y)의 내적도 구할 수 있게 되었다.
행렬
행렬의 기본 연산 및 성질을 배웠다.
행렬은 데이터X를 다른 차원으로 보내준다.<-인공지능에 수학이 필요하다는 느낌을 처음 받았다.
살다 보니 무어-펜로즈 역행렬을 구할 수 있게 되었다.무어-펜로즈 (Moore-Penrose) 역행렬 : 역행렬을 계산할 수 없을 경우 A 행렬에 곱하여 항등 행렬에 가까운 행렬을 유도할 수 있는 행렬
경사하강법
함수 f의 주어진 점에서 접선의 기울기는 미분이라고 한다.
이 미분을 가지고 더하거나 빼서 극소값과 극대값을 찾을 수 있다.
경사하강법은 미분값을 빼는 것이고 극소값의 위치를 구할 때 사용한다.
우리의 데이터는 다변수 함수인 벡터를 입력으로 받으므로편미분
을 알아야 한다
부스트캠프 시작하는 날 새벽 6시에 일어났다.
같은 조로 편성된 캠퍼 분들 다들 대단하신분들 같다...
수학은 사실 이미 들었던 내용 복습인데 완벽하게 까먹었다.