My Vision, Computer Vision

[딥러닝 공부] 딥러닝 최적화3 - 규제 기법, 하이퍼 파라미터 최적화 본문

공부

[딥러닝 공부] 딥러닝 최적화3 - 규제 기법, 하이퍼 파라미터 최적화

gyuilLim 2025. 1. 3. 19:08

이 글은

『오일석, Machine Learning(기계 학습), 한빛아카데미(2017년)』

에서 공부한 내용을 토대로 작성되었다.

https://mvcv.tistory.com/43 이 글에서 이어집니다.


 

규제의 필요성과 원리

딥러닝 모델의 올바른 학습을 위해서는 데이터의 용량에 따라 적절한 크기의 모델을 구현해야 한다.

모델 용량에 따른 과소, 과잉적합 관계

 

위 그래프에서 처럼 모델 용량이 데이터의 용량에 비해 커지면 커질 수록 성능이 좋아지는 것은 아니다. 모델의 용량이 적으면 모델을 과소적합되고, 모델의 용량이 커지면 과잉적합될 가능성이 커진다. 큰 데이터셋에 작은 모델을 학습시키면 모델이 잘 학습되지 않는 것을 과소적합이라하고, 데이터셋에 비해 큰 용량의 모델을 학습시키면 학습 데이터에만 맞춰져 일반화 능력은 떨어지는 것을 과(잉)적합이라고 한다.

 

대부분의 설계자들이 모델을 설계할 때 데이터셋에 비해 작은 모델을 사용하는 일은 거의 없다. 즉 큰 용량의 모델을 사용하기 때문에 과적합에 대한 대비책을 마련해놓아야 한다. 그것이 바로 규제이고, 가중치 감쇠(weight decay)는 다양한 규제기법 중 하나이다.

매끄러움의 특성

 

위 그림은 하나의 입력공간을 두 개의 출력공간으로 매핑하고있는 상황을 나타낸 것이다. 가운데 출력공간은 입력공간이 매끄럽게 매핑된 것이고 오른쪽 출력공간은 입력공간이 매끄럽지 않게 매핑된 것이다. 가운데 출력공간은 입력공간의 6개의 데이터에 대해 거리가 먼 데이터들끼리 더욱 분리가 됐지만 오른쪽 출력공간은 그렇지 않다. 세상의 데이터 대부분은 분류 문제에서 매끄러운 매핑이 일어나야한다. 따라서 학습 파라미터 $\Theta$에 대해 매끄러움을 나타내는 규제항을 두어, 덜 매끄러울수록 크게하여 벌칙을 강화하는 것이 가중치 감쇠 규제의 원리이다.

규제 항이 추가된 목적함수

 

위 식은 규제를 적용한 목적함수를 나타낸다. 가중치의 값이 커질 수록 규제항의 값도 커지게 세팅하기 때문에 가중치를 작은 값으로 국한하는 효과가 있다. 따라서 가중치 감쇠는 모델의 구조적인 용량은 충분히 크게하되 가중치의 수치적인 용량을 제한하는 방법이다.

 

모델 설계의 목표는 느린 학습의 문제과잉적합, 과소적합의 문제를 해결하는 방향으로 나아간다. 따라서 이전의 성능 향상 요령(데이터 전처리, 가중치 초기화, 전처리 등)과 규제 기법은 완전히 분리되지 않고 두 개의 문제 중 어느 것에 더 많이 기여하는지에 따른 대략적인 구분이다.

 

규제 기법

 

위 식은 관련 변수가 드러나도록 규제를 적용한 목적함수 식을 다시 쓴 것이다. 목적함수 자체는 $\Theta, x, y$에 영향을 받지만 규제항은 $x, y$에 영향을 받지 않는다. x와 y는 훈련집합의 입력 데이터와 레이블(타겟)이다. 또한 규제는 가중치에만 적용하고 바이어스에는 적용하지 않는다. 바이어스를 규제하면 바이어스가 과소적합될 수 있기때문이다.

 

