LLM/트랜스포머(BERT,GPT,BART,T5)

2-3. 층 정규화와 피드 포워드 층

Human-analog 2024. 10. 11. 06:54

 

2.4 정규화와 피드 포워드 층

2.4.1 층 정규화 이해하기

  트랜스포머는 RNN(Recurrent Neural Network, 순환신경망)과는 다르게 벡터들을 한 번에 연산하여 더 빠르게 응답할 수 있다고 했었죠. 트랜스포머 입장에서는 벡터들을 계산하기 위해서는 벡터들이 1열로 나란히 배치되어있어야 편하겠죠. 이를 '층 정규화(Layer Normalization)'라고 불러요. 즉, 층 정규화는 딥러닝 모델에서 각 층의 출력을 일정한 범위로 정규화모델 학습을 안정화시키고, 학습 속도를 높이는 역할을 해요.

 

 

  • 요약:
    층 정규화는 각 층의 출력을 일정하게 조정해 모델 학습을 안정화하고 속도를 높여줘요.
  • 용어설명:
    • 층 정규화(Layer Normalization): 각 층의 출력을 일정한 범위로 정규화해 모델 학습을 안정화시키고 효율성을 높이는 기법

2.4.2 피드 포워드 층

 트랜스포머 모델은 RNN과는 다르게 순환하지 않고 한 번에 연산을 끝내는 특징이 있죠. 즉, 앞으로 전진하는 것이 특징이에요. 이를 뒤를 보지 않고 앞으로 전진하면서 데이터를 입력하여 연산한다고 표현할 수 있죠. 이러한 것을 ;피드 포워드 층(Feed Forward Layer)' 이라고 불러요. 피드 포워드 층은 영어 뜻 그대로 '앞으로(Forward) 데이터를 입력(Feed)하는 층(Layer)'이라는 뜻이죠. 트랜스포머 아키텍처에서 각 어텐션 블록 다음에 위치해 중요한 정보를 강화하고 불필요한 정보를 제거하는 역할을 해요. 이 층은 두 개의 선형 변환과 비선형 활성화 함수로 구성되어 있어, 입력된 데이터를 더 잘 학습할 수 있도록 돕죠.

 

  • 요약:
    피드 포워드 층은 입력된 데이터를 처리하고, 중요한 정보를 강화하는 역할을 해요.
  • 용어설명:
    • 피드 포워드 층(Feed Forward Layer): 앞으로만(Forward) 데이터를 입력(Feed)하는 층(Layer) after 어텐션 메커니즘 > 필요한 벡터 강화, 불필요한 벡터 차단 through 선형함수+비선형함수

실습 6: 피드 포워드 층 구현

  이제 트랜스포머피드 포워드 층을 간단하게 코드로 구현해볼 거예요. 두 개의 선형 변환과 비선형 활성화 함수로 구성된 피드 포워드 층을 사용해 데이터를 처리하는 과정을 확인할 수 있어요.

 
import torch
import torch.nn as nn

# 피드 포워드 층 정의
class FeedForwardLayer(nn.Module):
    def __init__(self, input_dim, hidden_dim):
        super(FeedForwardLayer, self).__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)  # 첫 번째 선형 변환
        self.fc2 = nn.Linear(hidden_dim, input_dim)  # 두 번째 선형 변환
        self.relu = nn.ReLU()  # 비선형 활성화 함수

    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

# 입력 벡터 정의 (예: 1x512 크기의 벡터)
input_tensor = torch.rand(1, 512)

# 피드 포워드 층 생성 및 실행
feedforward_layer = FeedForwardLayer(input_dim=512, hidden_dim=2048)
output = feedforward_layer(input_tensor)

print("피드 포워드 층 출력:\n", output)

 

 

  이 코드는 트랜스포머 아키텍처에서 자주 사용되는 피드 포워드 층을 간단하게 구현한 예시예요. 두 개의 선형 변환비선형 활성화 함수(여기서는 ReLU)를 사용해 입력 데이터를 처리하는 방식이에요.

  • 요약:
    피드 포워드 층은 두 개의 선형 변환과 비선형 활성화 함수를 사용해 데이터를 처리하는 신경망 층이에요.

정리

  1. 층 정규화는 각 층의 출력을 일정한 범위로 정규화하여 학습 속도를 높이고 안정화를 도와줘요.
  2. 피드 포워드 층은 입력된 데이터를 처리하고, 중요한 정보를 강화하는 신경망 층으로, 두 개의 선형 변환과 비선형 활성화 함수로 구성돼요.
  3. 코드를 통해 피드 포워드 층의 구현을 확인하며, 트랜스포머 아키텍처에서의 중요한 역할을 이해할 수 있어요.