Deep Learning ✨

서은서·2023년 8월 7일
0

PyTorch

목록 보기
2/5
post-thumbnail

딥러닝이란 여러 층을 가진 인공 신경망을 사용하여 학습을 수행하는 것이다.

딥러닝은 입력층, 출력층과 두 개 이상의 은닉층으로 구성되어 있다.

  • 입력층 (input layer)
    데이터를 받아들이는 층

  • 은닉층 (hidden layer)
    모든 입력 노드부터 입력 값을 받아 가중합을 계산하고, 이 값을 활성화 함수에 적용하여 출력층에 전달하는 층

  • 출력층 (output layer)
    신경망의 최종 결괏값이 포함된 층


  • 가중치 (weight)
    조드와 조드 간 연결 강도
    👉🏻 입력으로 들어온 데이터들 중에서 어떤 feature(x)를 많이 반영하고 어떤 feature를 덜 반영할지 결정한다. 가중치가 커질수록 그 feature는 모델에 더 많은 영향을 미치게 된다.

  • 바이어스 (bias)
    가중합에 더해 주는 상수(b)로, 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절하는 역할을 한다.

  • 활성화 함수 (activation function)
    신호를 입력받아 이를 적절히 처리하여 출력해 주는 함수

  • 손실 함수 (loss function)
    가중치 학습을 위해 출력 함수의 결과와 실제 값 간의 오차를 측정하는 함수


🤖 활성화 함수

1. 시그모이드 함수

  • 0 ~ 1 사이에서 비선형 형태로 변형해 준다
  • 분류문제를 확률적으로 표현하는 데 사용한다.
  • 기울기 소멸 문제가 발생함

    ▶︎기울기 소멸 문제
    딥러닝 모델의 깊이가 깊어지면 기울기가 사라지는 문제
    활성화 함수 계산 과정에서 도함수 값이 계속 곱해지면서 가중치 결괏값이 0이 되어 더 이상 계산이 불가능한 상태이다.

2. 하이퍼볼릭 탄젠트 함수

  • 1 ~ 1 사이에서 비선형 형태로 변형해 준다.
  • '기울기 소멸 문제'가 발생함

3. 렐루 함수

  • 입력(x)이 음수일 때 0을 출력하고, 양수일 때는 x를 출력한다.
  • 경사 하강법에 영향을 주지 않아 학습 속도가 빠르고, 기울기 소멸문제가 발생하지 않는다.
  • 음수 값을 입력받으면 항상 0을 출력하기 때문에 학습 능력이 감소한다.
    👉🏻 리키 렐루 함수를 사용!

4. 리키 렐루 함수

  • 입력 값이 음수이면 0이 아닌 0.001처럼 매우 작은 수를 반환한다.

5. 소프트맥스 함수

  • 입력 값을 0 ~ 1 사이에 출력되도록 정규화하여 출력 값들의 총합이 항상 1이 되도록한다.
  • 출력 노드의 활성화 함수로 많이 사용된다.

🤖 손실 함수

경사 하강법은 학습률과 손실 함수의 순간 기울기를 이용하여 가중치를 업데이트하는 방법이다. 미분의 기울기를 이용하여 오차를 비교하고 최소화하는 방향으로 이동시키는 방법이다. 이때 오차를 구하는 방법이 손실 함수이다.

평균 제곱 오차(MSE)

  • 실제 값과 예측 값의 차이를 제곱하여 평균을 낸 것이 평균 제곱 오차이다.
  • 회귀에서 손실 함수로 주로 사용된다.

크로스 엔트로피 오차(Cross Entropy Error)

  • 분류 문제에서 one-hot encoding했을 때만 사용할 수 있는 오차 계산법이다.
  • 일반적으로 분류 문제에서는 데이터의 출력을 0과 1로 구분하기 위해 시그모이드 함수를 사용하는데, 이 때 평균 제곱 오차를 적용하면 매끄럽지 못한 그래프가 출력된다.
    👉🏻 이 때 크로스 엔트로피 손실 함수를 사용한다.
  • 경사 하강법 과정에서 학습이 지역 최소점(local minimum)에서 멈출 수 있기에 자연 로그를 모델의 출력 값에 취한다.