규제 기법 - L2 norm

규제 항 R로 L2 놈을 사용하는 규제 기법이 가중치 감쇠(weight decay)이고 가장 널리 쓰인다. 규제항은 L2 놈의 제곱이다.

규제 항으로 L2 norm을 사용

 

 

단순히 원래의 목적함수에 L2 놈 규제항이 추가 된 식이고 규제를 적용한 목적함수라는 의미에서 $J_{regularized}$라는 이름을 붙인다. 그래디언트를 구하기 위해 $\Theta$에 대해 미분하면

 

규제를 적용한 목적함수를 $\Theta$에 대해 미분

 

최종적으로 위와 같은 식으로 정리된다. 이 때 $\triangledown J(\Theta, X,Y)$를 줄여서 $\triangledown J$로 나타낸 후 식을 간략화하면

 

 

 

위와 같이 정리할 수 있다. 위 식의 의미를 살펴보면, 먼저 $\Theta$의 크기를 $(1-2\rho \lambda)$만큼 반영한 후 $\rho \triangledown J$만큼 이동한다. 이를 그림으로 보면 아래와 같다.

L2 norm을 이용한 규제 기법(가중치 감쇠)의 효과

 

즉 원래 벡터의 위치보다 원점으로 조금 당기는 역할을 하게 된 것이다.

 

L2 norm을 선형 회귀에 적용

다차원에서 선형 방정식은 아래와 같이 나타낼 수 있다.

 

$$w_1x_1 + w_2x_2 + \cdots + w_dx_{id} = \mathbf x^T_i \mathbf w = y_i, i=1,2,\cdots,n$$

 

입력 데이터 $\mathbb X = {\mathbf x_1, \mathbf x_2, \cdots,\mathbf x_n}$이고 분류가 아니라 회귀 문제이므로 $\mathbb Y = {y_1, y_2, \cdots, y_3}$에서 y는 실수이다. 여기서 $\mathbf w = (w_1, w_2, \cdots, w_d)^T$는 하이퍼 평면을 표현하는 매개변수이다. 바이어스 $w_o$는 0이라고 가정한 것이다. 이제 위 선형 방정식에 대해 목적함수를 정의하면 다음과 같다.

 

$$j(\mathbf w) = \sum_{i=1}^n(\mathbf x^T_i \mathbf w - y_i)^2 = \frac{1}{2} \parallel \mathbf X \mathbf w - y \parallel^2_2$$

 

목적함수로 MSE를 사용하여 선형 방정식의 예측값 $\mathbf x^T_i \mathbf w$과 실제값 $y_i$의 차이를 제곱하여 모두 더한 것이다. $\frac{1}{2}$는 식 전개 편의를 위해 곱해준 것이다. 위 식에 L2 norm을 이용한 가중치 감쇠 기법을 적용하면

 

$$J_{regularized}(\mathbf w) = \frac{1}{2} \lVert \mathbf X \mathbf w - y \lVert^2_2 + \lambda \lVert \mathbf w\rVert^2_2 = \frac{1}{2} (\mathbf X \mathbf w - \mathbf y)^T(\mathbf X \mathbf w - \mathbf y) + \lambda \lVert \mathbf w\rVert^2_2$$

 

목적함수의 최소값을 구하기 위해 미분하여 0으로 놓으면

 

$$\frac{\partial J_{regularized}}{\partial \mathbf w} = \mathbf X^T \mathbf X \mathbf w - \mathbf X^T\mathbf y + 2\lambda \mathbf w=0 \implies (\mathbf X^T \mathbf X + 2 \lambda \mathbf I)\mathbf w = \mathbf X^T \mathbf y$$

 

위와 같고 $\mathbf w$에 대해 정리하면

 

