Regularization 중 L1, L2 norm penalty에 대해
Regularization이 뭘까?
심층학습에서 regularization은 ‘일반화’ 라는 의미로 자주 쓰인다. training 된 모델이 training data set 에서는 accuracy가 좋지만 validation data set에 대해서는 그만큼 accuracy 가 좋지 않은 경우를 말한다. 이는 모델이 training data set 을 가지고 훈련할 때 일반적으로 필요없는 세세한 부분까지 학습했기 때문에 다른 새로운 data set 을 예측할 때 제대로 맞추지 못하는 경우로 해석할 수 있다. overfitting ( 과대적합 ) 이라는 현상이다.

이때 우리가 만든 모델은 바꾸지 않으면서 뭔가 일반화를 잘 시킬 수 있는 요소를 제어해보겠다는 것이 이 norm penalty Regularization의 아이디어다. 주어진 data 와 label data를 바꾸지 않고 우리가 손댈 수 있는 요소, parameter (weight들) 들을 조절해보겠다는 것이다. 이 parameter들을 L1, L2 norm(거리 개념이 우리에게 익숙해서 사용하는 거 같음) 같은 penalty항을 측정기준으로 어떤 상수 k 값 보다 작아야 한다는 제약 조건을 제시하면서 parameter들을 조절할 수 있다. penalty term을 로 표기하면
<
이라는 term으로 써질 수 있다. 그럼 기존의 목적함수 (
:
로 매개 변수화된
의 함수를 칭하는 표기 ) 에서
<
가 추가 된
을 만족하는
를 찾는 것으로 정의할 수 있다.
제약식이 주어진 문제를 푸는 것은 까다롭기 때문에 이를 라그랑주 승수법을 사용하여 제약이 없는 문제로 변환할 수 있다. 를 라그랑주 승수를 입혀서
로 표현 할 수 있다. 이러한 식의 해는(
)
와 같이 주어진다. 식을 보면 어떤 임계 값 (제약 영역)
는 제약이 없는 조건식으로 바꾼 경우 직접적으로 값을 넣을 수 없다.
를 통해서 이 값을 조절해야 하는데
가 크면
가 작고
가 작으면
가 크다. 모든 양의
는
를 줄어들게 만든다. (이 부분에 대한 증명이 궁금) 이렇게 제약이 있는 식을 없는 식으로 바꾸면서 라그랑주 승수인
를 건드리면서 임계 값
를 조절하며 일반화를 높히는 것이다.
다른 관점으로 해석하면 과
은 동치니까
만큼의 평행이동으로 최적값에는 영향을 미치지 않는다. 그냥
값만을 생각하면 된다.
설명하기 앞서 신경망에서는 각 층의 affine transformation 의 weight 들에만 벌점을 가하고 bias 항에는 regularization을 하지 않는 매개변수 norm penalty 를 사용하는 것이 일반적이다. 이제부터 벡터
는 norm penalty의 영향을 받아야 하는 모든 가중치를 뜻하고 벡터
는 그
와 regularization 되지 않는 매개변수들을 모두 포함한 모든 매개변수를 뜻한다.
L2 norm regularization
가중치 감쇄(weight decay)라고도 하며 흔히 ridge regression 이라 부른다. 표기를 단순화하기 위해 bias 매개변수는 없다고 가정한다. =
목적함수는 다음과 같다.
기울기는
가중치들을 갱신하는 기울기는
즉 정리하면
이 식을 보듯이, 가중치 벡터가 상수 계수에 비례해서 줄어드는 것을 볼 수 있다.
전체훈련 과정을 보기위해
regularization이 되지 않은 훈련 비용이 최소화되는 가중치 값들인 의 부근에서 목적함수를 이차함수로 근사할 경우 ( 실제로 MSE 같은 목적함수를 자주 사용하니까 합리적 ) 근사된 목적함수
는 다음과 같다.
여기서 H는 에서 평가된
의 Hessian matrix 이다. 이 이차 근사에는 일차항이 기울기가 최소가 되는 점이므로 소멸하여 없다. 또한 2차 함수이므로 H는 양의 준정부호 (극소점) 행렬이다.
가 최소가 되는 기울기는
= 0 과 같다.
여기에 가중치 감쇄 효과를 보기위해 가중치 감쇄 기울기를 더한 후, 를 정칙화 한 버전의 최소점에 대해 풀어 본다. 극소점에 해당하는 해
를 다음과 같이 유도할 수 있다.
가 0에 근접함에 따라
는
에 가까워 진다. (즉 regularization 효과가 없어지는 것) 한 쪽으로 Hessian matrix
는 실숫값 대칭행렬이므로 (이차 편미분이 연속인 모든 점에서는 미분 연산자가 가환적이다.) 이것을 분해하면 고윳값을 가지는 대각행렬인
와 정규기저행렬 (고유벡터)
를 가지면서
=
형태가 된다. (정의에 의해 고윳값은 크기순으로 대각선으로 배치되어 있고 각 고윳값에 해당하는 고유 벡터들이 대응되는 행렬형태로 구성된다.) 이 식을 대입해보면
가중치 감쇄항은 의 정의된 축들을 따라 재비례(rescaling)하는 효과를 낸다.
의 성분 중
의
번째 고유벡터 방향의 성분은
를 계수로 해서 비례된다.
인 방향들에 대해서는 regularization의 효과가 비교적 작다.
에 대해서는 크기가 0에 가까워질 정도로 현저하게 줄어든다. 매개변수들이 목적함수의 감소에 현저하게 기여하는 방향들만 비교적 원래대로 유지된다. (고윳값이 작은 성분은 현저히 줄어든다.) 목적함수의 감소에 기여하지 않는 방향들에서는 Hessian matrix의 고윳값이 작은데, 이는 그 방향으로 이동해도 기울기가 현저하게 증가하지는 않음을 뜻한다. 아래 그림은 L2 regularization을 기하적으로 나타낸 것이다.

