2020년 11월 25일 수요일

ML memo - Neural Network

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 임. 

특정 값을 구하기 위해 필요없는 노드를 다 지우고 생각하면 이해하기 편함.



댓글 없음:

댓글 쓰기

List