[머신러닝] 딥러닝

seonyoung·2024년 9월 3일
0

📁 딥러닝

<머신러닝 vs 딥러닝>

  • 머신러닝과 딥러닝은 내부 구조와 활용범위가 다를 뿐 기본적인 흐름은 같음
  • 다만 딥러닝은 자연어처리와 이미지 처리에 뛰어난 발전을 이룸
  • 공통점 : 데이터로부터 가중치를 학습하여 패턴을 인식하고 결정을 내리는 알고리즘 개발과 관련된 인공지능(AI)의 하위 분야
  • 차이점
    • 머신러닝 : 데이터 안의 통계적 관계를 찾아내며 예측이나 부류를 하는 방법
    • 딥러닝 : 머신러닝의 한 분야로 신경세포 구조를 모방한 인공 신경망을 사용함

<딥러닝의 유래>

  • 인공 신경망(Artificial Neural Networks)
    • 인간의 신경세포를 모방하여 만든 망(Networks)
  • 신경세포 : 이전 신경세포로 들어오는 자극을 이후 신경세포로 전기신호로 전달하는 기능을 하는 세포
  • 퍼셉트론(Perceptron) : 인공 신경망의 가장 작은 단위
  • 선형회귀식
Y^=w0+w1X\hat{Y} = w_0 + w_1X
Y=w0+w1X+bY = w_0 + w_1X +b
  • 몸무게와 키 데이터
    • Y: 키
    • X: 몸무게
    • w0w_0: 100 로 임의로 설정
    • w1w_1: 1 로 임의로 설정
    • b(편향, bias): 실제 Y값 - 예측 Y
  • 키-몸무게 데이터에 대한 퍼셉트론

<가중치 구하기 - Gradient Descent>

ex)

  • 늦은 밤 산을 하산하는 가장 쉬운 방법은?
    - A) 밑으로 밑으로 향하면 됨
  • 회귀 문제에서 최소화 하려는 값은?
    - Mean Squared Error(MSE): 에러을 제곱한 총합의 평균
    - 즉, 가중치(weight)를 이리 저리 움직이면서 최소의 MSE를 도출
    - 이렇게 최소화하려는 값을 목적 함수 혹은 손실 함수(cost function)이라고 명명

    → 📌 경사 하강법(Gradient Descent) : 모델의 손실 함수를 최소화하기 위해 모델의 가중치를 반복적으로 조정하는 최적화 알고리즘(weight를 찾기 위한 직관적이고 빠른 계산 방법)
    → 변수 X가 여러 개 있다면 동시에 여러 개의 값을 조정하면서 최소의 값을 찾으면 됨

<활성화 함수>

  • 타이타닉 문제에서 사망, 생존과 같은 비선형적분류를 만들기 위해 활성화 함수(Acitvation Fucntion)을 사용하게 됨
  • 로지스틱회귀 때 배웠던 로지스틱 함수 역시 활성화 함수의 한 예

<히든 레이어의 등장>

  • 데이터를 비선형적으로 변환함과 동시에 데이터의 고차원적 특성(ex 이미지, 자연어)을 학습하기 위해 중간에 입력과 결과 외의 추가하게 되는 숨은 층(Hidden Layer)의 개념이 등장

    → 📌 하지만, 히든 레이어를 추가할 수록 더 좋은 모델이 나올 줄 알았으나, 실제로는 기울기 소실이라는 문제가 발생(그 이유는 인공 신경망의 학습 과정에 있음)
  • 인공 신경망의 학습
    • 입력 데이터가 신경망의 각 층을 통과하면서 최종 출력까지 생성되는 과정을 순전파(Propagation)
    • 신경망의 오류를 역방향으로 전파하여 각 층의 가중치를 조절하는 과정을 역전파(Backpropagation)
  • 기울기 소실 문제 등장
    - 문제 : 역전파 과정에서 하위 레이어로 갈수록 오차의 기울기가 점점 작아져 가중치가 거의 업데이트 되지 않는 현상
    - 해결 : 특정 활성화 함수(ex Relu)를 통해 완화 하게 됨
  • 각 명칭에 대한 정리
    • Input Layer : 주어진 데이터가 벡터(Vector)의 형태로 입력됨
    • Hidden Layer : Input Layer와 Output Layer를 매개하는 레이어로 이를 통해 비선형 문제를 해결할 수 있게 됨
    • Output Layer : 최종적으로 도착하게 되는 Layer
      • Activation function(활성화 함수) : 인공신경망의 비선형성을 추가하며 기울기 소실 문제 해결함

<딥러닝의 복습>

  • 딥러닝에서 동일한 데이터에 대해서 여러 번 공부 할 수 있음
  • epoch : 전체 데이터가 신경망을 통과하는 한 번의 사이클
    • 1000 epoch : 데이터 전체를 1000번 학습
  • batch : 전체 훈련 데이터 셋을 일정한 크기의 소 그룹으로 나눈 것
  • iteration : 전체 훈련 데이터 셋을 여러 개(=batch)로 나누었을 때 배치가 학습되는 횟수

    ex) 1000개의 데이터 batch size 100개라면, 1 epoch에는 iteration은 10번 일어나며 가중치 업데이트도 10번 진행

📁 Tensorflow 패키지

  • tensorflow.keras.model.Sequential
    • model.add: 모델에 대한 새로운 층을 추가함
      • unit
    • model.compile: 모델 구조를 컴파일하며 학습 과정을 설정
      • optimizer : 최적화 방법, Gradient Descent 종류 선택
      • loss : 학습 중 손실 함수 설정
        • 회귀: mean_squared_error(회귀)
        • 분류: categorical_crossentropy
      • metrics : 평가척도
        • mse: Mean Squared Error
        • acc : 정확도
        • f1_score: f1 score
    • model.fit: 모델을 훈련 시키는 과정
      • epochs: 전체 훈련 데이터 셋에 대해 학습을 반복하는 횟수
    • model.summary(): 모델의 구조를 요약하여 출력
  • tensorflow.keras.model.Dense: 완전 연결된 층
    • unit: 층에 있는 유닛의 수. 출력에 대한 차원 개수
    • input_shape:1번째 층에만 필요하면 입력데이터의 형태를 지정
  • model.evaluate: 테스트 데이터를 사용하여 평가
  • model.predict: 새로운 데이터에 대해서 예측 수행

📁 딥러닝의 활용 예시

<자연어처리(가장 간단)>

  • 인간의 언어를 데이터 화 하는 것
  • ex) 단어의 빈도 수 기반 데이터 화(Bag of Words)

📁 딥러닝 이미지 예시

  • 이미지는 색깔이 이미 데이터이기 때문에 합성 곱 연산을 통해 딥러닝 모델에 학습하고 이미지를 생성하는 방식으로 발전

<이미지는 원래 데이터 기반>

  • 이미지도 RGB 256개의 데이터로 이루어진 데이터의 집합
  • 3차원 데이터를 모델에 학습 시킴
    ex) 숫자 2를 예측하는 딥러닝의 구조

    ex) 합성 곱(CNN) 연산의 예시
profile
원하는 바를 이루고 싶은 사람입니다.

0개의 댓글