가중치 공유(Weight sharing)는 딥러닝에서 유용한 기술 중 하나인데요. 가중치 공유가 어떤 이점이 있어서 하는 것이지 하는 생각이 듭니다. 또 가중치 공유는 하고 싶을 때 언제나 가능한가? 물론 몇 가지 조건이 있습니다. 이 글에서는 동일한 가중치를 공유하여 모델 성능에 어떻게 도움이 되는지 알아보도록 하겠습니다.
가중치 공유란
언어 모델을 개선하는 아주 간단한 개선 방법으로 두 계층이 가중치를 공유하는 방법이 있습니다. 학습하는 매개변수 수가 크게 줄이고, 정확도도 향상할 수 있습니다. 가중치 공유를 LSTM 언어모델 구현 관점에서 이야기 해보겠습니다.
- V : 어휘 수
- H : LSTM의 은닉 상태의 차원 수
- V×H : Embedding 계층의 가중치 형상
- H×V : Affine 계층의 가중치 형상
이때 가중치 공유를 적용하려면 Embedding 계층의 가중치를 전치하여 Affine 계층의 가중치로 설정하기만 하면 됩니다. 전치하는 이유는 서로 형상이 반대이기 때문입니다.
1. RNN 가중치 공유
RNN에서 가중치 공유는 $ h_{t} $를 구하기 위해 $ h_{t-1} $에 연산할 가중치, $ x_{t} $에 연산할 가중치 matrix는 각 타입 스텝에서 동일하게 적용합니다. 이렇게 할 경우 기울기가 모든 시간대가 반영되는 개념입니다.
시간 스텝마다 공유되는 매개변수 때문에 각 출력값에 대해 계산된 기울기(파라미터)는 현재 상태 뿐만아니라 이전 상태에 대해서도 의존적이게 됩니다. Layer(층)이 다른 경우는 다른 가중치 사용합니다.
RNN의 가중치 공유 이점은 데이터별 시간 길이 t에 유연합니다. 예를들어, king 4자리, expert 6자리 상관없이 적용 가능합니다.
2. CNN 가중치 공유
CNN에서는 Filter별로 가중치 공유합니다. 즉, 동일한 가중치로 특성 추출합니다. 이는 가중치의 감소이면서 가중치 공유(weight sharing)가 됩니다. 필터를 통해 가중치를 공유하고 학습해야 할 가중치를 줄일 수 있습니다. 물체가 어느 곳에 있든 인식 가능하기 위해 선택할 수 있습니다. CNN에서 가중치 공유 이점은 이미지 위치, 각도, 크기 변화 등에 상대적 견고합니다.
가중치 공유의 이점
1. 파라미터 수 감소
가중치 공유를 사용하면 모델의 파라미터 수를 줄일 수 있습니다. 특히 자연어 처리(RNN)나 이미지 처리(CNN)와 같은 고차원 데이터에서는 많은 수의 파라미터가 필요합니다. 가중치를 공유함으로써 모델의 크기를 줄일 수 있어 메모리 사용량과 계산 복잡도를 감소시킬 수 있습니다.
2. 학습 개선
가중치를 공유하면 데이터의 일부를 여러 번 공유하여 학습을 개선할 수 있습니다. 특히 데이터가 적거나 레이블이 부족한 경우, 가중치를 공유하면 모델이 더 많은 데이터를 활용하여 더 강력한 패턴을 학습할 수 있습니다.
3. 일반화
가중치를 공유하면 모델이 훈련된 데이터뿐만 아니라 새로운 데이터에 대해서도 일반화할 수 있는 능력이 향상됩니다. 가중치를 공유함으로써 모델은 데이터의 다양한 측면에서 유사한 패턴을 학습하게 되어 일반화 능력이 향상됩니다.
4. 도메인 지식의 효율적 활용
가중치 공유는 모델에 도메인 지식을 통합하는 데도 도움이 됩니다. 예를 들어, 이미지 처리에서는 전이 학습(transfer learning)을 통해 사전 훈련된 모델의 일부를 재사용하여 새로운 작업에 적용할 수 있습니다. 이 경우 가중치를 공유하여 모델이 특정 도메인의 특성을 더 잘 이해하고 활용할 수 있습니다.
가중치 공유 적용 가능 조건은?
1. 동일한 계층 구조
가중치를 공유하려면 모델 내에서 동일한 계층 구조가 필요합니다. 즉, 가중치를 공유할 계층은 동일한 형태와 크기여야 합니다.
2. 동일한 연산
가중치를 공유할 계층은 동일한 연산을 수행해야 합니다. 예를 들어, 합성곱 신경망(Convolutional Neural Network, CNN)에서는 동일한 커널(필터)을 여러 위치에서 사용하여 가중치를 공유할 수 있습니다.
3. 동일한 손실 함수 및 역전파
가중치를 공유하는 모든 계층은 동일한 손실 함수와 역전파 알고리즘을 사용하여 학습되어야 합니다. 이는 모든 계층이 동일한 방식으로 학습되고 가중치가 업데이트되도록 보장합니다.
마무리
가중치 공유가 파라미터수를 줄일 수 있다는 점에서 성능상에 이점이 있는 것은 분명합니다. 동일하고 반복적인 작업을 할 때 동일한 가중치를 사용하는 weight sharing 사용할 때 효과적입니다. MLP는 가중치 공유하지 않습니다. Layer마다 다른 가중치 matrix를 가진다고 할 수 있죠.
요약하면, 가중치 공유는 딥러닝 모델의 크기를 줄이고 학습을 개선하며 일반화 능력을 향상시키는 데 도움이 되는 유용한 기술입니다. 이를 통해 더 효율적이고 강력한 모델을 구축할 수 있으며, 다양한 응용 분야에서 활용할 수 있습니다.
'딥러닝' 카테고리의 다른 글
어텐션 메커니즘(Attention mechanism) 아이디어와 종류 (0) | 2024.05.09 |
---|---|
Seq2Seq 모델의 원리와 특징이 무엇일까? (0) | 2024.05.08 |
GRU 성능 분석 및 특장점 (0) | 2024.05.01 |
LSTM 모델의 의미와 장단점 (0) | 2024.04.25 |
LSTM의 3개의 Gate 특징 및 설명 (0) | 2024.04.23 |