1. 강의 내용
1강. 벡터
벡터 : 숫자를 원소로 가지는 리스트 또는 배열
공간에서의 한 점, 원점으로부터 상대적 위치
벡터의 노름 : 원점에서부터의 거리
L1- 노름 : 각 성분의 변화량의 절대값의 합
L2 - 노름 : 피타고라스 정리를 이용해 유클리드 거리 계산
노름을 이용하여 두 벡터 사이의 거리 계산 (벡터의 뺄셈)
|| y - x || = || x- y ||
제 2 코사인 법칙 이용하여 두 벡터 사이의 각도 계산
내적
2강. 행렬
행렬 : 벡터를 원소로 가지는 2차원 배열
공간에서 여러점 나타냄
행렬의 행벡터
: i 번째 데이터
같은 모양을 가지면 덧셈, 뺄셈 계산 가능
행렬 곱셈 : i 번째 행벡터와 j 번째 열벡터 사이의 내적을 성분으로 가지는 행렬
np.inner : i번째 행벡터와 j 번째 행벡터 사이의 내적
-> Y 전치행렬로 구해야 수학에서의 내적
행렬은 벡터공간에서 사용되는 연산자
행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있음
역행렬 : A의 연산을 거꾸로 되돌리는 행렬
행과 열의 숫자가 같고 행렬식이 0이 아닌 경우에만 계산 가능
np.linalg.inv() 으로 계산 가능
역행렬을 계산할 수 없는 경우 -> 유사역행렬 ( 무어펜로즈 역행렬 )
n>=m 인 경우
n<=m 인 경우
3강. 경사하강법
미분 : 변수의 움직임에 따른 함수 값의 변화를 측정하기 위한 도구
최적화에서 많이 사용하는 기법
import sympy as symm
from sympy.abc import x
# 다항식 x로 미분
sym.diff(sym.poly(x**2 + 2*x + 3),x)
# Poly(2*x + 2, x, domain = 'ZZ')
미분값 < 0 : 접선의 기울기 음수 (감소)
미분값 > 0 : 접선의 기울기 양수 (증가)
경사상승법 (gradient ascent)
미분값을 더하기
극대값의 위치를 구할 때 사용
경사하강법 (gradient descent)
미분값을 빼기
극소값의 위치를 구할 때 사용
목적함수 최소화할 때 사용
경사상승/ 경사하강법은 극값에 도달하면 움직임을 멈춘다 (극값에서의 접선의 기울기 = 0)
( 컴퓨터로 계산할 때 미분이 정확히 0이 되는 것은 불가능 하므로 epsilon 값보다 작을 때 종료하는 조건 필요)
gradient : 미분을 계산하는 함수
init : 시작점
lr : 학습률
eps : 알고리즘 종료조건
var = init
grad = gradient(var) # var에서의 미분값 (var에서의 접선의 기울기)
while (abs(grad)) > eps:
var = var - lr * grad # 극소값쪽으로 점 이동
grad = gradient(var) # 이동한 var에서의 접선의 기울기 반복
벡터가 입력인 다변수 함수의 경우 편미분 사용
improt sympy as sym
from sympy.abs import x,y
# x에 대해 편미분
sym.diff(sym.poly(x**2 + 2*x*y + 3) + sym.cos(x + 2*y), x))
# 2*x + 2*y - sin(x+2*y)
각 변수 별로 편미분을 계산한 그레디언트 벡터 (gradient)를 이용하여 경사하강/ 경사상승법에 사용
그레디언트 벡터
∇f(x,y)는 각 점에서 가장 빨리 증가하는 방향
- ∇f (=∇(-f)) 는 각 점에서 가장 빨리 감소하는 방향
gradient : 그레디언트 벡터를 계산하는 함수
init : 시작점
lr : 학습률
eps : 알고리즘 종료조건
var = init
grad = gradient(var) # var에서의 미분값 (var에서의 접선의 기울기)
while (norm(grad)) > eps: # 벡터는 절대값 대신 노름 계산하여 종료조건 설정
var = var - lr * grad # 극소값쪽으로 점 이동
grad = gradient(var) # 이동한 var에서의 접선의 기울기 반복
4강. 경사하강법 (심화)
경사 하강법으로 선형회귀 계수 구하기
경사하강법 알고리즘
# norm = L2 노름을 계산하는 함수
# lr : 학습률
# T : 학습횟수
# 경사하강법 알고리즘에서는 학습률과 학습횟수가 중요한 hyperparameter
for t in range(T):
error = y - X @ beta
grad = - transpose(X) @ error
beta = beta - lr * grad
경사하강법은 미분가능하고 볼록한 함수에 대해서 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장
- 선형회귀의 경우 목적식은 회귀 계수 베타에 대해 볼록함수이기 떄문에 알고리즘을 충분히 돌리면 수렴 보장
- 비선형회귀 문제의 경우 목적식이 볼록하지 않을 수 있으므로 수렴이 항상 보장되지는 않음
확률적 경사하강법 ( stochastic gradient descent )
모든 데이터를 사용해서 업데이트하는 경사하강법과 달리 데이터 한개 또는 일부 활용하여 업데이트 ( 미니배치 연산 )
볼록이 아닌 목적식은 SGD 통해 최적화 가능
- 경사하강법보다 머신러닝 학습에 더 효율적
미니배치 연산
SGD는 미니 배치를 가지고 그레디언트 벡터 계산
미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜
2. Peer Session
- AI Math ~10강
- 필수과제 5번 논의
- 선택과제 1번 논의
3. 마스터 클래스
AI & MATH - 임성빈 교수님
1. 용어나 정의 외우기
2. 예제 찾아보기
선형대수/확률론/통계학 + 알고리즘,최적화
Dive into Deep Learning - Appendix : mathematics for deep learning
18. Appendix: Mathematics for Deep Learning — Dive into Deep Learning 0.17.0 documentation
d2l.ai
추천시스템 - Dive into Deep Learning 16장
16. Recommender Systems — Dive into Deep Learning 0.17.0 documentation
d2l.ai
Multi-Armed Bandit
'Boostcamp AI Tech > [week 1-5] LEVEL 1' 카테고리의 다른 글
[Week 2 - Day1] Deep Learning Basic (0) | 2021.08.09 |
---|---|
[Week 1 - Day 5] AI Math 5-10 확률론, 통계학, CNN, RNN (0) | 2021.08.06 |
[Week 1 - Day 3] Python 6,7 (Numpy, Pandas) (0) | 2021.08.05 |
[Week 1 - Day 2] Python 3,4,5 (0) | 2021.08.03 |
[Week 1 - Day 1] python 1,2 (0) | 2021.08.02 |