Search
Duplicate

시각적 이해를 위한 머신러닝/ Neural Networks & Backpropagation

Linear model, softmax loss, gradient descent 까지 봤음
Linear 모델은 근본적으로 한계가 있음. 오른쪽 아래처럼 non-linear 한 경우에는 처리가 안
Linear로 해결하기 위해 애초에 feature를 linear하게 변형한 후에 처리하는 방법을 시도 해 봄.
그러나 이런 경우는 많지 않음.
많은 경우 차원을 높이면 linear로 해결 되는 경우가 많아서 그렇게 하는 경우도 있음.
이미지에서 feature를 뽑기 위한 여러 방법
feature 기반을 발전 시켜서 이미지에서 feature를 뽑은 후에 그 feature를 label에 대응시킴.
이게 pre-extracted feature이고 deep learning 이전에 쓰던 방
deep learning 시대로 오면서 아예 feature를 뽑는 것 자체도 학습 시킴. 이게 바로 end-to-end 방식
하지만 이게 항상 최선은 아님.
엄청난 데이터와 계산량이 필요하기 때문에 다소 무식한 방법임.
이미 알려진 domain knowledge 가 있다면 그것을 기계한테 다시 배우도록 학습 시킬 필요가 없음.
neural network는 인간의 뉴런을 모사한 방법
뉴런을 모사해서 perceptron을 만듦. 뉴럴 네트워크는 perceptron을 모아 놓은 것.
perceptron을 이용하면 논리 연산이 가능함.
이전 노드가 켜지고 꺼지고를 이용해서 and, or 연산을 할 수 있음.
not, and, or만 있으면 모든 연산이 가능하다. xor도 not, and, or로 만들 수 있음.
그런데 perceptron을 이용해서 XOR 연산이 안 됐음. 이것 때문에 1차 AI 겨울이 옴
이걸 해결한 사람이 제프리 힌튼. perceptron을 2층으로 쌓으면 XOR 연산도 가능함을 증명 함.
2층을 쌓으면 어떤 조건 하에 모든 식이 가능하고, 3층을 쌓으면 아예 조건도 필요 없이 모든 식이 가능하다는 것을 제프리 힌튼이 수학적으로 증명 함.
퍼셉트론 구조는 softmax classifier와 동일하다.
single layer의 뉴럴 네트워크는 위와 같이 표현 가능
multi layer의 뉴럴 네트워크는 위와 같이 표현 가능
행렬식으로만 보면 single layer나 multi layer는 동일하게 볼 수 있음.
single layer와 multi layer의 차이는 activation function의 차이
많이 쓰이는 activation functions
뉴럴 넷 예시
W는 gradient descent로 구할 수 있다.
Loss를 W2, W1으로 편미분하는 예시
코드 예시
문제는 이걸 손으로 풀고 있을 수 없음.
연산을 그래프로 표현.
앞으로 가는 계산이 forward pass이고, 거꾸로 오는 것이 backpropagation
forward 예시
backpropagation 예시
backpropagation은 upstream gradient에 local gradient를 곱하면 downstream gradient가 된다. 이게 chain rule.
이런 식으로 예측 결과에서부터 입력 layer까지 거꾸로 타고 가는 것
logistic regression에 대한 forward pass, backpropagation 예
gradient 계산의 패턴
이런 패턴을 이용하면 복잡한 계산을 하지 않고 최적화를 할 수 있음.
물론 현재는 tensorflow나 pytorch가 그것을 해줌.
앞선 예제의 코드 예시
앞선 예시는 scalar를 이용한 것이었는데, 대부분의 경우 vector나 matrix를 이용하게 됨. 하지만 계산을 여러 번 하는 것일 뿐 그 방법은 동일하다.
예시
행렬도 계산량이 많을 뿐 결국 동일하다.