딥 러닝 기초 (1)

오리·2022년 11월 30일
0

ML/DL

목록 보기
4/4

딥러닝이란?

머신러닝부터 공부해오다 보니 딥러닝과 머신러닝의 정의에 대한 모호함이 남아있어서 딥러닝에 대해서 정리를 해보려고 한다.

뉴럴 네트워크는 위 사진에서 보듯 신경과학에서 처음 나온 말이다. 뉴런의 기본적인 작동 방식은 수상돌기에서 정보를 받아오고 핵에서 일련의 가중치를 부과하는 과정을 거치고, 축삭으로 보내져서 또 다른 프로세스를 거친 후 수상돌기를 거쳐 또 다른 뉴런으로 보내진다.


이제 위 그림을 뉴런의 과정으로 이해할 수 있다. 각 노드가 하나의 뉴런이라고 생각하면 Input에는 수상돌기와 같이 정보를 받아오는 역할을 하고 노드에서 y=∑xw+b와 같은 가중치를 부과하는 작업을 거치고 σ(y)와 같은 비선형 처리를 거친 후 다음 뉴런으로 연결된다. 이러한 일련의 과정이 합쳐져 뉴럴 네트워크를 형성한다.

Regression과 상당히 닮아있다고 생각이 들었다.

이러한 뉴럴 네트워크 또한 복잡한 행렬의 곱으로 표현된 Cost function과 Optimization을 거치며 최적화 방향으로 나아가게 된다.

모델을 최적화 하는 과정에서 사용되는 Activation function, Cost function, Optimization 등에는 다양한 알고리즘들이 있지만 다음에 더 알아보는 것으로 하고 파이썬으로 뉴럴 네트워크 모델을 먼저 짜보려고 한다.

뉴럴 네트워크 구현

PyTorch를 사용한 기본적인 뉴럴 네트워크를 설계해보려고 한다.

라이브러리 불러오기

import torch
import torch.nn as nn
import torch.optim as optim
import torch.utils.data

nn.Module을 넘겨받아 NN 뉴럴 네트워크 설계

class NN_comp1 (nn.Module):

  def __init__(self):
    super().__init__()

    self.fc1 = nn.Linear(43,22)
    self.fc2 = nn.Linear(22,16)
    self.fc3 = nn.Linear(16,8)
    self.fc4 = nn.Linear(8,1)

    self.sigmoid = nn.Sigmoid()
    self.relu = nn.ReLU()

    self.batchnorm1 = nn.BatchNorm1d(22)
    self.batchnorm2 = nn.BatchNorm1d(16)
    self.batchnorm3 = nn.BatchNorm1d(8)

  def forward(self,x):
    
    y = self.fc1(x)
    y = self.batchnorm1(y)
    y = self.relu(y)

    y = self.fc3(y)
    y = self.batchnorm2(y)
    y = self.relu(y)

    y = self.fc3(y)
    y = self.batchnorm3(y)
    y = self.relu(y)

    y = self.fc4(y)

    return self.sigmoid(y)

Input layer, Output Layer와 3개의 Hidden Layer를 갖고 Activation function을 ReLU 함수로 갖고, 이진 분류를 위한 sigmoid 함수를 통과하는 뉴럴 네트워크 모델을 설계해보았다. 아래에 간단한 모식도를 그려보았다.

다음에는 여러가지 다른 function에 대해 공부해보려고 한다.

profile
안녕하세요:)

0개의 댓글