Lec4) Introduction to Neural Networks

Temmie Chang (포인세티아)·2022년 1월 24일
0

Backpropagation / Neural Networks
https://jaejunyoo.blogspot.com/2017/01/backpropagation.html
classifier (분류er)

f(x) = Wx + b -> score vector

손실함수 = total loss term

가장적은 loss를 가지는 W를 찾고 싶다.

∇W (gradient W)를 구했음

Numerical gradient : slow :(, approximate :(, easy ro write :)

h를 정해서 구하는 방식

Analytic gradient : fast :), exact :), error-prone :(

도함수를 구해서 계산하는 방식 (원본함수를 정확히 알기 힘듬)

복잠한 함수를 통해 Analytic gradient를 구하자

computational graph를 사용 -> Backpropagation 사용 가능

모든 변수에 대해 chain rule을 사용

CNN -> 입력 이미지 -> 많은 레이어 -> loss funtion
엄청나게 복잡한 함수를 가질것으로 예상됨

예시) f(x,y,z) = (x+y)z

1) computational graph 사용

q = x+y -> 편미분 사용
f= qz -> 편미분 사용

체인룰을 사용해 뒤에서부터 계산함.

웅성웅성

각노드는 입력을 받고 출력을 냅
입력에 대한 출력의 기울기를 계산

Loss L 은 이미 계산되어있으므로, 이로부터 체인룰을 통해서
입력방향으로 돌아갈 수 있다.

  • 게이트 = 두 값을 나눠줌
    max 게이트 = 큰쪽으로 모든 값을 전달

gradient를 구한것으로 가중치를 어떻게 변경하는가?

각 여러가지 변수들의 편미분 값들을 거함
야코비안 행렬(행렬식 안에 편미분만 들어있는 다변수 벡터 도함수 행렬)

좌표계 변환 등에 사용함
으로 나타내면, 모든 변수에 대한 편미분 팩터를 곱할 수 있다.
각 변수들의 대각선만 의미있는 대각행렬의 형태로 나타남

https://velog.io/@opcho/%ED%95%9C-%EB%AC%B8%EC%9E%A5%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A6%AC%ED%95%98%EB%8A%94-computer-vision-3

Caffe : 딥러닝 프레임 워크
Layer : computational node 들이 정리되어 있음
forward pass -> 함수를 미분
backward pass -> 미분한 함수들을 통해 값을 역산

Neural Network

f = Wx (linear 함수) -> 첫번째 (선형) 레이어
f = W_2max (0, W_1x) 두번째 (비선형) 레이어
2 layer Neural Network

ex) f = W_3max (0, W_2max(0, W1x)) 세번째 (비선형) 레이어
3 layer 추가 (의미는 없음, 깊은 신경망!)

보통 입력층은 세지않고 출력층과 히든레이어만 세므로
3레이어라고 하면 2개의 히든레이어를 가진다고 할 수 있음

여러 계층을 통해 복잡한 네트워크를 만들 수 있음.
(선형 네트워크라 행렬 곱셈으로 연결되어 있음)

뉴런 -> 서로 연결된 많은 뉴런을 가지며

수상돌기로부터 신호를 받아서 세포체에서 정보를 종합.
이후 축색을 통해 다른 뉴런에 전달하는 구조를 가짐

이것은 노드가 x0~ x1~ x2의 신호들을 받아서 sum(w_ix_i+b) 해서
다음 노드로 보내는 것과 유사함

뉴런은 활성화 / 비활성화 두가지 상태를 가지기 때문에
자극이 음수일때는 항상 0, 양수일때는 선형을 나타내는
ReLU 함수를 사용한다.

그렇지만 생물학적 뉴런은 더 복잡!
단일 가중치가 아니라 복잠한 비선형 함수를 가짐
ratecode, rate fire

0개의 댓글