딥러닝 텐서플로 교과서 - 4장

Jajuna_99·2022년 10월 2일
0

4장 딥러닝 시작

인공 신경망의 한계와 딥러닝 출현(p.114)

  • 프랭크 로젠블라트가 고안한 퍼셉트론이라는 선형 분류기 알고리즘이 최초의 딥러닝 모델 구조이자 딥러닝의 기원이 되었다.
    (입력층, 출력층, 가중치를 포함)

  • 컴퓨가 논리를 계산하는 조합 논리 게이트중 ANDOR게이트는 선형적으로 분류가 가능하지만, XOR게이트는 선형적으로 분류가 어려워 학습이 불가능하다는 한계가 제시됐다.

  • 위에 한계점을 극보하고자 입력층과 출력층에 은닉층을 추가해서 비선형적으로 분리되는 데이터도 학습 가능하도록 다층 퍼셉트론(multi-layer perceptron)이 제시 됐다.

  • 여기 은닉층이 여러개인 신경망을 심층 신경망(Deep Neural Network, DNN)이라 한다.

딥러닝 구조(p.117)

딥러닝 구조를 명료하게, 누구나 이해하기 쉽게, 설명해놓으셨다. 용어부터 정리하겠다.

딥러닝 용어

  • 입력층, 출력층 : 데이터를 받고 내보내는 층

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

  • 가중치 : 노드와 노드 간 연결 강도 -> 입력 값의 연산 결과를 조정하는 역할

  • 편향 : 가중합에 더해 주는 상수로, 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절

  • 가중합, 전달 함수 : 가중치와 노드의 곱을 합해서 활성화 함수로 전달하는 노드

    • 가중합 공식 =iwixi+b= \displaystyle\sum_iw_ix_i + b
  • 활성화 함수 : 전달 함수에서 받은 값을 일정 기준에 따라 출력 값을 변화시키는 비선형 함수

    • 시그모이드 함수 : 딥러닝에서 기울기 소멸 때문에 잘 쓰이지 않고, 로지스틱 회귀처럼 분류 문제를 확률적으로 표현하는데 사용

    • 하이퍼볼릭 탄젠트 함수 : 시그모이드에서 결괏값의 평균이 0이 아닌 양수로 편향된 문제를 해결하는데 사용했다. 여전히 기울기 소멸 문제가 있다.

    • 렐루 함수 : 입력이 음수일 때 0을 출력하고 양수는 그대로 출력하는 함수, 경사 하강법에 영향을 주지 않아 학습 속도가 빠르고 기울기 소멸 문제 또한 해결했다. 일반적으로 은닉층에서 사용된다.

    • 리키 렐루 함수 : 음수 값을 모두 0으로 출력하는 렐루 함수의 문제을 해결하고자 제시, 음수 값을 0이 아닌 매우 작은 수로 변환

    • 소프트맥스 함수 : 0~1 사이에 출력되도록 정규화하고, 출력값 총합이 항상 1이 되도록한다. 출력 노드의 활성화 함수로 많이 사용된다.

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

  • 경사하강법 : 학습률(η\eta, learning rate, 한 번 학습할 때 얼마큼 변화를 주는지에 대한 상수), 손실 함수의 순간 기울기를 이용하여 가중치를 업데이트 하는 방법

    • 평균 제곱 오차 : 실제값과 예측 값의 차이를 제곱하여 평균을 낸 오차, 회귀에서 주로 사용된다.
    • 크로스 엔트로피 오차 : 시그모이드의 자연 상수 ee때문에 매끄럽지 못한 그래프가 출력 되는데, 이를 방지하고 자연 상수 ee에 반대되는 자연 로그를 출력 값에 최하는 함수. 분류에서 원-핫 인코딩 했을 때만 사용 가능하다.

딥러닝 학습

크게 순전파(예측)역전파(학습)으로 본다.

  • 순전파 : 입력값들을 신경망에 넣어서 모든 층, 모든 뉴런들을 지나 출력 값(예측 값)이 나온다.

  • 역전파 : 순전파의 예측값을 실제 값 차이과 차이를 추정하고, 이 때 나오는 손실 함수 비용이 0이 되도록 입력층 쪽으로 손실 함수를 보내는 과정, 예측 값과 실제 값 차리를 각 뉴련의 가중치로 미분한 후 기존 가중치 값에서 뺀다.

  • 이를 0에 최대한 가깝도록 계속 반복하는 것이다.

