본문 바로가기

IT/AI

딥러닝 기초 핵심 개념 2

728x90

Dropout

Dropout은 학습 중에 설정한 확률값에 따라서 일부 뉴런을 제거하여 과대적합을 방지하는 기법입니다.

특정 뉴런에만 집중해서 학습하지 않도록 과대적합을 방지하도록 사용합니다.

Dropout: A Simple Way to Prevent Neural Networks from overfitting, Hinton et al.

더보기
import torch
import torch.nn as nn

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.dropout = nn.Dropout(0.5)  # dropout 비율은 50%
        self.fc2 = nn.Linear(5, 1)
        
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.dropout(x)
        x = torch.sigmoid(self.fc2(x))
        return x

 

 

Data-preprocessing
Garbage In Garbage Out, 분석 및 학습의 성능을 향상 시키기 위해 데이터 전처리가 중요합니다. 

결측치 제거 및 채우기$($평균, 앞, 뒤 데이터, 예측 등$)$, 범위로 묶기/ 군집화, 정규화, 데이터 증폭 등이 있습니다.

https://www.geeksforgeeks.org/data-preprocessing-in-data-mining/

더보기
import pandas as pd
from sklearn.preprocessing import StandardScaler, LabelEncoder

# 데이터 불러오기
data = pd.read_csv('data.csv')

# 결측치 처리
data.fillna(0, inplace=True)

# 범주형 데이터 인코딩
encoder = LabelEncoder()
data['category'] = encoder.fit_transform(data['category'])

# 숫자형 데이터 스케일링
scaler = StandardScaler()
data[['numeric1', 'numeric2']] = scaler.fit_transform(data[['numeric1', 'numeric2']])

 

Supervised / Unsupervised learning

지도 학습은 정답 레이블이 있고, 비지도 학습은 없습니다.

 

Regression / Classification
분류는 입력 데이터를 여러 클래스 중 하나로 분류하는 작업이고, 회귀는 연속된 값을 예측하는 작업입니다.

https://www.javatpoint.com/regression-vs-classification-in-machine-learning


Hyperparameters
Hyperparameters는 learning rate, eopch, batch size, momemtum, loss function, optimizer 등 모델의 학습 과정을 조절하는 매개변수로, 사용자가 직접 세팅하는 값입니다.

 

Standardization, Normalization
Standardization은 정규분표를 표준정규분포로 변환하여 평균은 0, 분산은 1이 되도록 scale을 변환하는 것이고, Normalization은 scale이 0~1 사이의 값이 되도록 최댓값과 최솟값을 사용합니다.

Standardization은 feature가 정규분포일 때 유용하고, Normalization은 분포를 모를 때 유용합니다.

둘 다 scale이 큰 feature의 영향이 너무 커지지 않도록 방지하는데 쓰입니다.

https://www.simplilearn.com/normalization-vs-standardization-article

더보기

아래 예시에서는 scikit-learn의 StandardScaler와 MinMaxScaler를 사용하여 Standardization과 Normalization을 적용한 예시를 보여줍니다. 입력 데이터는 2차원 배열로 구성되어 있으며, 각각의 스케일러를 사용하여 데이터를 변환한 결과를 출력합니다.

from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 예제 데이터 생성
data = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]

# Standardization을 적용한 예시
scaler_standard = StandardScaler()
data_standardized = scaler_standard.fit_transform(data)

print("Standardization 결과:")
print(data_standardized)

# Normalization을 적용한 예시
scaler_minmax = MinMaxScaler()
data_normalized = scaler_minmax.fit_transform(data)

print("\nNormalization 결과:")
print(data_normalized)

 

>>>

Standardization 결과:
[[-1.41421356 -1.41421356]
 [-0.70710678 -0.70710678]
 [ 0.          0.        ]
 [ 0.70710678  0.70710678]
 [ 1.41421356  1.41421356]]

Normalization 결과:
[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [0.75 0.75]
 [1.   1.  ]]

'IT > AI' 카테고리의 다른 글

딥러닝 기초 핵심 개념 1  (0) 2024.03.08
머신러닝 기초  (0) 2024.03.07
인공 신경망 기초  (0) 2024.03.06
[이미지] CustomDataset [Python] - cv2, PIL  (0) 2023.09.07