본문 바로가기

Backup/cs231n

cs231n 4강 Backpropagation and NN part 1




 이번시간에는 backpropagation과 NN에 대해서 알아보겠습니다.

우리는 f(x)=Wx해서 score 을 구하는법을 알게되었고 

이을 통해서 softmax , svm을 통해서 loss을 구하는 방법

이을 통해서 data loss와 regularization loss을 합쳐서 전체 loss을 구하는 방법에 대해서 알아보아씀


이을 통해서 알고자했던건 w가 바뀜에 따랑서 loss가 얼마큼 변하는지 파악해 보자는 것이였습니다,

즉   dL/dw 을 구해보려했음

optimization 은 모라 했죠?

L을 최소화하는 즉, L을 최소화 하는 w을 찾아나가는 과정이다

이런걸 parameter update라 하고 loss가 최소화 되야지만 비로서 좋은 prediction이 가능하다 


gradient을 구하는방법은 Numerical , analytic방법이 있음

실제로는 analytic을 사용

시작할때 numerical 방법을 통해 check 함


 실제로 우리는 score을 w와 x을 곱해 구하고 s을 통해서 data loss을 얻고 이것을 regulation loss와 더해서

하나의 total loss을 구해줌

이런 과정을 computational graph로 표현

그런데 일반적으로 굉장히 복잡한 computational graph을 우리는 가지고있음

이런 복잡한 계산을 한꺼번에 한다는건 사실상 불가능함.


이게 alexnet인데 상단엔 image 중간엔 weight가 곱해져서 밑에는 loss가 나오는 구조인데

이것만 해도 상당한 연산을 요함.




이건 딥마인드에서 만든 구조인데

어마무시한 구조을 가지고있고

나중에 배울 rnn을 보면 이런걸 여러번 반복하게됨.



그래서 예을 들어서 하나하나의 모듈별로 학습해나가는 방법을 보겠습니다.
f는 (x+y)*z로 구성된 함수로 이루어져있고
x y z 에 -2 5 -4을 넣어보겠습니다.

그랬을경우 오른쪽 그림처럼 하나의 그래프로 표현할수있는데 이 수식이 계산되는 흐름을 forwardpass된다라고 하곘습니다.
여기서 우리가 하고싶은게 input이 마지막단에 얼마큼의 영향을 미치는지, 즉 gradient을 구하고 싶은것이다.
우리는 이를 위해서 중간 매계변수인 q을 도입하겠습니다.
q는 x+y가 되겠고 간단한 미분을 통해 dq/dx는 1, d1/dy는 1이 되겠습니다.
f는 qz이고  미분은  df/dq=z , df/dz=q

우리가 원하는것은 input값에 대한 마지막단의 영향력이니까 저 밑에껄 원함
이를 위해서 우리는 backward pass을 해야됨 



그래서 오른쪽 끝에서 시작해서 df/df을 구해보겠음

저건 identy function이여서 1임

녹색: 실제값

빨강 : gradient값








저기 저 빨강은 의 의미는

z라는 값을 h만큼 늘리면 f의 값은 3배만큼 늘어난다라는 것을 의미함

즉 영향력을 의미함 


df/dx는 왼쪽 식에 구해논 식에서 쓸수있는게 없다

그런데 chain을 통해 계산할수있다.

이 의미에 대해서 말하면

x가 h만큼 증가하면 q도 h만큼 증가


또 알아야될께 이 chain룰에서 dq/dy같은건 구하려는 df/dx의 직접적인 gradient가 되기때문에 local gradient라 부름

df/dq는 global gradient라 한다.











그래서 우리가 간단한 예로 gradient을 구해봤는데 여기서 이 함수을 아주 간단한 LAYER라고  생각하시면 됨.

local은 forward global은 backward시에 구함









시그모이드 미분식은 특이함


각 게이트의 특징








4096*4096의 jacobian matrix을 가지고 있을거임





이젠 뉴럴네트워크

기존에는 그냥 Wx가 끝인 원레이어의 리니어 레그래션인데

지금은 activation함수가 더해져서 2레이어 뉴럴네트워크가 됨.


이전에는 다양한 방향,색,모양들을 하나의 형태로 merge시켰음.

그이유는 각각의 class는 하나의 classifier만이 있기떄문에


그래서 이전에는 자동차을 구분하는 class가 잇엇는데 노란색의 자동차가 있었지만

빨간색만을 자동차로 인식하는 classifier하나만 있었다.


data driven approach에서
non-parametric approach: Nearest neighbor = 하나의 class에 하나의 clissifier만 존재함

parametric approach: 하나의 class에 대해서 여러개의 clissifer가 존재함.



실제로 인공신경망을 우리의 실제의 뉴런을 비교해서 하는것을 조심해야됨.

뉴런은 더 복잡한 일을 함


전통적으로 sigmoid을 많이 사용함,

또 tanh도 같이 많이 씀

2012년에 혜성처럼 등장한건 relu

지금 가장 default을 사용하는게 relu

개선사항이 많아서 leaky relu이런것도 씀



신경망의 구조는 다음과 같다.

왼쪽은 2layer,

층은 3개이지만 weight을 가지고 있는 레이어만 계층으로 취급함

input은 제외해서 카운트

오른쪽은 3 lelel layer이다 라고 함.

모든 노드들의 weight가 연결되어있는걸 FC layer라고함.




모든걸 연결하는걸 



'Backup > cs231n' 카테고리의 다른 글

cs231n 6강 Training NN part 2  (0) 2017.12.05
cs231n 5강 Training NN part 1  (0) 2017.12.05
cs231n 7강 CNN  (0) 2017.11.02
cs231n 3강 Loss fn, optimization  (1) 2017.10.18
cs231n 2강 Image classification pipeline  (0) 2017.10.16