$$\hat {\mathbf w} = (\mathbf X^TX + 2 \lambda \mathbf I)^{-1}\mathbf X^T\mathbf y$$

 

로 정리할 수 있다. 훈련 데이터 $\mathbb X, \mathbb Y$로 구한 최적값이기 때문에 $\hat {\mathbf w}$으로 표기한 것이다. 위 과정에서 구한 매개변수값을 선형 방정식에 대입하면 최종적으로

 

$$\mathrm y = \mathbf x^T \mathbf {\hat w}$$

 

위와 같은 선형 분류기가 만들어진다.

 

규제 기법 - L1 norm

L1 놈을 목적함수에 적용한 새로운 $J_{regularized}$를 정의하자.

 

$$J_{regularized}(\mathbf \Theta; \mathbb X, \mathbb Y) = J(\mathbf \Theta; \mathbb X, \mathbb Y) + \lambda \lVert \mathbf \Theta \rVert_1$$

 

L2 norm을 적용했던 것과 같지만, 규제항만 L2 norm에서 L1 norm으로 바뀌었다. 위 식을 미분하여 정리하면 아래와 같다.

 

$$\triangledown J_{regularized}(\mathbf \Theta; \mathbb X, \mathbb Y) = \triangledown J(\mathbf \Theta ; \mathbb X, \mathbb Y) + \lambda \mathbf {sign}(\mathbf \Theta)$$

 

위 식에서 구한 그래디언트를 이용하여 매개변수를 업데이트하는 식을 유도하면 다음과 같다.

 

$$
\mathbf \Theta = \mathbf \Theta - \rho \triangledown J_{regularized}(\mathbf \Theta; \mathbb X, \mathbb Y) \
= \mathbf \Theta - \rho(\triangledown J(\mathbf \Theta; \mathbb X, \mathbb Y) + \lambda \mathbf{sign}(\mathbf \Theta)) \
= \mathbf \Theta - \rho \triangledown J(\mathbf \Theta; \mathbb X, \mathbb Y) + \rho \lambda \mathbf{sign}(\mathbf \Theta)
$$

 

식을 간결하게 다시 쓰면, 가중치 업데이트의 최종 식은

 

$$
\mathbf \Theta = \mathbf \Theta - \rho \triangledown J(\mathbf \Theta; \mathbb X, \mathbb Y) + \rho \lambda \mathbf{sign}(\mathbf \Theta)
$$

 

위와 같이 정리된다. 이 식을 살펴보면 원래의 가중치 업데이트 식에 마지막 항인 $\rho \lambda \mathbf{sign}(\mathbf \Theta)$가 더해진 부분만 다른데, 이때 $\mathbf{sign}(\mathbf \Theta)$는 $\mathbf \Theta$가 음수면 -를 반환하고 양수면 +를 반환한다. 결론적으로 아래와 같이 가중치 업데이트를 한 후, $(\rho \lambda, \rho \lambda)$ 만큼 원점 쪽으로 끌어오는 규제 역할을 하게 된다.

L1 norm을 이용한 규제 기법(가중치 감쇠)의 효과

 

여러 문헌에서 L1 놈을 사용하면 0이 되는 매개변수가 많아진다는 현상을 입증하였는데, 이 현상을 희소성(sparse)이라고한다. L1 놈을 선형 회귀에 적용하면 0이 아닌 항만 남게 되기 때문에 L1 놈이 특징 선택을 한다고 표현한다.

 

규제 기법 - 조기 멈춤

모델의 용량이 커질수록, 또는 세대 수(epoch)가 길어질수록 훈련집합에 대한 성능은 점점 좋아져 오류율 0에 근접하게 된다. 하지만 어떤 지점을 넘어서면 훈련 데이터를 암기하기 시작하여 한 번도 학습하지 않았던 데이터에 대해 성능이 떨어지게되는, 즉 일반화 능력이 하락하기 시작한다. 조기멈춤은 모델의 일반화 능력이 최대인 지점에서 학습을 중단시키는 방법이다. 모델의 내부 동작은 전혀 수정하지 않은 채 적용할 수 있기 때문에 매우 간단하다.

 

