[6주차 - Day2] 기계학습과 수학 리뷰

2023. 5. 12. 12:12BOOTCAMP/프로그래머스 인공지능 데브코스

기계학습에서의 수학 역할

- 수학은 목적함수를 정의하고, 목적함수의 최저점을 찾아주는 최적화 이론을 제공합니다.

- 최적화(optimization) 이론에 학습률(learning rate), 멈춤 조건과 같은 제어를 추가하여 알고리즘 구축

- 사람은 알고리즘을 설계하고, 데이터를 수집

 

벡터(vector)

- 샘플을 특징 벡터로 표현(feature vector)

예) Iris 데이터에서 꽃받침의 길이, 꽃받침의 너비, 꽃잎의 길이, 꽃잎의 너비라는 4개의 특징이 각각 5.1, 3.5, 1.4, 0.2인 샘플

- 요소의 종류와 크기 표현

- 데이터 집합의 여러 개 특징 벡터를 첨자로 구분

 

행렬(matrix)

- 여러 개의 벡터를 담음

- 훈련집합을 담은 행렬을 설계행렬(design matrix)이라 부름

예) Iris 데이터에 있는 150개의 샘플을 설계 행렬 X로 표현

텐서(tensor)

- 3차원 이상의 구조를 가진 숫자 배열(array)

  - 0차 = 수(scalar)

  - 1차 = 벡터

  - 2차 = 행렬

  - 고차원

예) 3차원 구조의 RGB 컬러 영상

퍼셉트론(perceptron)

- 1958년 고안한 분류기(classifier) 모델

- 퍼셉트론의 동작을 수식으로 표현

계산 그래프

# Numpy

import numpy as np
np.random.seed(0)

N, D = 3, 4

x = np.random.randn(N, D)
y = np.random.randn(N, D)
z = np.random.randn(N, D)

a = x * y
b = a + z
c = np.sum(b)

grad_c = 1.0
grad_b = grad_c * np.ones((N, D))
grad_a = grad_b.copy()
grad_z = grad_b.copy()
grad_x = grad_a * y
grad_y = grad_a * x
# PyTorch

import torch

device = 'cuda:0'
N, D = 3, 4
x = torch.randn(N, D, requires_grad = True,
                device = device)
y = torch.randn(N, D, device=device)
z = torch.randn(N, D, device=device)

a = x * Y
b = a + z
c = torch.sum(b)

c.backward()
print(x.grad)