Deep Learning
: 기계가 인간의 뉴런, 신경망을 모방하여 데이터를 학습 및 예측하는 기술
Perceptron
: 딥러닝 모델 구성하는 기본단위
: 선형모델 + 활성화함수(역치)
모델링 순서
- 신경망 구조 설계
- 뼈대 생성 (Sequential)
- 입력층 (InputLayer(shape=(?,?)))
- 입력 특성의 형태를 지정
- 중간층,은닉층 (Dense(units=?, activation=?))
- 출력층 (Dense(units=?, activation=?))
- 출력하고자 하는 데이터의 형태 지정
- 학습방법 및 평가방법 설정 (compile(loss, optimizer, metrics))
- 모델학습 (model.fit(X_train,y_train,validation_split=?,epochs=반복횟수))
- 모델 예측 및 평가 (model.evaluate(X_test,y_test))
활성화함수 activation
: 중간층, 출력층 (활용도가 다름)
- 중간층 : 활성화/비활성화 여부(역치_활성화하기 위해 필요한 최소 자극)
- 초기 : step_function(계단함수) -> sigmoid(시그모이드) -> relu
-> sigmoid를 활성화함수로 사용했을 때 vanishing gradient가 일어나서!
- 출력층 : 출력하고자 하는 데이터의 형태를 지정
- 회귀 : Linear(항등함수, y=x) 선형모델이 예측한 결과를 그대로 출력 -> default 값이므로 별도로 작성하지 않아도 무방
- 이진분류 : sigmoid(시그모이드) 선형모델이 예측한 연속형데이터를 0~1사이의 확률값 변경해주기 위함
- 다중분류 : softmax(소프트맥스) 클래스 개수만큼의 결과값이 전체 합이 1인 결과로 변경
units의 개수
: 출력하고자 하는 데이터의 개수에 따라 units의 개수 지정
- 회귀 : units = 1
- 이진분류 : units = 1 (1개의 확률값, 맞는지 아닌지에 대한 판별)
- 다중분류 : units = 클래스의 개수
compile
: 학습방법 및 평가방법 설정
- loss(손실함수, 비용함수) :
- 회귀 : mse(평균제곱오차)
- 이진분류 : binary_crossentropy
- 다중분류 : categorical_crossentropy
-> 문제발생(모델의 출력결과와 정답데이터의 형태가 달라 오류)
-> sparse_categorical_crossentropy로 변경
- optimizer(최적화함수)
- 경사하강법(GD, Gradien Discent) : 모든 전체데이터를 사용하여 학습
- 확률적 경사하강법(SGD) : 일부데이터를 사용하여 학습(batch_size : 32(default))
- 모멘텀(Momentum) : 관성, 이전 배치를 고려
- 네스테로프 모멘텀(NAG) : 이전배치 + 이후배치까지 고려
- 에이다그래드(AdaGrad) : 보폭의 크기(Learning rate) 고려
- Adam : 보폭 크기 방향을 모두 고려
- metrics(평가지표)
- 회귀 : mse(평균제곱오차)
- 분류 : accuracy(정확도)