본문 바로가기

AI Study/deeplearning, machinelearning

[DeepLearning] AI 프로그래밍 복습 2

1. Linear Algebra (선형대수학)

1) 스칼라 

숫자이다.

ex. x = np.array(3.0)

 

2) 벡터

숫자 여러개이고, 어떤 특징으로 묶여있다. x ( R^n 이렇게 표현할 수 있다.

ex. x = np.arange(4)

 

3) 메트릭스

2차원 숫자이고 행렬이라고 볼 수 있다. 

ex. A = np.arange(20).reshape(5,4) (순서는 행, 열)

 

메트릭스의 곱 

k를 맞춰주어야한다. 여기서 k는 같은 차원! (교환법칙이 성립하지 않는다. )

 

4) 텐서

3차원 이상의 숫자이다.

ex. x = np.arange(24).reshape(2,3,4)

 

2. Derivative 

함수 = 입력과 출력 

미분은 입력값이 아주 작게 변화헀을 때 출력값이 얼마나 변화하는가에 대한 비율이다. 

 

기초 미분들

 

변수가 여러개일 때

- 편미분을 이용한다. 

y는 스칼라, x는 벡터일 때 어떻게 미분할까? 

n을 선택한다. 

 

편미분의 표현 

3. Gradient

편미분을 모아서 벡터화한 것

-> 함수는 벡터를 스칼라화 하고, y는 x 벡터를 f에 넣은 것. 

입력이 벡터이기 때문에 X를 볼드로 나타내었다. 

 

가장 앞의 기호를 보고 벡터인 것을 알 수있다. 각각 편미분 한 것을 벡터로 합친다. 

4. Chain Rule

y는 최후결과, x는 최초결과이다. 함수가 2개, 이는 연관 관계있다. 

 

Multivariate Chain Rule

 

5.  Minimization of Function Gradient Descent

- 출력값을 최소로 만드는 입력값 찾기

1. 임의의 점 설정

2. 미분값 계산

3. f(x)줄이기 위해 미분값을 빼준다. (learning rate 곱한 후) = x값을 x - lr * df/dx로 업데이트 한다

 

그럼 입력이 스칼라가 아니라 벡터이면? 

이 함수 f(x)를 인공신명망으로 생각하자. 

loss 값을 줄이는 가중치를 찾는다. -> loss에 대한 w의 변화량 (미분값, 벡터값)