본문 바로가기

Machine Learning/DNN

Neural Network (Deep Learning/ MLP)

반응형
Neural Network (Deep Learning)

딥러닝은 특정 분야에 정교하게 적용되는 경우가 많다. 이 장에선 간단하게 분류와 회귀 모두 가능하며, 딥러닝의 출발점인 Multi layer Perceptrons( MLP )를 다룬다.
MLP는 feed-foward Neural Network, 또는 Neural Network으로 불린다.

MLP는 여러 단계를 거쳐 결정을 만들어내는 Linear Model의 일반화된 모습이라고 볼 수 있다.
가중치 합을 만드는 과정이 여러 번 반복되며, 먼저 중간 단계를 구성하는 hidden unit을 계산하고 이를 이용하여 최종 결과를 산출하기 위해 다시 가중치의 합을 계산한다. input이 다음 layer로 가면서 또 다른 input을 만들어 내는 end-to-end 방식

가중치는 input과 hidden layer의 사이 그리고 각 hidden unit과 output 사이마다 있다. 일반적인 Linear model에 비해 상대적으로 많은 weight의 학습이 필요하다.

*사실 다층 NN안에 존재하는 각각의 hidden unit (국소적 output이자 다음 레이어에 대한 국소적 input이다. 중간 단계의 feature와 비슷한 개념)의 구체적인 model 내에서의 의미는 명확하게 알기는 어렵다.
이 때문에 사람을 기준으로 가려진(hidden) unit이라고 말하고, hidden layer상에 존재하는 detail한 부분은 가려져 있다. (일일이 확인할 수 있지만, 일반적으로 기하급수적으로 많은 feature로 인해 알아보기 힘듦)
인간이 정하는 일부 hyper-parameter를 제외하고, 내부적인 의미부여와 같은 행위가 어렵고, model자체의 목적에 부합하지 않는다.
(가령, 사람의 기대수명을 분석할때, 키를 의미하는 feature지정, 성별을 의미하는 feature지정하여 가중치를 임의로 부여하는 행위는 무리가 있음.)
그래서, 일반적으로 사람이 feature의 의미를 구체적으로 특정할 수 없는 문제에 (Computer Vision문제, Sound recognition 문제, Natural Language Processing 등) 많이 사용된다.
결국, 다른 머신러닝 알고리즘에 비해서 적은 정보(초기값 설정 역시 random성에 의존하는 경향이 있음. xavier나 he도 결국엔 조건을 걸어준 random 값의 분포 이기에)로 시작하는 것으로 볼 수 있기 때문에 학습시간이 매우 오래 걸린다고 볼 수 있다.

알고리즘
 단순하게 여러개의 가중치 합을 계산하는 것은 수학적으로 보면 하나의 가중치 합을 계산하는 것 과 같고 이는 Linear model로도 표현이 된다. Neural Network가 Linear Model과 구분되는 핵심적인 특성은 바로 합산후에 그 결과를 non-Linear function에 통과(activation function)시키는 데 있다(ReLu나 sigmoid 또는 tanh함수 등.). 
 이처럼 선형과 비선형을 반복적으로 통과 시켜줌으로써 Linear model에 비해서 신경망 내에 각 weigth에 대한 더욱 복잡한 학습이 가능해지는 것이다.

Hyper-parameter
핵심적인 hyper-parameter는 hidden layer에서의 hidden unit의 수 hidden layer의 수이다.
hidden layer의 수가 증가할수록 대규모 신경망이 생성되고 이로 인해 딥러닝이라는 용어가 사용되게 된 것이다.
딥러닝은 단순하게 설명하면 hidden layer의 수가 많은 Neural Network Model을 의미한다.



Neural Network Tuning

신경망을 통해 만든 결정 경계 (optimization알고리즘의 값 sovler='lbfgs') (hidden unit = 100) (활성화 함수 default는 ReLu)


hidden unit 개수 감소 시킨 모델 (hidden unit = 10)
hidden_layer_sizes=[10]

기존에 학습시킨것에 비해 unit이 적어 Decision Boundary가 매우 날카롭다. (디폴트 activation function은 ReLu) 은닉층이 1개이므로, D-B가 10개의 직선으로 구성된다. 매끄러운 경계를 얻기위해 a-f를 tanh으로 바꾸거나, hidden unit을 증가시킬 수 있다.


