[Deep Learning] Deep Neural Network (3)

2023. 4. 16. 16:18
🧑🏻‍💻용어 정리

Neural Networks
Feed-forward
Backpropagation
Deep Neural Network
regularization
Dropout
1-norm penalty
2-norm penalty
data augmentation
multitask learning
parameter tying
parameter sharing  & sparse connection

 

 

 

 

Deep Neural Network

 

이어서 알아보겠습니다.

 

overfitting을 피하기 위해선 우리가 어떻게 해야할까요?

 

 

아래 그림은 underfitting,  approp fitting, overfitting

 

으로 underfitting은 training error가 높고, approp fitting과 overfitting은 training error가 낮습니다.

 

 그래서, 적당한지 overfit이 됐는지, 이러한 것들이 알아차리기 굉장히 어렵습니다. 

그런데, overfitting은 model의 capacity가 커야지만 발생하겠죠.

 

즉, high capacity model 혹은 complex model.

 

복잡한 model 들에 대해 overfitting이 발생합니다.

 

결국 데이터의 패턴을 알려는 것이 아닌, 데이터를 다 외워버리며 학습해버립니다.

 

 

그런데 우리가 보고자하는 Deep Learning Model은 지금까지 봐온 것 중, capacity가 가장 크다고 할 수 있습니다.

 

Deep Learning의 경우 capacity에 제한이 없습니다.

 

그저 계속해서 쌓는다면 계속해서 올라가죠.

 

 

자 그렇다면 어떻게 overfitting을 방지할 수 있을까요?

 

가장 기본적인 solution은 regularization입니다.

 

Regularization

 

하나씩 살펴보겠습니다.

 

Dropout regularization

 

초기 Deep Learning을 성공으로 이끈 것이 ReLU와 이 Dropout이라고 볼 수 있습니다.

 

이 Dropout은 초기 training 과정에서 weight를 과감하게 꺼버리는 방법입니다.

 

아래와 같이 node에 대해서 disconnection 할 수 있는 경우의 수가 2^4개 입니다.

 

epoch이 지나감에 따라, 제약을 설정하는 것입니다.

 

몇 가지를 disconnection한 뒤, 이 nodes 간의 연결 없이 훈련해봐 ! 와 같은 것입니다.

 

그리고, 이 이후 validation이나 prediction 과정에서는 제약을 풀고 한다면 더 좋은 성능을 기대할 수 있는 것입니다.

 

아래와 같은 masking vector를 도입하여, 더 나은 성능을 기대합니다.

 

 

출처 : https://epynn.net/Dropout.html

 

여러 가지 dropout의 방식이 존재합니다.

 

또는 hidden도 lower layer에서 dropout 비율을 높이는 것이 더 좋다는 것입니다.

 

그런데, 몇 가지를 꺼놓고 학습시키니, 켜져있는 애들에게는 over-estimated된다는 것입니다.

 

그래서 3번째 항목처럼 activation rescaling이 필요한 것입니다.

 

 

Norm regularization (Norm penalty)

 

model의 capacity에 limit를 설정하는 것입니다.

 

그래서 아래와 같은 loss function의 구조를 갖습니다.

 

처음으로 더해지는 것은 기존 loss이고, 거기에 hyperparameter 알파, 그리고 capacity가 곱해진 형태입니다.

 

 

 

 

2-norm penalty

 

위 부분에서 capa 부분만 따온 것입니다.

 

L2 Regularization이라고도 부릅니다.

이것을 Neural Network에 쓸 때, Weight decay라고 부릅니다.

 

Linear regression에서도 비슷한 개념의 ridge regressiong도 존재합니다.

 

 

이러한 MSE 계열은 큰 값을 줄이기 위해 노력합니다.

 

 

1-norm penalty

 

위 부분에서 capa 부분만 따온 것입니다.

 

L1 Regularization이라고도 부릅니다.

 

 

 

linear regression 에서 Lasso regression이 존재합니다. 이것은 곧, inherent variable selection이라고 합니다.

 

