본문 바로가기

ML & DL

[Deep learning] 6장 Deep Feedforward Network

Deep Learning, Ian Goodfellow(www.deeplearningbook.org/) 공부하고 정리한 글입니다. 

 


Feedforward network

전형적인 딥러닝 모델, 특정 함수 f*를 잘 표현하는 것이 목표, 모델 output이 다시 모델로 연결되는 feedback connection이 없음

Training : 네트워크 $f(x;\theta)$가 f*(x)에 가까워지게 함수의 모수($\theta $)를 찾는 과정

노드의 affine 결합은 특정 공간의 hyperplane을 만든다, 따라서 노드가 충분히 많으면 같은 공간에 여러 hyperplane이 생기고 이를 통해 복잡한 함수도 근사할 수 있다.(아래 그림) 이때, ReLU와 같은 비선형 함수를 사용해 더 정확하고 빠르게 근사하는 것이 뉴럴넷의 강점이다. 하지만 이때 생기는 비선형성으로 convexity가 깨질 확률이 매우 높아 global optimum으로 수렴한다는 보장이 없고, 초기값에 민감한 stochastic 한 최적화 방법을 사용해야 한다. 

여러 hyperplane으로 sin 함수 1차 근사

 

Activation function

비선형변환을 위한 함수, element-wise 하게 연산되며 ReLU가 대표적

ReLU

sigmoid와 tanh는 입력값을 특정 범위로 mapping 하는 장점이 있지만 0에서 멀어질수록 gradient가 0에 saturate 해 gradient vanishing 문제가 있다. ReLU는 양수부 gradient를 1로 이 문제를 해결함과 동시에 piecewise linear 하기 때문에 gradient 기반 학습 방법(gradient descent)이 선형 모델에서 잘 동작하는 장점을 보존한다.(선형 모델은 convexity를 유지하므로) ReLU가 0에서 미분 불가능 인 점은, 뉴럴넷에서 일반적으로 cost가 global minima 되기 불가능하므로 cost함수의 극소점의 gradient가 정의되지 않아도 괜찮다. 컴퓨터는 gradient를 0, 1로 mapping 한다.

질문) ReLU와 cost 함수의 정의역이 같아야 위 문장이 타당해 보이는데?

답) ReLU의 양수 영역은 identity이므로 정의역을 공유한다고 볼 수 있다.

RNN이나 확률 모델에서는 ReLU와 같은 piecewise activation function을 쓰지 않고 sigmoid나 tanh를 사용한다.

왜? -> rnn은 하나의 layer를 반복하는데, ReLU가 중복되면 값이 계속 커지는 문제가 생기기 때문. 오토인코더는 복원해야 하므로 역함수가 정의되는 sigmoid가 적합해보인다, 확률모델은 아웃풋이 0~1사이 확률인게 타당하므로 sigmoid

2013년에 Ian Goodfellow가 발표한 activation 함수 maxout은 다음과 같다.

$g(z)_i = \max  z_{ij} , \ j \in [1,n]$ 

n개의 같은 space 노드 중 가장 큰 값을 하나 취한다. CNN의 max pooling과 유사해 보인다. 노드가 3개인 경우 $x^2$을 근사하는 예를 들어보면, 한 노드는 하나의 hyperplane을 만들게 되므로 다음과 같이 표현할 수 있다.

이렇게 affine 함수가 갖는 선형 표현을 비선형으로 바꿔 $x^2$과 같은 비선형 함수를 표현하는데 유리하다. 이때 n값이 커질수록 오차가 줄어들며, Maxout은 universal approximator라고 할 수 있다. 따라서 Maxout은 n값과 해당 공간의 노드 값들에 의해 계속 변화하므로, 활성화 함수 자체를 배우는 수단이라고 할 수 있다. 또한 Maxout은 dropout을 효과를 극대화해 모델 일반화에 기여한다. 

 

Cost function

MLE를 이용, negative log likelihood를 cost function로 사용한다. 이는 학습 데이터와 모델 예측값 사이의 cross entropy와 동치다. 모델의 분포 $P(y|x;\theta)$가 결정되면 이를 통해 cost function $-logP(y|x:\theta)$을 자동으로 결정할 수 있게 된다. Log likelihood의 log는 지수족 분포들의 exp 텀을 상쇄해주는 역할을 한다. Negative log-likelihood estimator는 가장 active 하게 틀린 예측에 강한 페널티를 준다. 적절한 regularization을 통해 모델이 unlimited reward를 갖지 못하게 해야 한다.

-> output 분포가정에 따른 cost function과 cross entropy/ MLE 관계

 

Universal approximation theorem

Universal approximation 정리에 따르면 임의의 activation 함수를 사용한 히든이 하나 이상 존재하는 네트워크는 모든 함수를 표현할 수 있다. 하지만 train 알고리즘이 그 함수를 학습할 수 있다는 보장은 없다. 즉 임의의 함수에 대한 최적의 파라미터를 갖는 네트워크는 존재하지만 이 파라미터를 찾는 것(training)은 다른 문제인 것이다. Train 과정은 일반화된 툴이 있지만, 각 task, data 마다 목표하는 함수는 달라지고 overfitting 등의 문제로 모든 데이터 셋과 task에서 신경망의 최적 파라미터를 보장하는 것은 불가능하다.