hidden layer = 2개 
hidden_layer_sizes=[10, 10]

activationfunction = 'tanh'


Ridge와 Linear Model을 이용한 Classification처럼 L2 penalty를 이용해서 weight을 0에 가깝게 감소하는 regul term 을 이용할 수 있다. 매개변수는 linear model과 마찬가지로 alpha(α)이다. (default 값은 0.0001로 매우 작다)

α에 따른 변화


기본적으로 weight의 초기값은 가중치를 무작위로 설정한다. 그래서 초기값에 따라 학습결과가 다를 수 있다. 신경망이 크고 복잡하면 정확도에 큰 차이가 생기지 않지만, 일반적으로 모델자체는 한정적인 경우가 대부분임.
initialize 값에 따른 학습 변화 (무작위로 다른 초깃값을 줌)


일반 데이터에서 데이터스케일 역시 학습에 큰 영향을 주기 때문에 pre-processing이 학습에 많은 영향을 준다.
일반적으로 SVC와 마찬가지로 신경망도 모든 input들의 평균은 0 분산은 1인 z로 표준화한다.



신경망 자체는 분석이 되지만 매우 까다롭다. 모델의 가중치를 시각적으로 표현해 분석하는 것이 현명한 방법이다.

위 그림은 hidden layer와 input 사이의 학습된 가중치를 나타낸다.
행은 30개의 input feature 열은 100개의 hidden unit을 의미한다.
밝은 값은 양수, 어두운 값은 음수로 모든 hidden unit에서 작은 가중치를 가진 feature는 상대적으로 덜 중요하다고 생각할 수 있다.

hidden layer와 output 사이의 가중치를 시각화하는것은 가능 하긴 하지만 해석에는 매우 어려움이 따른다.



장단점과 parameter

장점
  • 대량의 데이터에 내재된 정보를 잘 잡아냄
  • 매우 복잡한 모델을 만들 수 있음(non-linear layer가 있기에 가능한 것)
  • 충분한 연산 시간과 데이터를 주고 hyper-parameter를 잘 조정하면 뛰어난 성능을 낼 수 있음.

단점
  • 학습이 오래 걸림
  • pre-processing에 민감함
  • SVM처럼 모든 featuer가 같은 의미를 가진 동질의 데이터에서 잘 작동하며, 다른 종류의 feature를 가진 데이터라면, 트리 기반 모델들이 더 잘 작동할 확률이 높음.
  • hyper-parmeter tunning은 매우 어렵고 중요함

Parameter

가장 중요한 hyper-parameter로는  hidden layer의 수와 hidden unit의 수이다. 
  • 각 layer의 unit은 보통 input feature의 수와 비슷하게 설정

모델 복잡도에 도움이 되는 측정치
  • 학습된 가중치(w)의 수
  • 계수의 수
일반적으로 
(input feature * no. first layer units) + (no. first layer units * no. second layer  units ) +...+(no. last layer units * no. classes)
no. classes 는 출력층에서의 유닛 수

방법

  1. 충분히 overfit되어 문제를 해결할 만한 큰 model 생성
  2.  훈련 데이터가 충분히 학습될 수 있다고 생각될 때 신경망 구조를 줄이거나, alpha를 증가시켜 generalization성능 향상

모델 구성

no. h-layers, no. h-units, regulation, activation function를 기본으로 함.

추가적으로 solver(optimizer)를 이용해 학습방식을 control함.
default가 adam이고, 데이터스케일에 민감한 학습방식이여서 일반적으로 Z(평균 0, 분산 1)로 normalization을 수행함
또 다른 방식으로 lbfgs가 있는데 규모가 큰 모델이나 대량의 데이터셋에서는 시간이 오래걸림(제한된 메모리 공간에서 구현하기 용이함)
그외 sgd등 도 있지만, 주로 adam과 lbfgs가 처음 사용하기에는 쉬움



반응형

'Machine Learning > DNN' 카테고리의 다른 글

Exponential Moving Average (EMA)  (0) 2019.01.14