AI 부트캠프 - 12일차

Cookie Baking·2024년 10월 17일

AI 부트 캠프 TIL

목록 보기
11/42

딥러닝

  • 인공지능 : 인공지능은 인간의 지능을 모방하여 문제를 해결하는 기술을 의미함. AI는 규칙 기반 시스템으로부터 자율 학습 시스템까지 다양한 접근 방식을 포함함
  • 머신러닝 : 머신러닝은 데이터를 이용해 모델을 학습하고, 이를 통해 예측이나 결정을 내리는 기술임. 머신러닝은 AI의 하위 분야로, 지도 학습, 비지도 학습, 강화 학습 등의 방법을 포함함
  • 딥러닝 : 딥러닝은 머신러닝의 하위 분야로, 다층 신경망을 사용하여 데이터를 학습함 딥러닝은 특히 대규모 데이터와 복잡한 문제를 다루는 데 강력한 성능을 발휘함

딥러닝 개념

  • 딥러닝은 인공신경망을 기반으로 한 기계 학습의 한 분야임
  • 다층 신경망을 사용하여 데이터로부터 특징을 자동으로 학습하고, 이를 통해 복잡한 문제를 해결함
  • 입력 데이터에서 중요한 패턴을 추출하고, 이를 바탕으로 예측, 분류, 생성 등의 다양한 작업을 수행할 수 있음

딥러닝의 특징

  • 비선형 추론 : 딥러닝은 비선형 추론을 통해 복잡한 데이터의 패턴을 학습할 수 있음
  • 다층 구조 : 여러 층의 신경망을 사용하여 데이터의 고차원 특징을 학습함
  • 자동 특징 추출 : 데이터로부터 중요한 특징을 자동으로 추출하여 별도의 특징 공학 과정이 필요 없음

단일 퍼셉트론의 개념

  • 퍼셉트론은 인공 신경망의 가장 기본적인 단위로, 하나의 뉴런을 모델링한 것입니다.
  • 퍼셉트론은 입력 값을 받아 가중치를 곱하고, 이를 모두 더한 후 활성화 함수를 통해 출력값을 결정함.
  • 가중치란? 입력값에 곱하는 값을 말함 / 바이어스란? 최종적으로 더할 때 add하는 값
  • 활성화 함수란? 비선형 구조를 학습할 수 있게 해줌

다층 퍼셉트론의 구조

  • 입력층 : 다르게 들어오는 입력값(숫자 or 행렬)을 처리해주는 층을 말함
  • 은닉층 : 입력층 하나 담당
  • 출력층 : 은닉층으로부터 받아서 원하는 형태로 바꿔주는 층을 말함

다층퍼셉트론은 비선형 구조를 학습할 수 있음

손실함수의 역할

  • 손실함수는 모델의 예측 값과 실제 값 사이의 차이를 측정하는 함수
  • 손실함수는 모델의 성능을 평가하고, 최적화 알고리즘을 통해 모델을 학습시키는 데 사용됨
  • 오차를 균등하게 맞춰주는 역할

각자 도달하는 global Optimum이 다름을 주의해야 함

역전파 알고리즘의 개념

  • 역전파는 신경망의 가중치를 학습시키기 위해 사용되는 알고리즘임
  • 출력에서 입력 방향으로 손실함수의 기울기를 계산하고, 이를 바탕으로 가중치를 업데이트함

역전파의 수학적 원리

  • 연쇄 법칙을 사용해 손실함수의 기울기를 계산함
  • 각 층의 기울기는 이전 층의 기울기와 현재 층의 기울기를 곱하여 계산함
  • 이를 통해 신경망의 모든 가중치가 업데이트됨

인공 신경망 (ANN)

  • 하나의 층은 여러 개의 퍼셉트론으로 구성되어 있으며 여러 층으로 이루어진 것이 인공신경망이라고 함
  • 이때 층이 나뉘어진 이유로는 출력층을 세분화하기 위함이다.

동작방식
1. 순전파

  • 입력 데이터를 통해 각 층의 뉴런이 활성화되고, 최종 출력 값을 계산함
  • 각 뉴런은 입력 값에 가중치를 곱하고, 바이어스를 더한 후 활성화 함수를 통해 출력 값을 결정함
  1. 손실 계산
  • 예측 값과 실제 값의 차이를 손실 함수로 계산함
  • 이때 오차함수는 보통 절대값을 사용한다 함
  • 오차를 균등하게 맞춰주는 것이 특징
  1. 역전파
  • 손실함수의 기울기를 출력층에서 입력층 방향으로 개선하고, 이를 바탕으로 가중치를 업데이트 함

이해

  • 지역 최적값을 전역 최적값이라고 오해할 수도 있는데 이때는 hyper parameter을 넓게 조절하는 방법을 사용할 수 있겠음 (설정 값이 중요함)
  • 첫 번째 퍼셉트론의 결과가 두 번째 퍼셉트론의 입력으로 들어가는 것임
  • 파라미터란 딥러닝에서 업데이터하기 위한 가중치를 말함
  • 더이상 최적값이 나아지지 않다면 "수렴했다"라는 표현을 사용함

출력레이어의 유형과 활용 (최종 예측 레이어)

  1. 회귀 문제
  • 출력 레이어의 뉴런 수는 예측하려는 연속적인 값의 차원과 동일함
  • 활성화 함수로는 주로 선형 함수를 사용함
  1. 이진 분류 문제
  • 출력 레이어의 뉴런 수는 1임
  • 활성화 함수로는 시그모이드 함수를 사용하여 출력 값을 0과 1 사이의 확률로 변환함
  1. 다중 클래스 분류 문제
  • 출력 레이어의 뉴런 수는 예측하려는 클래스 수와 동일함
  • 활성화 함수로는 소프트맥스 함수를 사용하여 각 클래스에 대한 확률을 출력함

실습

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
# 데이터셋 전처리
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))
])

# MNIST 데이터셋 로드
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)

testset = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=False)

0개의 댓글