딥러닝의 문제점과 해결 방안

  • 과적합 문제 : 훈련 데이터를 과하게 학습시키면 발생, 훈련 데이터에만 적합한 모델이 된다.
    -> 일반적인 해결 방안으로 드롭아웃(dropout)을 사용한다.

  • 기울기 소멸 문제 : 출력층에서 은닉층으로 전달되는 오차가 크게 줄어들어 학습이 되지 않는 문제
    -> 시그모이드, 하이퍼볼릭 탄젠트 대신 렐루를 활성화 함수로 사용하면 해결 가능

  • 성능이 나빠지는 문제 : 경사 하강법은 손실 함수의 비용이 최소가 되는 지점을 찾을 때까지 기울기가 낮은 쪽으로 계속 이동시키는 과정을 반복하는데, 이때 성능이 나빠지는 문제가 발생한다.
    -> 이를 위한 해결책으로 확률적 경사 하강법미니 배치 경사 하강법 사용

    • 배치 경사 하강법 : 전체 데이터셋에 대한 오류를 구한 후 기울기를 한 번만 계산하여 모델의 파라미터를 업데이트하는 방법. 즉, 전체 훈련 데이터셋에 대해 가중치를 편미분하는 방법. 단점으로 학습이 오래 걸린다.
    • 확률적 경사 하강법 : 임의로 선택한 데이터에 대해 기울기를 계산하는 방법으로 적은 데이터를 사용하므로 빠른 계산 가능. 다만 파라미터 변경 폭이 불안정하고 (p.129) 때로는 배치 경사 하강법보다 정확도가 낮을 수도 있다.
      -> 파라미터 불안정 문제 때문에 옵티마이저 적용 고려 가능 (p.132)
    • 미니 배치 경사 하강법 : 전체 데이터셋을 여러 개로 나누고, 미니 배치 한 개마다 기울기를 구한 후 그것의 평균 기울기를 이용하여 모델을 업데이트, 학습하는 방법.
      -> 전체 데이터를 계산하는 것보다 빠르고, 확률적 경사 하강법보다 안정적이기 때문에 가장 많이 사용된다.

딥러닝을 사용할 때 이점

  • 특성 추출 - 머신러닝(SVM, naive Bayes, 로지스틱 회귀 등)의 특성 추출은 매우 복잡했고, 수집된 데이터 도메인에 대한 전문 지식 또한 필요했다. 하지만 딥러닝은 특성 추출 과정을 알고리즘에 통합시킨거나 마찬가지에 효과를 가진다.

  • 빅데이터의 효율적 활용 - 데이터가 많을수록 효율이 올라가는 딥러닝은 데이터가 많은 요즘 세대에 사용하기 적합하다. (확보된 데이터가 적을 경우 ML도 고려해야 된다.)

딥러닝 알고리즘(p.134)

뒷 장에서 자세히 알아보고 구현할 것이기 때문에 간단하게!

심층 신경망

위에서 충분히 설명한 듯 하다.

합성곱 신경망, CNN

심층 신경망에 합성곱층, 풀링층을 포함해서 이미지 처리 성능이 특히 좋은 신경망이다.

순환 신경망, RNN

시계열 데이터 (음악, 영상, 자연어) 같은 시간 흐름에 따라 변화하는 데이터를 확습하기 위한 신경망이다.

제한된 볼츠만 머신

가시층과 은닉층으로만 구성된 모델이다. 특징으로는 가시층은 은닉층과만 연결되고 가시층 혹은 은닉층 내에서의 연결은 없는 것이다.

심층 신회 신경망

제한된 볼츠만 머신을 블록처럼 여러 층으로 쌓은 형태로 연결된 신경망.
사전 훈련된 제한된 볼츠만 머신을 층층이 쌓아 올린 구조이고 레이블 없는 데이터에 대한 비지도 학습 또한 가능하다.
부분적인 이미지에서 전체를 연상하는 일반화와 추상화 과정을 구현할 때 사용하면 유용하다.

요약

여기도 대락적으로는 대부분 알고 있는 내용이라서 가볍게만 정리했다. 나중에 아카이브에 자세히 정리 예정!

profile
Learning bunch, mostly computer and language

0개의 댓글