딥러닝(정리)

정재호·2024년 9월 7일

[딥러닝 개념정리]

  • 딥러닝이란?
    기계가 인간의 뉴런, 신경망을 모방하여 데이터를 학습 및 예측하는 기술

  • 퍼셉트론(perceptron)?
    딥러닝 모델을 구성하는 기본 단위 (퍼셉트론 = 선형모델 + 활성화함수)

  • 모델링 순서
  1. 신경망 구조 설계
  • 뼈대 생성 (Sequential())
  • 입력층 (InputLayer(shape = (, ))) 입력특성의 형태를 지정
  • 중간층, 은닉층 (Dense(units = ? , activation = ? ))
  • 출력층 (Dense(units = ?, activation = ?))출력하고자하는 데이터의 형태를 지정
  1. 학습방법 및 평가방법 설정 (compile(loss, optimizer, metrics))
  2. 모델학습 (model.fit(X_train, y_train, validation_split = ?, epochs = 반복횟수))
  3. 모델 예측 및 평가 (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(정확도)
profile
성장하는 하루가 되자

0개의 댓글