Neural Network
Perceptron
1969 Minsky 가 신경망을 베껴서 만든 선형모델.
input 에 가중치가 곱해져 더해짐
=> activation function - ex) sigmoid, threshold function - 통과
=> loss 를 구해 현재 모델의 상황 파악 - ex) log loss ... -
=> delta rule 을 이용한 gradient descent 이용해 학습
threshold function 을 여기선 많이 쓰는데 wx > θ 면 1, 아니면 0 으로 판단함.
gradient descent 는 w와 θ 가 변경대상.
Multi-layered Perceptron(Neural Network, NN)
1986 Hinton 가 Backpropagation 을 이용한 Gradient descent 로 신경망이 층이 생기게 됨.
이는 input 으로부터 feature 를 뽑아낸다는 것과 같고 비정형데이터를 정형데이터로 만든다는 것과 같은말.
그래서 이미지, 소리 같은 비정형데이터가 이 모델로서 가능해짐.
hidden layer 가 1개면 linear 모델에서 불가능했던 1 convex boundary(ex XOR) 가능.
hidden layer 가 2개 이상이면 arbitrary decision boundary 를 만들 수 있음.
이때 hidden layer 는 전 layer 의 조합으로, 마치 포토샵처럼 뒤의 layer 는 복잡한 패턴이 됨.
간단한 layer 부터 조합이 되어서 점차 복잡한 패턴이 되는 것임.
https://playground.tensorflow.org/
Activation function 은 Sigmoid 가 많이 쓰였는데, Relu 가 요즘엔 제일 많이 쓰임.
Input 은 one hot encoding ( orthonormal coding) 으로 하는게 제일 성능이 좋음.
이유는 feature space 가 매우 넓어져서 간단히 decision boundary 를 그을 수 있기 때문.
하지만 너무 넓어지면 overfitting 의 위험이 큼.
numeric 경우는 따라서, categorization 해서 one-hot 으로 하는게 좋음.
Local Minimum 에 걸릴 가능성이 크고, 새로 추가로 학습시키는게 어려운 단점이 있음.
또한 느리다는 단점도 있는데, momentum 을 이용해 가속시키는 방법 등으로 완화함.
위는 backpropagation 을 hidden layer 1 에 대해서 한 예제.
레이어가 많아지면 예컨데 위의 dx_0/dw_00 가 dx_0/dw_000 이 될 것이다.
이 경우 dx/dw_00 을 구하듯 똑같이 구하면 된다.
w * f(x) * (1 - f(x)) 가 레이어 수만큼 더 붙는다는 것.
이때 w 는 x 를 상위 레이어로 보내는 w 임.
특정 값을 구하기 위해 필요없는 노드를 다 지우고 생각하면 이해하기 편함.