퍼셉트론(Perceptron) : 신경망을 이루는 가장 기본 단위
→ 다수의 신호를 입력으로 받아 하나의 신호를 출력
→ 입력 값 = 여러 개, 출력 값 = 1개
ANN(Artificial Neural Networks) : 실제 신경계를 모사하여 만들어진 계산 모델, 줄여서 뉴럴넷(Neural-Net)
신경망은 퍼셉트론(Node)을 여러 층으로 쌓아서 만든다.
이렇게 여러 개의 층으로 쌓아 구축한 신경망을 다층 퍼셉트론 신경망(Multi-Layer Perceptron, MLP)라고 한다. 이를 이용해서 XOR 문제를 해결할 수 있다. 단층 퍼셉트론으로는 해결X
# Sequential API : 레이어를 순차적으로 연결하여 신경망을 구성하는 방법
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(1, activation='sigmoid')
])
# tf.keras.models.Sequential()을 model로 선언
# .add()를 통해 모델 내 레이어를 추가
# 추가된 레이어는 순차적으로 연산이 진행
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
# Functional API
# 각 레이어마다 변수로 선언하고 이를 이용해 신경망을 구성하는 방식입니다.
input = tf.keras.layers.Input(shape=(2,))
output = tf.keras.layers.Dense(1, activation='sigmoid')(input)
model = tf.keras.models.Model(inputs=input, outputs=output)
# .compile() : 신경망을 구성한 다음 신경망의 학습 방법을 결정
model.compile(optimizer='sgd',
loss='binary_crossentropy',
metrics=['accuracy']) # 학습 지표를 정확도로 설정
model.fit(X_train, y_train, epochs=30)
model.evaluate(X_test, y_test, verbose=2)
뉴런(노드) : 신경망을 구성하는 하나의 단위
연결(가중치, 편향)
입력층(Input layer)/은닉층(Hidden layers)/출력층(Output layer)
1) 이진 분류
→ 출력층의 노드 수 : 1개 (0과 1사이의 확률값)
→ 활성화 함수 : 시그모이드 함수
→ 손실 함수 : binary_crossentropy
2) 다중 분류
→ 출력층의 노드 수 : 레이블 클래스 수
→ 활성화 함수 : 소프트맥스
→ 손실 함수 : sparse_categorical_crossentropy(정수형태) / categorical_crossentropy (원핫인코딩 형태)
3) 회귀
→ 출력층의 노드 수 : 출력값의 특성 수
→ 활성화 함수 : X
→ 손실 함수 : MSE