'모델의 복잡도'는 "입력벡터 x의 작은 변화가 출력값 f(x)를 얼마나 변화시킬 수 있는지"를 의미하는 개념이다. 가중치가 커지면, 입력벡터가 약간만 달라지더라도 큰 가중치에 의하여 출력값이 크게 달라질 것이다. 그런 점에서, 가중치가 큰 모델은 모델의 복잡도가 크다고 표현할 수 있다.
모델의 복잡도는 과대적합 문제와 관련있다. 과대적합 문제는, 학습데이터에서는 loss가 매우 작고, 테스트데이터에 대해서는 loss가 작지 않거나 성능이 잘 안 나오는 문제를 말한다. 과대적합 문제는 보통 학습데이터에 존재하는 노이즈를 많이 반영하여 학습한 결과, 일반적인 데이터셋에 대한 성능이 나오지 않게 되어 발생한다. 모델이 구조상 큰 가중치도 가능한 구조이기 때문에, 학습 과정에서 학습데이터셋에 있는 노이즈까지 최대한 설명하도록 적응한 결과로, 가중치가 매우 커진 모델이 나올 수 있다. 과대적합을 허용하는 해가 선택된 결과로 모델의 복잡도가 큰 모델이 관측되는 것이다.
즉, 정리하자면 모델의 복잡도는 학습된 모델에 대하여 논하는 개념이다. 그리고 과대적합은 학습 과정에서 발생하는 문제인데, 학습 과정은 학습데이터셋에 의해 이루어지고, 학습에 의해, 여러 가지 이론적으로 가능했던 모델들 중 하나로 확정된다. 학습데이터셋에 노이즈가 많이 껴있으면 노이즈를 학습하기 위해 특정 가중치가 커지게 되고, 그 결과 학습된 모델은 가중치가 커진, 복잡도가 증가한 모델이 된다. 이것이 가중치와 모델의 복잡도, 그리고 과대적합의 관계이다. 모델의 복잡도가 크다고 하여 과대적합이 무조건 발생한 상황이라고 단정할 수는 없지만, 과대적합된 모델이라면 모델의 복잡도가 큰 경우가 대부분이라 정리할 수 있다.
'모델의 복잡도'는 '모델의 표현력'과 유사한 개념이다. 모델의 표현력은 두 가지 관점에서 정의할 수 있는데, 하나는 '이론적으로 가능한 모든 함수모델의 집합인 함수공간에서 얼마나 많은 함수모델을 구현할 수 있는가'이고, 다른 하나는 '서로 다른 입력이 서로 다른 출력으로 나올 수 있는가'이다. 첫째는 설계 상의 표현력으로서, 모델의 구조인 깊이나 폭 등이 어떻게 설계되어있는지에 의해 결정되는 표현력이다. 학습여부와 무관하게 설계 상으로 결정된다. 둘째는 실현된 표현력으로서, '학습의 결과로 상수함수가 나오면 안된다'는 관점에서의 표현력이다. 서로 다른 입력이 서로 다른 출력으로 이어지는 것이 매우 당연하고 상식적인 예측인데, 서로 다른 입력에도 불구하고 매우 비슷한 출력이 나온다면, 그건 모델의 실제적인 표현력이 부족하다고 평가하게 되는 것이다. 이건 가중치 값에 의해 결정되는 것이고, 학습결과에 의존하는 개념의 표현력이다.
두번째 표현력 개념은 '가중치 크기에 따른 시그모이드 함수의 출력'과 관련하여 생각해볼 수 있다. 가중치 크기가 작으면, 선형결합 결과인 z값이 작아지게 되고, 그러면 시그모이드 함수에 들어가는 입력값이 0에 가깝다고 생각할 수 있다. 이 경우, 시그모이드 함수의 개형에 따라, 0.5 근방에서만 출력값이 도출되는데, 어떤 입력값 z가 있더라도 가중치 W가 너무 작아서 시그모이드 입력값이 커질 수 없다면, 어떤 입력값에 대해서도 비슷한 활성화함수 출력값이 나오게 되고, 그러면 비슷한 최종예측값이 나오는 것이다. 이게 바로, 앞서 언급한 '상수함수'와 비슷한 예시라고 생각할 수 있다.
가중치 크기 조절은 모델의 일반화 성능 향상을 위해 매우 중요한 개념이다. 가중치 크기가 너무 크면, 시그모이드 함수를 활성화함수로 하는 모델에서 해당 활성화함수에 대한 입력값이 좌우로 크게 퍼지게 되고, 그러면 시그모이드 함수의 출력값이 0 또는 1 근방으로 고정된다. 시그모이드 함수의 기울기는 이때 대부분 0이어서, 이런 경우에 역전파 과정에서 합성함수 편미분 중간항에 0에 가까운 항이 곱해지고, 그러면 가중치의 편미분 값(gradient의 해당 축 성분)이 매우 작아져서, 업데이트 속도가 느려진다. 학습속도가 느려지는 것이고, 최적점을 찾아가는 속도가 느려지는 것이다. 이러한 현상은 시그모이드 기반 신경망에서 발생하는 Gradient Vanishing 문제의 대표적 원인 중 하나이다. 또한 가중치가 너무 크면, 데이터가 충분하지 않거나 정규화가 없는 상황에서는 모델의 복잡도 관점에서도 일반화 성능이 좋지 않은 방향으로 모델이 설계되어 있는 경우가 많아서, 이런 점에서도 좋지 않다. 그래서 학습결과 모델의 가중치가 너무 높지 않게 학습되는 것이 중요하다고 할 수 있겠다.
또한 가중치가 너무 작아도 문제가 될 수 있다. 앞서 설명했던 두번째 표현력 개념에서의 예시가 바로 그것이다. 가중치가 너무 작으면, 시그모이드 출력값이 0.5 근방으로 몰리게 되고, 상수함수와 유사하게 모델 자체의 실제적 표현력이 너무 줄어든다.
따라서 학습 결과로 얻어진 모델의 가중치 크기는 ① 모델의 복잡도, ② 일반화 성능, ③ 업데이트속도, ④ 모델의 실현된 표현력을 동시에 반영하는 중요한 지표이다. 가중치가 지나치게 크면 복잡도 증가 및 일반화 성능 하락, 그리고 업데이트속도 하락 문제가 발생할 수 있고, 지나치게 작으면 실현된 표현력 붕괴로 인해 서로 다른 입력을 구분하지 못하는 모델이 된다. 그러므로 학습 과정에서는 가중치가 너무 크지도, 너무 작지도 않도록 적절히 제어하는 것이 중요하다.
'AI' 카테고리의 다른 글
| ResNet의 Identity Mapping에 대한 Ablation experiment와 결론 (0) | 2026.01.20 |
|---|---|
| ResNet 설계 아이디어 (0) | 2026.01.20 |
| ZK-Proof 기초 커리큘럼 (1) | 2026.01.17 |
| 모델의 분산과 편향 (0) | 2026.01.12 |