본문 바로가기
AI/Transformer

Transformer_6(기초부터 심화까지)

by 전주혁 2023. 6. 28.

지금까지

Self-Attention, 쿼리-키-밸류, embedding, positional encoding

그리고 Multi-Head Attention

까지 알아보았습니다.

 

이번 시간은

Layer Normalization

에 대해서 알아볼까요?

 

 

 

 

먼저 Normalization부터

알아 볼까요?

 

 

Normalization(정규화)

데이터를 특정 범위 또는 규모로 변환하는 과정입니다.

머신러닝 및 딥러닝에서 정규화는 데이터의 스케일을 조정하여 모델의 학습을 돕기 위해 사용됩니다.

정규화는 다음과 같은 목적으로 사용됩니다:

스케일 조정: 데이터의 스케일이 다를 때, 

정규화를 통해 데이터를 동일한 범위로 조정할 수 있습니다. 

이렇게 하면 모델이 더 빠르게 수렴하고, 

최적화 알고리즘이 더 잘 작동할 수 있습니다.

그래디언트 소실 및 폭주 문제 완화: 레이어가 깊어질수록 그래디언트 소실 또는 폭주 문제가 발생할 수 있습니다.

정규화는 이러한 문제를 완화하기 위해 사용됩니다.

특성의 중요성 균형: 특성 간의 중요성을 균형잡기 위해 정규화를 사용할 수 있습니다. 

이렇게 하면 한 특성이 다른 특성보다 지나치게 영향력을 행사하는 것을 방지할 수 있습니다.

 


정규화는 여러 가지 방법으로 수행될 수 있습니다. 

대표적인 방법은 Min-Max Normalization과 Z-score Normalization (Standardization)입니다. 

딥러닝에서는 Batch Normalization, Layer Normalization, Instance Normalization 등과 같은 기법들이 널리 사용됩니다. 

이러한 기법들은 신경망의 레이어에서 출력의 스케일 및 위치를 조정하여 학습 과정을 안정화하고 개선합니다.

 

 

 

 

다들 아실 거라 생각합니다!

 

 

 

Layer Normalization은

 

각 샘플의 모든 뉴런에 동일한 정규화를 적용하여 레이어 내에서 평균이 0이고 분산이 1이 되도록 조정합니다.

즉, 각 샘플에서 동일한 위치의 뉴런에 대해 평균과 분산을 계산하고 정규화를 수행합니다.

 

 

Transformer에서 Layer Normalization의 사용 이유는 다음과 같습니다:

 

 

안정적인 학습

Layer Normalization은 그래디언트 소실 및 폭주 문제를 줄이고 학습 과정을 안정화하는 데 도움이 됩니다.

이를 통해 레이어가 깊어지더라도 학습이 잘 진행되도록 합니다.

 

 

빠른 수렴

정규화를 통해 각 레이어의 활성화 값이 특정 범위로 조정되므로,

모델의 학습 속도가 빨라집니다.

 

 

 

고정 길이 입력이 아닌 가변 길이 입력에 대한 처리

Layer Normalization은 독립적으로 각 샘플에 적용되기 때문에,

시퀀스 길이가 다른 입력에도 적용할 수 있습니다.

이는 Transformer에서 중요한 요소로, 다양한 길이의 시퀀스를 처리하는 데 도움이 됩니다.

 

 

 

정규화 효과

Layer Normalization은 과적합을 방지하고 모델의 일반화 성능을 향상시키는 효과를 가집니다.

 

 

 

 

 

Transformer에서는 Layer Normalization을 사용하여 이러한 이점을 활용하고,

모델의 성능을 향상시킵니다.

 

 

Layer Normalization은 주로

Self-Attention 및 Position-wise Feed-Forward 네트워크의

출력 후에 적용되어 학습 과정을 안정화하고 개선합니다.

 

 

 

 

하지만

꼭 장점만이 있는 기법이 아닙니다!

Layer Normalization의

단점으로는

 

 

추가 계산 복잡도

Layer Normalization은 모델의 각 레이어에서 추가적인 계산을 필요로 합니다.

이로 인해 전체 모델의 계산 복잡도가 증가하며, 학습과 추론 시간에 영향을 줄 수 있습니다.

 

 

하이퍼파라미터 튜닝

Layer Normalization은 학습률과 같은 하이퍼파라미터에 민감할 수 있습니다.

따라서, 최적의 하이퍼파라미터 값을 찾기 위해 여러 번의 실험이 필요할 수 있습니다.

 

 

다양한 데이터셋에 대한 적응력

Layer Normalization은 대부분의 경우에 좋은 성능을 보이지만,

일부 특정한 데이터셋에 대해서는 Batch Normalization이나 Instance Normalization 등

다른 정규화 기법이 더 나은 성능을 보일 수도 있습니다.

따라서, 적절한 정규화 기법을 선택하기 위해 실험이 필요할 수 있습니다.

 

 

 

 

단점이 있음에도 불구하고,

Transformer의 특성과 목적에 맞는 장점들이 Layer Normalization을 사용하는데 큰 도움이 되기 때문입니다.

Layer Normalization의 장점이 Transformer의 성능과 안정성에 큰 영향을 미치므로,

이러한 단점을 감수하고 사용하는 것이 전체적으로 더 나은 결과를 가져옵니다.

 

 

다음 시간엔

Layer Normalization

코드를 보며 이해해 봅시다!