Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JUstory

[딥러닝] 정규화 기법 본문

딥러닝

[딥러닝] 정규화 기법

jueuniiiju 2024. 10. 14. 15:48

과적합 방지를 위한 정규화

 

[L1 정규화]

Lasso Regression

일부 가중치를 0으로 만들어 변수를 선택

 

[L2 정규화]

Ridge Regression

전체적으로 가중치를 작게 만듦

 

 

 

[Dropout]

뉴런끼리 값을 주고받을 때 학습 과정에서 무작위로 뉴런을 비활성화

학습마다 뉴런의 조합이 달라지기 때문에 과적합에 강건해짐

 

작동방식

1. 각 레이어마다 지정된 확률에 따라 뉴런을 비활성화 (일반적으로 0.5)

2. 선택된 뉴런의 출력값은 0

3. 이 과정을 각 학습 배치마다 반봅

4. 예측 시에는 모든 뉴런을 사용

class Net(nn.Module):
    def __init__(self, use_dropout=False):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(1,64)
        self.fc2 = nn.Linear(64,64)
        self.fc3 = nn.Linear(64,1)
        self.dropout = nn.Dropout(0.5)
        self.use_dropout = use_dropout
    
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        if self.use_dropout:
            x = self.droupout(x)
        x = torch.relu(self.fc2(x))
        if self.use_dropout:
            x = self.dropout(x)
        x = self.fc3(x)
        return x