[딥러닝 개념정리]
딥러닝이란?
기계가 인간의 뉴런, 신경망을 모방하여 데이터를 학습 및 예측하는 기술
퍼셉트론(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 -> 중간층, 출력층 (활용도가 다름)]
- 중간층: 활성화/비활성화 (역치_활성화하기위해 필요한 최소 자극)
- 초기: stepfunction(계단함수) -> sigmoid(시그모이드) -> relu(렐루)
왜?시그모이드를 활성화함수로 사용하여 층을 깊게 쌓았더니 기울기
소실 (vanishing gradient)
- 출력층: 출력하고자하는 데이터의 형태를 지정
- 회귀 : linear(항등함수 , y = x) 선형모델이 예측한 결과를 그대로 출력 -> default 값 별도로 작성하지 않아도 무방
- 이진분류: sigmoid(시그모이드) 선형모델이 예측한 연속형데이터를 0과1사이의 확률값으로 변경해주기 위함
- 다중분류: softmax(소프트맥스) 클래스 개수만큼의 결과값을 전체 합이 1인 결과로 변경
[출력하고자하는 데이터의 개수에 따라 units 의 개수]
- 회귀: units = 1
- 이진분류: units = 1 , 1개의 확률값(인지아닌지에 대한 판별)
- 다중분류: units = 클래스의 개수
[학습방법 및 평가방법 설정 -> compile]
- loss(손실함수, 비용함수)
- 회귀: mse (평균제곱오차)
- 이진분류: binary_crossentropy
- 다중분류: categorical_crossentropy -> 문제발생! -> 모델의 출력결과와 정답데이터의 형태가 달라 오류 발생 ->
sparse_categorical_crossentropy
.- optimizer(최적화함수)
- 'GD'경사하강법(Gradient Descent) -> 전체데이터를 사용하여 학습
- 'SGD'확률적 경사하강법 -> 일부데이터를 사용하여 학습 /
batch_size = 32(default)
- 'Momentum': 관성, 이전배치를 고려
- 'NAG': 이전배치 + 이후배치까지 고려
- 'AdaGrad': 보폭의 크기를 고려(learning_rate 학습률)
- 'Adam':보폭의 크기와 방향을 모두 고려- metrics (평가지표)
- 회귀: mse(평균제곱오차)
- 분류: accuracy(정확도)