- 모델 - batch size 단위로 추론
- 손실함수(Loss Function) - 모델이 추론한 것과 정답간의 Loss(손실-오차)의 평균
- 옵티마이저(Optimizer) - 파라미터들(weight) 업데이트
모델이 추론하기 위한 각 단계를 정의
실제 처리를 담당하는 Unit들을 모아놓은 구조
신경망의 구조와 기능을 정의하며, 데이터의 흐름과 변환을 담당
Input Layer(입력층)
Hidden Layer(은닉층)
Output Layer(출력층)
대부분 Layer들은 학습을 통해 최적화할 Paramter를 가짐
Layer들 연결한 것 = Network
다양한 Layer
1. 모델 (Network)
1.1 활성 함수 (Activation Function)

Sigmoid (logistic function)

Hyperbolic tangent

ReLU(Rectified Linear Unit)

Leaky ReLU

Softmax
1.2 Hidden Layer 에 (비선형) 활성함수 적용 여부에 따른 결과 확인
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
def func(x):
return 3*x**2 + 2 + np.random.rand(*x.shape)*3
# randn() : 평균-0, 표준편차-1 (표준정규분포)를 따르는 난수 생성
X = np.random.randn(100, 1) # (데이터개수, 1)
y = func(X)
plt.scatter(X, y)
plt.show()

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
activation 함수를 사용하지 않은 모델
model1 = keras.Sequential() # 빈 모델 생성
# 모델에 layer들 추가
model1.add(layers.InputLayer(input_shape=(1, ))) # input layer - 입력데이터 shape
# Hidden
model1.add(layers.Dense(10))
# Output layer : 회귀 - 추론값이 1개이므로 unit을 1개로 지정
model1.add(layers.Dense(1))
# 모델 컴파일
model1.compile(optimizer='adam', loss='mse')
# 학습
model1.fit(X, y, epochs=200)

plt.plot(X_new, pred_y, color='r')
plt.show()

⇒ Underfitting 발생
activate 함수를 사용한 모델
model2 = keras.Sequential([
# 첫번째 layer에 input shape을 지정하면 Inputlayer을 추가하지 않아도 된다.
layers.Dense(10, input_shape=(1, )),
# 비선렬 활성함수
layers.ReLU(),
# 출력 layer
layers.Dense(1)
])
model2.compile(optimizer='adam', loss='mse')
model2.fit(X, y, epochs=200)

⇒ activate 함수를 사용하니까 오차가 줄었음
X_new = np.linspace(-2, 2, 1000).reshape(1000, 1)
pred_y = model2.predict(X_new)
plt.scatter(X, y)
plt.plot(X_new, pred_y, color='r')
plt.show()

2. 손실함수(Loss function, 비용함수)
2.1 Classification (분류)
𝑙𝑜𝑔(모델이출력한정답에대한확률)2.2 평가지표 (Metrics)
2.3 문제별 출력레이어 Activation 함수, Loss 함수 (*암기)

sparse_categorical_crossentropy : categorical_crossentropy를 계산하기 전에 y(정답)을 one hot encoding 처리한다3. Optimizer (최적화 방법)
신경망의 가중치와 편향을 조정하여 손실 함수를 최소화하는 최적의 모델 파라미터(weight, bias)를 찾는 최적화 알고리즘
경사하강법(Gradient Descent)와 오차 역전파(back propagation) 알고리즘을 기반으로 파라미터들을 최적화
Gradient Decent (경사하강법)
오차 역전파(Back Propagation)
3.1 계산 그래프 (Computational Graph)
3.2 파라미터 업데이트 단위
1step의 data 단위
Batch Gradient Decent (배치 경사하강법)
Mini Batch Stochastic Gradient Decent (미니배치 확률적 경사하강법)
1epoch당 1 step 수 = data 수 / batch 수
배치 경사하강법과 확률적 경사하강법의 장점을 결합한 옵티마이저
학습 데이터를 작은 미니배치(mini-batch)로 나누어 각 미니배치에 대한 손실 함수의 그래디언트를 계산하고, 이를 사용하여 가중치를 업데이트
미니배치의 크기는 일반적으로 2의 제곱수 ex) 32, 64, 128…
장점 : 계산 비용 줄임, 배치 경사하강법에 비해 빠른 학습 속도
*스텝(Step): 한번 파라미터를 업데이트하는 단위

SGD를 기반으로 한 주요 옵티마이저
