선형모델의 한계
- 선형성linearity는 단조성monotonicity를 내포하고 있다. 독립변수 x=[x1,x2,⋯,xn], 종속변수 y가 있을 때 특정 독립변수 xj 가 증가하면, 종속변수 y 는 증가하거나 감소하는 방향 둘중 하나만 갖는다는 것이다.
- 예를 들어
- 건강한 정도를 신체온도의 함수로 표현한다고 하자
- 사람의 몸 온도가 37도를 넘어가면 위험할 것이지만, 반대로 신체 온도가 평균보다 낮아도 또 위험한 상태이다
- 예를 들어 2
- 고양이와 강아지의 이미지를 분류한다고 하자
- 특정 위치의 픽셀 세기intensity와 강아지로 분류될 가능성이 비례한다는 추론은 합리적인가?
- 이런 접근방식으로 이미지를 분류하는 시도는 실패할 수 밖에 없다
은닉층의 도입
- 입력층 레이어와 출력층 레이어 사이에 또다른 레이어를 추가하는 방식을 MLP: Multilayer Perceptron이라 부른다
- 이떄 레이어와 레이어 사이는 모든 유닛들끼리 빠짐없이 이어진 상태 fully-connected-layer, 즉 l번째 레이어의 임의의 유닛에 대하여 l−1 레이어 유닛들이 모두 연결된 상태여야 한다
- layer의 갯수는 input을 제외하고 hidden layer+ output layer(1)개로 측정한다. 이는 네트워크의 계산에 필요한 연산 횟수와 같다. 아래의 그림의 레이어 수는 2다.
-
선형성에서 비선형성으로
- 만약 우리가 미니배치값을 X∈Rn×d , d 차원의 데이터포인트가 n 개로 쌓여진 상태로 표현한다면, 은닉층의 차원은 H∈Rn×h 로 표현할 수 있다. 이때 h 는 은닉층의 출력값이다
- 은닉층와 출력층가 fully-connected 되었기 때문에, 각각의 가중치와 편향에 대하여 은닉층는 W(1)∈Rd×h , b(1)∈R1×h , 출력층는 W(2)×Rh×q , b(2)∈R1×q 라고 하자.
- 이 경우 아웃풋레이어 출력값 O∈Rn×q 에 대하여 다음과 같이 계산될 수 있다
- H=XW(1)+b(1)
- O=HW(2)+b(2)
- 이경우
- O=(XW(1)+b(1))W(2)+b(2) 로 O=XW+b 로 둔다면
- W=W(1)W(2) , b=b(1)W(2)+b(2) 로 한 행렬로 표현가능함을 알 수 있다
- 즉 선형성이 지속된다면, 아무리 많은 은닉층를 쌓아도 결국 하나의 행렬로 표현될 수 있기 때문에 은닉층를 쌓는 의미가 존재하지 않는것이다
- 그렇기 때문에 레이어의 출력값을 다른 레이어에게 전달해주기전 활성화함수란 element-wise의 비선형함수를 활용하여 비선형성을 추가한다. 그 결과
- H=σ(XW(1)+b(1))
- O=HW(2)+b(2)
- 가 된다
보편근사정리 Universal Approximation Theorem
- 하나 이상의 은닉층를 갖고 있는 MLP 네트워크는 충분한 노드와 적절한 가중치가 주어진다면 임의의 함수에 대하여 근사할 수 있다
MLP 제작
MLPScratch 클래스
__init__
- self.W1, self.b1, self.W2, self.b2
로 각각 은닉층와 출력 레이어에 대한 가중치,편향값을 저장한다
relu
- torch.zeros_like
입력 텐서와 동일한 크기이고, 성분은 1로 구성된 텐서를 반환하는 함수
- torch.max
를 통하여 입력값X
과 torch.zero_like(X)
를 element-wise로 비교하여 계산한다.
forward
- 입력값과 가중치값,편향값을 활용하여 은닉층 결과값, 출력 레이어의 결과값을 계산한다
Forward& Backward Propagation
순방향 전파 Forwad propagation
입력층으로부터 출력층까지 중간변수를 신경망 과정마다 계산하고 저장하는 과정이다.
- 처음 은닉층 의 변수 h는 다음과 같이 계산되고
- z=W(1)x
- h=ϕ(z)
- 은닉층에서 출력층의 변수 o 는 다음과 같이 계산된다
- o=W(2)h
- Loss function 에 l2정규화 항까지 모두 고려하여 계산하자
- s=2λ(∥W(1)∥F2+∥W(2)∥F2)
- where ∥W∥F2 is Frobenius norm of matrixx where ∥W∥F2=trace(W∗W)
- 그러므로 model의 Loss function 함수는
- J=L+s
역전파 Backpropagation
- 역전파는 신경망의 그레디언트를 계산하여 파라미터를 갱신하는 과정이다
- ref . 텐서 연쇄법칙
- 함수 Y=f(X) 와 Z=g(Y) 가 있다고 하자.
- ∂X∂Z=prod(∂Y∂Z,∂X∂Y) 가 된다
- 증명.
- ∂x∂y≡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂y1∂x1∂y2⋯∂x1∂ym∂x2∂y1∂x2∂y2∂x2∂ym⋯⋯⋯∂xn∂y1∂xn∂y2∂xn∂ym⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
- [∂x∂y]ij=∂xj∂yi
- [∂X∂Z]ik=[∂Y∂Z]ij[∂X∂Y]jk=∂yj∂zi∂xk∂yj=∂xk∂zi
이 케이스의 경우
은닉층
- z=W(1)x , where W(1)∈Rh×d : 은닉층의 가중치 행렬
- h=ϕ(z)
출력층
- o=W(2)h
- ∂W(2)∂J=∂L∂J∂o∂L∂W(2)∂o+∂s∂J∂W(2)∂s
- ∂L∂J=1,∂s∂J=1
- ∂W(2)∂o=∂W(2)∂(W(2)h)=hT
- ∂W(2)∂(2λ)⋅trace((W(2))∗W(2))
- trace(W∗W)=(W∗W)ii=(W∗)ijWji
- ∂Wkl∂((W∗)ijWji)=∂Wkl∂(WjiWji)= 2Wkl,k,larefixed
- 그러므로 ∂W(2)∂J=∂o∂JhT+λ⋅W(2)
- ∂W(1)∂J=∂L∂J∂o∂L∂h∂o∂z∂h∂W(1)∂z+∂s∂J∂W(1)∂s
- ∂L∂J=1,∂s∂J=1
- ∂h∂o=W(2)
- ∂z∂h=∂z∂ϕ(z)=ϕ′(z) : ϕ is elementwise
- (W(2))T∂o∂J⊙ϕ′(z)xT+λ(W(1))T