🤖 딥러닝 학습

  • 순전파 : 네트워크에 훈련 데이터가 들어올 때 발생하며, 데이터를 기반으로 예측 값을 계산하기 위해 전체 신경망을 교차해 지나간다.
  • 역전파 : 손실 함수 비용이 0에 가깝도록 하기 위해 모델이 훈련을 반복하면서 가중치를 조정한다. 손실(오차)이 계산되며 정보가 역(출력층 -> 은닉층 -> 입력층)으로 전파된다.

경사 하강법

1. 배치 경사 하강법

  • 전체 데이터셋에 대한 오류를 구한 후 기울기를 한 번만 계산하여 모델의 파라미터를 업데이트하는 방법

2. 확률적 경사 하강법

  • 임의로 선택한 데이터에 대해 기울기를 계산하는 방법으로 적은 데이터를 사용하므로 빠른 계산이 가능하다.

3. 미니 배치 경사 하강법

  • 전체 데이터셋을 미니 배치 여러개로 나누고, 미니 배치 한 개마다 기울기를 구한 후 그것의 평균 기울기를 이용하여 모델을 업데이트해서 학습하는 방법이다.

🤖 딥러닝 알고리즘

심층 신경망(DNN)

심층 신경망은 입력층과 출력층 사이에 다수의 은닉층을 포함하는 인공 신경망이다.
다수의 은닉층을 두었기 때문에 다양한 비선형적 관계를 학습할 수 있다.
연산량이 많고 기울기 소멸 문제 등이 발생할 수 있다.
👉🏻 드롭아웃, 렐루 함수, 배치 정규화 등을 적용해 해결한다.

1. 합성곱 신경망(CNN)

합성곱 신경망(CNN)은 합성곱층(convolutional layer)풀링층(pooling layer)을 포함하는 이미지 처리 성능이 좋은 인공 신경망 알고리즘이다.

+) Conv2d

참고 : https://blog.joonas.io/196

2. 순환 신경망(RNN)

순환 신경망은 시계열 데이터 같은 시간 흐름에 따라 변화하는 데이터를 학습하기 위한 인공 신경망이다.
순환은 가지 자신을 참조한다는 것으로, 현재 결과가 이전 결과와 연관이 있다는 의미이다.

3. 제한된 볼츠만 머신(RBM)

볼츠만 머신은 가시층(visible layer)과 은닉층(hidden layer)으로 구성된 모델이다.

다만 이 모델에서는 가시층은 은닉층과만 연결된다.

  • 차원 감소, 분류, 선형 회귀 분석, 협업 필터링, 특성 값 학습, 주제 모델링에 사용한다.
  • 기울기 소멸 문제를 해결하기 위해 사전 학습 용도로 활용 가능하다.(다른 심층 신경망의 학습을 돕기 위해 쓰이기도 한다.)
  • 심층 신뢰 신경망(DBN)의 요소로 활용된다.

    입력층의 노드는 데이터를 입력으며 입력받은 데이터를 은닉층에 얼마나 전달할 것인지를 확률에 따라 결정(stochastic decision)한다. 즉 확률에 따라 입력을 전달할지(1) 혹은 전달하지 않을지(0)를 결정한다.

4. 심층 신뢰 신경망(DBN)

심층 신뢰 신경망은 입력층과 은닉층으로 구성된 제한된 볼츠만 머신을 블록처럼 여러층으로 쌓은 형태로 연결된 신경망이다.

  • 레이블이 없는 데이터에 대한 비지도 학습이 가능하다.
  • 부분적인 이미지에서 전체를 연상하는 일반화추상화 과정을 구현할 때 사용하면 유용하다.

📄 참고 문헌

profile
내일의 나는 오늘보다 더 나아지기를 :D

0개의 댓글