# 용어 정리: units를 node, neuron 등으로 표현하기도 함.
# flatten이 입력층을 의미.
# 아래의 모델은 입력 - 은닉층 - 출력층으로 구성된 모델.
model = tf.keras.Sequential([
# 입력층 (Flatten)
tf.keras.layers.Flatten(input_shape=(28, 28)),
# 은닉층 (Dense): 활성화 함수에 렐루함수를 사용
tf.keras.layers.Dense(128, activation='relu'),
# 출력층 (Dense): 함수를 언급하지 않았으므로 default 함수인 softmax를 사용
tf.keras.layers.Dense(10)
])
훈련 중 모델이 얼마나 정확한지 측정합니다. 모델을 올바른 방향으로 "조정"하려면 이 함수를 최소화해야 합니다. loss값을 보고 label이 어떤 형태인 지 알 수 있습니다.
모델이 인식하는 데이터와 해당 손실 함수를 기반으로 모델이 업데이트되는 방식입니다.
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
훈련 및 테스트 단계를 모니터링하는 데 사용됩니다. 다음 예에서는 올바르게 분류된 이미지의 비율인 정확도를 사용합니다.
뉴런의 시냅스가 전기신호를 출력하듯이, 은닉층과 출력층 사이에서도 출력값을 결정하는 함수이다. 뉴런이 신호를 생성하는 것이 출력값에서 가중치를 조정하는 것과 유사하다. 선형 결합들을 다양한 형태의 비선형 결합을 조절해준다.
Sigmoid
: 모델 제작에 필요한 시간을 단축시킴
: 미분 범위가 짧아 기울기 손실(정보손실, Gradient Vanishing) 현상이 나타난다.
: 로지스틱 회귀(logistic regression), 이진 분류 (binary classification) 등
tanh
: 데이터 중심을 0으로 위치시키는 효과로, 다음 층의 학습에 용이한 형태가 됨 (sigmoid와 비교 시, 출력 범위가 더 넓으며, 경사면이 큰 범위가 더 크기 때문에 수렴 속도가 빨라져 학습 성능이 개선됨)
: sigmoid와 동일하게, 정보 손실 발생.