[Week 1- Day 3] 회고
# 역행렬
- 행/열의 수가 같고,
- 행렬식이 0이 아닌 경우만 가능
inverse matrix. A^(-1). 로 표기.
A연산을 거꾸로 되돌린다는 의미.
AA^(-1) = A^(-1)A = I (항등행렬)
import numpy as np
import np.linalg.inv
X @ inv(X) = I
유사역행렬
- 행/열의 수가 달라도 계산가능
무어펜로즈 역행렬. A^+. 로 표기.
행/열의 수가 달라도 계산이 가능하기 때문에, 출력 모양도 행/열이 다를 수 있음. 행이 n, 열이 m인 경우, 다음과 같이 연산함.
n >= m 이면, A^+ = (A^T A)^(-1) A^T
n <= m 이면, A^+ = A^T (A A^T)^(-1)
import numpy as np
import np.linalg.pinv
pinv(Y) @ Y = I
활용 예시 1. 연립방정식의 해 구하기
(풀기 위한 식보다 변수의 수/해의 수가 많은 경우, 유사역행렬로 해결 가능)
a1x1 + a2x2 + ... + anxn = b
a1x1 + a2x2 + ... +anxn = b
...
==> Ax = b
==> x = A^+ b
활용 예시 2. 선형회귀 분석
(변수의 수보다 데이터의 수가 더 많을 경우)
[ -- x1 -- ][ -bi- ] = [ -y1- ]
Xb = y
==> 위 식을 만족하는 b 찾기는 사실상 불가능
==> 가장 유사한 b 찾기는 가능하기 때문에, 그 값을 ^y으로 하여 유사역행렬로 풀이 가능
b = X^+ y
= (X^T X)^(-1) X^T y
이는 실제로 코드로 적용하면, sklearn.linear_model.LinearRegression 과 같은 결과임.
# 미분
sympy : 함수를 symbolic하게 이해하도록 하는 라이브러리
https://docs.sympy.org/latest/index.html
import sympy.diff
from sympy.abc import x, y
ei 벡터 : 주어진 값 xi가 있을 때, xi에만 영향을 미침.
i번째 값만 1이고, 나머지에는 0인 단위 벡터.
특정 x벡터의 i번째 변수에만 계산 적용가능.
그레디언트 벡터
= 각 변수에 대한 편미분 계산 한 벡터.
nabla f = ( dx1 f, dx2 f, ... , dxn f )
주어진 다변수 입력을 가지는 함수의 그레디언트(기울기) 벡터를 표시하는 기호.
f'(x)대신 nabla f를 사용하면,
앞서 사용한 수직선 상에서 update하는 경사하강법( abs(grad)로 종료조건 설정 ) 이 아닌,
일반적인 n차원 공간에서 벡터에 적용되는 경사하강법( Vector라서 norm(grad)로 종료조건 설정 )을 적용함.
3차원 공간 상에서의 화살표 움직임으로 도식화 가능
활용 예시. 선형회귀 문제
일반적인 문제해결을 위해 경사하강법 사용할 수 있으니, 일반성이 있다고 볼 수 있음.
경사하강법에서 주의할 점.
학습률(lr)와 학습횟수가 중요 하이퍼파라미터 --> 잘 조정해야 수렴을 보장.
but, 비선형문제에는 항상 최대점 보장X
## 피어 세션
미션 : 진도 파악, 제너레이터 개인조사
(모더레이터: 피어세션 팀 발표)
아침에는 현재 어느정도 진도를 나갔고, 오늘은 어디까지 할 계획인지 공유.
오후에는 진도나간 정도, 오늘 한 일 정리. 어제 데코레이터 질문 추가로 공유.
5시에 피어세션 발표가 있어서 참석.
조 이름 말하고, 조원 하나하나씩 특징 소개 & 친해지고 싶으면 연락해라. 그라운드 룰 하나씩 말하면서 이유도 말함.
피어세션 마지막에 할 말이 없고, 재미도 없어서 그런지 되게 피로감이 컸음.
다음에는 궁금한 거나 TMI 시간 가지는 거 어떠냐고 물어봐야 겠음.
9시에는 멘토링 시간이 있었음.
일단 서로 자기소개를 하고, 멘토분이 어떻게 취업준비했는지/ 이 과정이 도움되는지/ 노션 꿀팁/ 석사가야하나 등등 알려줌.
- 적극적으로 TMI 시간(코딩 안될때 뭐하나?) 갖으면서, 친해짐.
- 프로젝트 진행하면서 포기하지 않으면 굉장히 값진 시간.
- 나중에 본인 PR하면서, 팀원도 찾고 프로젝트 완성도 해야함.
- 스터디 할 기반을 만들어두는 게 좋음. 등등.