퍼셉트론 : 신경망을 이루는 가장 기본 단위, 다수의 신호를 입력으로 받아 하나의 신호를 출력
신경망 : 다수의 input을 layer에서 weight를 주어 계산하고 그 값을 activation function을 통해 변환하고 다음 layer로의 값 전달여부를 결정하는 과정.
신경망 학습 : 초기의 weight를 결과값에 맞추어 변화시키는 과정
XOR : 입력신호가 다를 때 1을 출력
activation function : 데이터를 비선형으로 변환시켜줌, sigmoid / ReLU
layer별 가중치 shape 기억하기, 제일 처음 input : (1,n)
입력층
신경망의 층수를 셀 때 입력층은 포함하지않는다.
은닉층
2개 이상의 은닉층을 가지는 신경망을 딥러닝이라고 한다.
출력층
- 회귀 문제에서는 활성화함수가 필요하지않다.
- 이진 분류 문제의 경우 시그모이드 함수를 사용해서 출력을 확률 값으로 변환가능
- 다중클래스 분류의 경우 출력층 노드가 클래스 수 만큼 존재하며 소프트맥스 함수를 사용가능(수식넣기)
tensorflow 설치
!pip install tensorflow-gpu==2.0.0-rc1
tensorflow 코드
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
# 1.
model = Sequential()
model.add(Dense(8, input_dim=4, init='uniform', activation='relu')) #input_shape=(,4) 이런식으로도 지정가능, init은 초기 weight 잡아주기
import tensorflow as tf
# 2.
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28,28)),
tf.keras.layers.Dense(100, activation='relu')])
#결과 보기
model.fit(X_train, y_train, epochs=10, validation_data = (X_test, y_test))
model.summary()
test_loss, test_acc = model.evaluate(X_test, y_test, verbose=2)
loss function : 결과값이 원래값과 얼마나 차이가 나는지를 계산해주는 함수
optimizer : 결과값을 보고 가중치를 업데이트 해야하는데 어떤 방식으로 업데이트할지??
batch size : 한번에 얼만큼의 데이터를 사용하여 학습할 것인지
epoch : 전체 트레이닝 셋이 순전파와 역전파를 거친 학습횟수
iteration : 1-epoch를 마치는데 필요한 파라미터 업데이트 횟수, 미니배치
머신러닝 딥러닝 큰 차이점 : 딥러닝은 데이터에서 필요한 특성들을 신경망이 알아서 조합해 찾음.