조기 멈춤의 멈춤 조건으로는 보통 오류율을 기준으로 하는데, 오류율 e가 전보다 나아지지 않으면 멈추는 등 러프하게 적용하거나 참을성 인자 p를 도입하여 p개의 세대를 반복해도 오류율이 나아지지 않으면 멈추는 등의 방법을 사용한다.

 

규제 기법 - 데이터 확대(Data augmentation)

현실에서 많은 데이터를 확보하기에는 많은 비용이 들고 어려움이 있다. 그렇기에 이미 있는 데이터를 가지고 변형하여 새로운 샘플을 만들어내는데, 이 방법을 데이터 확대(증강, augmentation)라고 한다. 데이터가 영상이라면 영상에 있는 물체에 이동, 회전, 크기 변환등 선형 변환에 속하는 어파인 변환(affine transform)을 적용할 수 있다. 하지만 데이터의 변형이 너무 심하여 부류가 바뀌게되는 경우는 피해야한다. 예를들어 숫자 ‘6’이 적힌 이미지에 상하반전을 적용하여 ‘9’가 적힌 이미지로 바뀌는 등의 경우가 있다.

필기체에 증강을 적용한 예시

 

위 사진은 MNIST 데이터에 변환을 적용한 사진이다. 맨 왼쪽 열에 있는 이미지들은 원본 숫자 이미지이고 오른쪽의 이미지는 맨 왼쪽 이미지를 변환한 것이다.

 

규제 기법 - 드롭아웃

드롭아웃이란 학습 파라미터를 일부 제거하는 것(학습이 안되게 하는 것)이다. 예를 들어 퍼셉트론에서, 은닉층과 은닉층 사이에 연결된 가중치 엣지들이 있는데, 은닉층 특정 노드에 들어오는 엣지와 나가는 엣지를 제거하는 방식으로 적용한다.

 

드롭아웃 기법을 실제 모델에 적용하게 되면, 불린(Boolean) 배열 $\pi$를 따로 만들기만 하면 된다. $\pi^l$은 $l$번째 층의 노드 제거 여부를 나타내는 벡터인데, $(0,1,1,0, \cdots, 0, 1)$처럼 0으로 되어있으면 연결이 끊긴 노드이고 1로 되어있으면 연결되어 있는 노드이다. 즉 드롭아웃을 적용한 전방계산 수식은 다음과 같다.

 

$$
z^l_j = \tau_l(s^l_j) \\
\mathbf {\hat z}^{l-1} = \mathbf z^{l-1} \odot \mathbf{\pi}^{l-1} \\
s^l_j = \mathbf u^l_j \mathbf{ \hat z}^{l-1}
$$

 

$l-1$ 번 째 은닉층의 노드 $z^{l-1}$과 $\pi^{l-1}$을 곱하여 드롭아웃이 적용된 노드들은 0으로 만들어준다. 미니배치 별로 다르게 비율은 같지만 적용은 다르게하여 그래디언트 $\triangledown^{dropout}_i$(i는 미니 배치의 개수)들의 평균을 구하여 최종적으로 가중치 갱신에 적용한다.

 

규제 기법 - 앙상블

현대 기계학습에서는 앙상블도 규제 기법의 한 종류이다. 서로 다른 여러 개의 모델의 예측값을 합쳐 일반화된 예측값을 도출하는 방법을 앙상블 기법이라고 한다. 부트스트랩, 배깅, 하드 보팅, 소프트 보팅 방식 등이 있다. 같은 모델을 데이터셋을 다르게 구성하여 여러 개 학습시키거나, 같은 데이터셋에서 다른 모델을 학습시켜 여러개의 결과값의 평균을 사용하는 등의 방법이다.

728x90