실제로 머신러닝에 적용한 하나의 예시로 MSE(mean squared error)를 목적함수로 취했을 때 L2 regularization을 적용 했을 때를 알아본다. L2 penalty 항이 추가된 목적함수는
이에 따라 정규방정식의 해로 표현하면
통계적 관점으로 보면 가
로 전처리가 되어 있으면
는 공분산 행렬
에 비례한다. 즉
term은 공분산 행렬 중에서도 대각행렬 (분산에 해당하는) 에
가 더해지는 것이다. 이는 분산을 더 높다고 느끼게 만든다.
즉 bias(편향 추정량) 를 좀 주면서 variance 를 줄인다는 해석이다.
L1 norm regularization
매개변수 에 대한 L1 regularization 은 다음과 같이 정의된다.
개별 매개변수들의 절대값들의 합이다. L1 regularization 또한 목적함수 는 다음과 같이 주어진다.
그리고 이 목적함수의 기울기 (subgradient : 절댓값은 0에서 미분이 되지 않는데 subgradient를 사용하여 부호를 표시하여 미분이 가능하게 끔 해준다.) 는
여기서 는
의 성분별 부호 ( 양수면 1, 음수이면 -1 ) 이다. 부호가 양수거나 음수인
상수에 비례한다. 위와 마찬가지로 목적함수를 2차함수로 표현해본다. 복잡한 목적함수이면 절단된 테일러 급수로 간주하여 나타냈다고 보자. 그 목적함수의 기울기는 다음과 같다.
는 Hessian matrix.
완전히 일반적인 Hessian matrix 에서는 L1 penalty 를 나타내는 깔끔한 대수식이 반드시 존재한다는 보장이 없다.(미분이 안되기 때문에 대칭행렬이 된다는 조건이 만족되지 않는다.) 그런 보장을 얻기 위해 Hessian matrix가 반드시 대각행렬이어야 한다고 가정한다.
data를 PCA(주성분 분석)을 통해서 전처리를 하면 대각행렬을 얻을 수 있다.(이에 대한 코딩은 나중에 해보기로). L1 regularization 이 더해진 목적함수의 이차근사를 매개변수들에 관한 하나의 합으로 분해할 수 있다. 원소별로 나타낸 식이다.
이 목적함수를 최적하는 문제에는 해석적 해(각 차원 i 마다 하나씩) 가 존재한다. 그 해의 형식은 다음과 같다.
1.모든 에대해
인 상황을 보면 가능한 결과는 두 가지다.
일 때,
의 최적값은
= 0 이다. 이는 기존
의 기여가 L1 regularization 에 의해 크게 증가해서
의 값이 0 쪽으로 밀렸기 때문이다.
일 때는 regularization 이
의 최적값을 0 쪽으로 완전히 보내지 않는다. 최적값을
만큼의 거리만 이동시킨다.
2.모든 에대해
인 상황도 가능한 결과는 두 가지다.
일 때,
의 최적값은
= 0 이다.
일 때는
만큼의 거리만 이동시킨다.
L1 regularization 을 도입한 목적함수의 최적해(Hessian matrix 가 대각행렬이자 양의 정부호라는 가정)는
라는 방정식을 얻을 수 있다.만일
가 0 이 아니면
역시 0 이 아니다. 이는 L2 regularization 에서는 매개변수들이 희소해지지 않지만 L1 regularization 에서는
가 충분히 크다면 매개변수들이 희소해질 수 있음을 보여준다. 그래서 L1 을 특징 선택 (feature selection) 을 위한 하나의 메커니즘으로 활용한다. 특징 선택은 사용 가능한 특징을 추출해냄으로써 기계 학습 문제를 단순화할 수 있다.
cross – entropy 같은 우리가 자주 사용하는 목적함수도 convex function의 정의에 따라 이계도함수 > 0 위의 식을 만족한다.
그냥 만든 테일러 급수 근사
exp(x)를 테일러 급수로 만든 코드 :
|
1 2 3 4 5 6 7 8 9 10 11 |
print(np.exp(2)) def exp(x,n=2): result = 1.0 n_factorial = 1.0 for i in np.arange(1,n+1): float(i) n_factorial *= i out = (1.0 / n_factorial) * x**i result += out return result |
exp(2) 를
2차 다항식으로 근사 시켰을 때:![]()
5차 다항식으로 근사 시켰을 때:
10차 다항식으로 근사 시켰을 때:![]()
References : 심층학습 (이안 굿펠로, 요슈아 벤지오, 에런 쿠빌) 저