1. 오늘 일정
1) 타운홀 미팅
- 프로그램 소개
- 이번 주 일정 안내
- 정보 보호 규정
2) meetup with peer
3) 학습
4) 피어 세션
5) 어색하DAY (멘토 소개)
2. 학습 내용
1강: 벡터
벡터란?
벡터는 숫자를 원소로 가지는 리스트(list) 또는 배열(array)이다.
벡터의 특징
- 벡터는 공간에서 한 점을 나타낸다.
- 벡터는 원점으로부터 상대적 위치를 표현한다.
- 벡터에 숫자를 곱해주면 길이만 변한다.
- 벡터끼리 같은 모양을 가지면 덧셈, 뺄셈, 성분곱을 계산할 수 있다.
벡터의 연산
- 두 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현한다.
- 벡터의 뺄셈은 방향을 뒤집은 덧셈이다.
벡터의 노름
- 벡터의 노름은 원점에서부터의 거리를 말한다.
- L1-노름은 각 성분의 변화량의 절대값을 모두 더한다.
- L2-노름은 피타고라스 정리를 이용해 유클리드 거리를 계산한다.
- L1,L2- 노름을 이용해 두 벡터 사이의 거리를 계산할 수 있다.
다른 노름을 소개하는 이유
노름의 종류에 따라 기하학적 성질이 달라진다. 머신러닝에서는 각 성질들이 필요할 때가 있으므로 둘 다 사용한다.
내적이란?
- 정사영된 벡터의 길이와 관련 있다.
- 내적은 정사영으 ㅣ길이를 **벡터 y의 길이 ∣∣y∣∣만큼 조정한 값이다.
2강: 행렬
행렬이란?
- 행렬은 벡터를 원소로 가지는 2차원 배열이다.
- 행렬은 행(row)과 열(column)이라는 인덱스(index)를 가진다.
- 행렬의 특정 행(열)을 고정하면 행(열)벡터라 부른다.
- 벡터가 공갆에서 한 점을 의미한다면 행렬은 여러 점들을 나타낸다.
행렬의 연산
- 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있다.
- 성분곱과 스칼라곱은 벡터와 차이가 없다.
- 행렬 곱셈은 i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다.
행렬의 내적
넘파이의 np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다.
행렬의 이해
- 행렬은 **벡터공간에서 사용되는 연산자(operator)로 이해한다.
- 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있다.
역행렬
- 행과 열 숫자가 같고 행렬식(determinant)이 0이 아닌 경우 역행렬 존재
- 역행렬을 계산할 수 없다면 유사역행렬 또는 무어-펜로즈 역행렬을 이용한다.
-> np.linalg.pinv를 활용하여 연립방정식 풀기, 선형회귀분석 가능
3강: 경사하강법 1
미분이란?
- 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구로 최적화에서 제일 많이 사용하는 기법이다.
- 미분은 함수 f의 주어진 점(x,f(x))에서의 접선의 기울기를 구한다.
미분의 사용
- 한 점에서 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가하는지/감소하는지 알 수 있다.
- 미분값을 더하면 경사상승법(gradient ascent)이라 하며 함수의 극대값의 위치를 구할 때 사용한다.
- 미분값을 빼면 경사하강법(gradient descent)이라 하며 함수의 극소값의 위치를 구할 때 사용한다.
경사하강법: 알고리즘
var = init
grad = gradient(var)
while(abs(grad) > eps):
var = var - lr * grad
grad = gradient(var)
변수가 벡터라면?
- 벡터가 입력인 다변수 함수의 경우 편미분을 사용한다.
- 각 변수 별로 편미분을 계산한 그레디언트 벡터를 이용하여 경사하강/경사상승법에 사용할 수 있다.
4강: 경사하강법 2
경사하강법으로 선형회귀 계수 구하기
∇β∣∣y−Xβ∣∣2=(δβ1∣∣y−Xβ∣∣2,…,δβd∣∣y−Xβ∣∣2)
= δβk∣∣y−Xβ∣∣2=δβk{n1∑i=1n(yi−∑j=1dXijβj)2}1/2
= −n∣∣y−Xβ∣∣2XkT(y−Xβ)
경사하강법 기반 선형회귀 알고리즘
for t in range(T):
error = y - X @ beta
grad = - transpose(X) @ error
beta = beta - lr * grad
경사하강법은 만능인가?
- 이론적으로 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장되어 있다.
- 하지만 비선형회귀 문제의 경우 목적식이 볼록하지 않을 수 있으므로 수렴이 항상 보장되지는 않는다.
확률적 경사하강법
- 모든 데이터를 사용해서 업데이트하는 대신 데이터 한개 또는 일부 활용하여 업데이트한다.
- 볼록이 아닌(non-convex) 목적식은 SGD를 통해 최적화할 수 있다.
- SGD는 데이터의 일부를 가지고 패러미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활용하는데 도움이 된다.
확률적 경사하강법의 원리?
미니배치 연산!
- 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀌게 된다.
- SGD는 볼록이 아닌 목적식에서도 사용 가능하므로 경사하강법보다 머신러닝 학습에 더 효율적이다.
- 따라서 이미지 데이터같은 큰 메모리가 필요할 때 미니배치를 활용하면 Out-of-memory를 피할 수 있다.
3. 피어세션 정리
- 첫날인 만큼 많은 질문이 오고 가지는 않았다.
- 멘토님의 말씀 - 잘될 때는 왜 잘되는지, 안될 때는 왜 안되는지 고민하라.
4. 과제수행 과정
- 아직 파이썬 파트를 듣지는 못했지만, 기존 실력으로 과제2까지 제출완료.
5. 회고
- 잠을 못자서 피곤하다. 패턴을 제대로 돌리자.
- 과제3까지는 다하고 자고 싶었는데, 피곤해서 안되겠다.
- 공부 내용 정리를 어느정도로 하는 게 좋을지 고민해야겠다.
6. 내일 할일
- 파이썬 강의 빠르게 듣기
- AI 5, 6강 듣기
- 강의가 오늘보단 적어서 빨리 듣고 과제하고 파이썬 밀린거 듣자.