- TensorFlow - 구글 머신러닝 플랫폼
- 1. 텐서 기초 살펴보기
- 2. 간단한 신경망 만들기
- 3. 손실 함수 살펴보기
- 4. 옵티마이저 사용하기
- 5. AND 로직 연산 학습하기
- 6. 뉴런층의 속성 확인하기
- 7. 뉴런층의 출력 확인하기
- 8. MNIST 손글씨 이미지 분류하기
- 9. Fashion MNIST 이미지 분류하기
- 10. 합성곱 신경망 사용하기
- 11. 말과 사람 이미지 분류하기
- 12. 고양이와 개 이미지 분류하기
- 13. 이미지 어그멘테이션의 효과
- 14. 전이 학습 활용하기
- 15. 다중 클래스 분류 문제
- 16. 시냅스 가중치 얻기
- 17. 시냅스 가중치 적용하기
- 18. 모델 시각화하기
- 19. 훈련 과정 시각화하기
- 20. 모델 저장하고 복원하기
- 21. 시계열 데이터 예측하기
- 22. 자연어 처리하기 1
- 23. 자연어 처리하기 2
- 24. 자연어 처리하기 3
- 25. Reference
- tf.cast
- tf.constant
- tf.keras.activations.exponential
- tf.keras.activations.linear
- tf.keras.activations.relu
- tf.keras.activations.sigmoid
- tf.keras.activations.softmax
- tf.keras.activations.tanh
- tf.keras.datasets
- tf.keras.layers.Conv2D
- tf.keras.layers.Dense
- tf.keras.layers.Flatten
- tf.keras.layers.GlobalAveragePooling2D
- tf.keras.layers.InputLayer
- tf.keras.layers.ZeroPadding2D
- tf.keras.metrics.Accuracy
- tf.keras.metrics.BinaryAccuracy
- tf.keras.Sequential
- tf.linspace
- tf.ones
- tf.random.normal
- tf.range
- tf.rank
- tf.TensorShape
- tf.zeros
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
3. 손실 함수 살펴보기¶
손실 함수 (Loss function)는 Neural Network의 예측이 얼마나 잘 맞는지 측정하는 역할을 합니다.
손실 함수로부터 얻어진 손실값 (Loss value)은 훈련 과정에서 Neural Network가 얼마나 잘 훈련되었는지 확인하는 지표가 됩니다.
Mean Squared Error 손실 함수를 사용해서 모델의 손실값을 확인하는 과정에 대해 소개합니다.
■ Table of Contents
1) Neural Network 구성하기¶
아래의 코드는 하나의 입력을 받고 세 개의 출력 노드를 갖는 Neural Network를 구성합니다.
import tensorflow as tf
from tensorflow import keras
import numpy as np
model = keras.Sequential([keras.layers.Dense(units=3, input_shape=[1])])
tf.keras 모듈의 Sequential 클래스는 Neural Network의 각 층을 순서대로 쌓을 수 있도록 합니다.
tf.keras.layers 모듈의 Dense 클래스는 (완전 연결된) 하나의 뉴런층을 구현합니다.
units는 뉴런 또는 출력 노드의 개수를 의미하며, 양의 정수로 설정합니다.
input_shape는 입력 데이터의 형태를 결정합니다.
2) Neural Network 컴파일하기¶
모델을 구성했다면, 이 모델을 훈련하기 전에 손실 함수와 옵티마이저를 지정해주는 컴파일 과정이 필요합니다.
model.compile(loss='mse')
compile() 메서드의 loss 파라미터를 이용해서 손실 함수를 ‘mse’로 지정했습니다.
mse는 Mean Squared Error의 줄임말이며 아래의 수식을 이용해서 평균 제곱 오차를 계산하는 방식입니다.
\(n\)은 출력값의 개수.
\(y_i\)는 관측값 (목표값).
\(\hat{y}_i\)는 예측값.
예측치와 관측값의 차이인 오차의 제곱에 비례해서 손실 함수로부터 계산되는 손실값이 커집니다.
3) Neural Network 예측하기¶
predict() 메서드를 이용해서 Neural Network의 예측값 (predicted value)을 얻을 수 있습니다.
pred = model.predict([0])
print(pred)
[[0. 0. 0.]]
임의로 생성된 모델의 가중치 값 (weights)이 있지만, 입력이 0이므로 예측값도 모두 0을 출력합니다.
4) Neural Network 손실 계산하기¶
evaluate() 메서드는 예측값과 관측값 사이의 손실값을 반환합니다.
model.evaluate([0], [[0, 1, 0]])
1/1 [==============================] - 0s 33ms/sample - loss: 0.3333
evaluate() 메서드를 호출하면 손실 값 (loss)을 출력합니다.
모델의 손실 함수를 Mean Squared Error로 지정했기 때문에, 손실 값 0.3333은 아래와 같이 계산된 결과입니다.