딥러닝

[Deep Learning] 신경망 설계

jun1-cs 2025. 9. 1. 11:45

MLP 모델의 구조에서 설계할 수 있는 부분은 많지 않다. loss function, optimizer를 모두 설계했다면 DL 모델 자체의 구조를 변경하는 것만 남았다. 

1. 은닉층의 개수(깊이) - h

2. 각각의 은닉층을 구성하는 노드의 개수(너비) - w

 

3. 아키텍처 설계에 있어서 알아두면 좋은 사실!

-선형 근사 정리(universal approximation theorem) -> 은닉층이 있는 신경망은 모든 보렐 가측함수를 우리가 원하는 정확도로 근사할 수 있다.(보렐 가측함수: R^n의 닫힌 유계 집합에 대한 모든 연속함수)

또한, 임의의 유한차원 이산 공간을 다른 유한차원 이산 공간으로 사상하는 임의의 함수도 근사할 수 있다. -> 증명해보기??

 

-즉, 이론적으로 MLP를 이용하면 어떤 함수든 학습할 수 있다. 그러나 현재 사용하는 MLP가 그 목표 함수를 학습하지 못할 수 있따. 이유: (1)optimizer가 목표 매개변수를 찾지 못할 수 있다. (2)overfitting -> 엉뚱한 함수 선택할 수 있다.

train data가 아니었던 test data까지 표현하는 목표 함수로 일반화되게 하는 보편적인 방법은 없다. 

 

-h가 클수록, 필요한 w의 개수는 작아지며 일반화 오차(val_loss)의 값도 작아진다. 깊이 h를 제한한다면 얕은 모형에 필요한 w의 수는 n의 거듭제곱 규모이다.  

-> h를 최대한 크게 해서 깊은 신경망을 만드는 것이 w를 조금만 크게 하고도 목표함수에 근접하게 학습할 수 있는 방법이다. 

 

-CNN 모델의 경우, 3-layer CNN은 param 수가 2000만 개일 때 overfitted, 11-layer CNN은 param 수가 6000만 개가 될 때까지 성능 향상이 되었다. -> 더 깊은 CNN이 더 복잡한 구조(param 수 많음)를 형성했으며 test_acc도 유의미하게 더 높았다. 

 

-이 외에도, skip connection이나 dropout 같은 방법을 이용해 모델의 성능을 향상시키기도 한다.