JUstory
[딥러닝] 정규화 기법 본문
과적합 방지를 위한 정규화
[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
'딥러닝' 카테고리의 다른 글
[추천시스템] 연관분석 / 컨텐츠 기반 추천 (0) | 2024.10.30 |
---|---|
[추천시스템] 개요/ 평가지표/ 인기도 기반 추천 (5) | 2024.10.29 |
[딥러닝] Linear Regression (1) | 2024.10.14 |
[딥러닝] 활성화 함수 Activation Function (0) | 2024.09.04 |
Backpropagation - 경사하강법 (0) | 2024.08.26 |