위 L2의 경우에는 값이 조금만 차이나도 많은 변화가 있기 때문에 값을 조금이라도 줄이려고 합니다.

 

그런데, 이 L1의 경우, 값을 0으로 보내려는 형태를 띕니다.

 

그렇게 해서 weight를 좀 쓰지 않도록 만듭니다.

 

 

 

결국 L2는 큰 값을 작아지게 만드는 효과 가 있다고 한다면,

 

L1은 sparse하게 disconnection하는 효과가 있습니다.

 

 

뭐가 더 좋은지 상황에 따라 다르지만, Default로 L2를 많이 사용하긴 합니다.

 

 

 

 

아래와 같이 overfitting된 model을 보면 weight의 개입이 많은 것을 볼 수 있습니다.

 

 

자, 이제 weight에 대해서 제한을 걸어봤습니다.

 

그럼 또 제한을 걸만한 게 있을까요?

 

그렇다면, 이번에는 hidden node에 제한을 걸어봅니다.

 

 

hidden node가 내보내는 값에 L1 norm penalty를 부여합니다.

 

이것을 Representation penalty라고 합니다.

 

 

 

L1 penalty는 그 connection을 끄는 것이라면, 이것은 그것을 마찬가지로 hidden node의 값에 L1 penalty를 건다는 얘기는, 가능하면 hidden node의 activation이 나가는 값을 0으로 두고싶다는 것입니다.

 

Dropout과 비슷하지만,

 

Dropout은 random하게 끄는 것이고 이 L1 penalty는 loss function에 넣어서 끄는 것입니다.

 

 

 

 

 

Data augmentation

 

이것은 data를 증감하는 기법입니다.



원래 Image와 비슷하지만 약간은 그것과 pixel 값이 다른 애들을 만들어 줍니다.

이것들을 가지고 학습 data를 만들어줍니다.

 

아래와 같은 변형을 통해 labeled data를 몇 배로 늘릴 수 있습니다.

 

 

결국 하나의 data point에 너무 집착하지 않고, 전반적인 pattern을 보는 것입니다.

 

이것이 곧 Regularization입니다.

 

 

 

그리고

multitask learning

이 있습니다.

 

같은 domain에 대해서 layer을 공유하다가, task 별로 hidden node와 parameter를 따로 사용합니다.

 



그래서 shared된 부분에서는 Representation한다고 하고, 위에서는 task를 푼다, 즉, Classification 한다고 합니다.

 

이 shared 부분은 그저 그림 인지 정도의 task를 한다고 볼 수 있습니다.

 

 

 

결국, shared 부분에서 각각의 task에 적합한 weight가 학습되는 것이 아니라, 전반적인 domain에 적합한 weight가 학습됩니다.

 

이 또한 결국 regularization의 일종인 것이죠.

 

 

또,

parameter tying

이라는 것도 있습니다.

 

여기서 다른 문제에 대해서,

 

아까는 밑 부분을 sharing 시켰다면, 이번에는 하단의 수식을 얻습니다.

 

즉, Loss func.을 얻는 것입니다.

 

Weight A와 Weight B를 2-Norm 넣는것이니, 서로를 비슷하게 하자는 것입니다.

 

두 개가 서로가 서로를 닮아가게 하는 것입니다.

 

 

그래서 parameter tying으로 쓰며 parameter를 묶는 것입니다.

 

이것은 epoch에 따라 조금씩 달라집니다.

 

 

또,

 

Parameter sharing & sparse connection

이라는 것이 있습니다.

 

이것은 CNN의 주된 컨셉입니다.

 

parameter를 공유하며, weight를 일부 끊어버리는 기법입니다.

 

강제로 full capa를 쓰지 못하도록 합니다.

 

 

 

결국 정리하면,

 

DNN은 Big data와 High capacity network를 사용하며, 이를 통한 overfitting을 빡센 Regularization을 통해 해결해보자는 것입니다.

 

결국 high capacity는 문제의 size 보다 network가 커졌으니, 우리는 그 문제에 맞게 capacity를 줄일 수 있도록 regularization을 하는 것입니다.

 

 

 

 

BELATED ARTICLES

more