딥러닝 주요 개념 간략 정리

Nov 01, 2023
딥러닝 주요 개념 간략 정리

10.1 인공 신경망

  • 인간의 생물학적 신경망과 유사한 구조를 갖는 인공 시스템
  • 사람 뇌의 기본 단위 뉴런 구조에서 영감을 얻음
    • 가지돌기 → 축삭돌기 → 축삭 말단
    • 신호가 특정 값을 넘으면 잘 전달되고, 특정 값 이하면 전달되지 않음
    • 뉴런 = 신호를 입력에서 출력으로 전달하는 역할

10.1.1 퍼셉트론

  • 뉴런의 원리를 본떠 만든 인공 구조
  • 여러 입력값을 받아 특정 값을 출력함
      1. 입력값(x1,x2,x3)과 가중치(w1,w2,w3)을 곱함
      1. 곱한 값들의 총합을 구함
      1. 총합이 0을 넘으면 1, 넘지 않으면 0을 출력
        1. 3번 단계에서 0 초과 여부에 따라 출력값을 결정하는 역할 = 활성화 함수
          • 활성화 함수는 입력값을 최종적으로 어떤 값으로 변환해 출력할지 결정해줌
  • 퍼셉트론은 입력값, 가중치, 활성화 함수로 이루어진 구조
  • 훈련(또는 학습) : 원하는 출력값을 내보내도록 가중치를 조정해가는 작업
  • 단순 퍼셉트론은 선형 분류 문제만 해결 할 수 있다는 한계점이 있음
    • ⇒ 퍼셉트론을 여러 층으로 쌓아 다층 퍼셉르론을 통해 비선형 분류 문제를 해결 가능
 

10.1.2 신경망

  • 신경망은 입력층, 은닉층(중간층), 출력층으로 구성

10.1.3 활성화 함수(activation funcion)

  • 입력값을 어떤 값으로 변환해 출력할지 결정하는 함수
  • 대표적인 활성화 함수로 시그모이드 함수와 ReLU 함수가 있음
    • 시그모이드 함수
      • S자 곡선을 그리는 수학 함수
        • notion image
    • ReLU 함수
      • 입력값이 0보다 크면 입력값을 그대로 출력하고, 0 이하이면 0 을 출력
      • 활성화 함수로 시그모이드보다 대체로 성능이 좋아서 많이 활용됨
        • notion image
    • Leaky ReLU 함수
      • ReLU를 약간 변형한 함수로, 자주 쓰임
      • 입력값이 음수일 때, 약간의 음숫값을 살려둠
        • notion image

10.1.4 경사 하강법(Gradient Descent)

  • 신경망 훈련의 목표 ⇒ 최적 파라미터(가중치와 편향)을 찾는 것
    • 최적 파라미터 = 손실 함수가 최솟값일 때의 파라미터
      • 손실 함수(loss function)
        • 모델 성능이 얼마나 나쁜지를 측정하는 함수
        • 모델로 예측한 값과 실젯값 차이를 구하는 함수
        • 함수 값이 작을 수록 좋은 모델
        • 대표적으로 평균 제곱 오차(Mean Squared Error, MSE)와 교차 엔트로피(Cross Entropy)가 있음
  • 매 훈련마다 손실값이 줄어드는 방향으로 파라미터를 갱신하여 찾게 됨
💡
경사 하강법의 일반적인 절차 1. 현재 위치에서 기울기(경사)를 구함 2. 기울기 아래 방향으로 일정거리(학습률)를 이동함. 3. 손실 함수가 최소가 될 때까지, 즉 기울기가 0이 될 때까지 1~2단계를 반복함
  • 학습률(Learning Rate)
    • 기울기 방향으로 얼만큼 이동할지 결정하는 값
    • 학습률이 가중치를 한 번에 얼마나 갱신할지 결정하는 값
    • 학습률에 따라 훈련 속도가 달라짐
      • 학습률이 너무 크면 훈련 속도는 빠르지만, 최적 가중치를 찾지 못할 수 있음
      • 학습률 이 너무 작으면 훈련 속도가 느려짐
    • 보통 0.1~0.0001 범위의 값을 사용함
  • 미니배치 경하 하강법
    • 데이터를 미니배치 단위로 무작위로 추출해 경사 하강법을 수행
    • 데이터 여러 개를 한 묶음으로 처리하므로 더 효율적
  • 순전파(forward propagation)
    • 입력값이 입력층 → 은닉층 → 출력층 도달하는 계산 과정
    • 각 층을 통과할 떄마다 입력값에 가중치를 곱해 다음 층으로 출력값을 계산
  • 역전파(back propagation)
    • 순전파의 반대 개념
💡
신경망 훈련 절차 1. 순전파를 진행하여 입력값으로부터 출력값(타깃 예측값)을 계산함 2. 순전파로 구한 타깃 예측값과 실제 타깃값의 차이 (손실)을 구함 3. 손실값을 줄이는 방향으로 가중치의 기울기를 구함 = 경사하강법 4. 기울기를 바탕으로 가중치를 갱신, 출력층 → 입력층 방향으로 차례로 가중치 갱신 5. 1~4단계 반복
 

10.2 합성곱 신경망(convolutional neural network, CNN)

  • 컴퓨터 비전 분야에서 주로 쓰이는 신경망
  • 다음과 같이 여러 구조가 모여 구성됨
notion image

10.2.1 합성곱 계층(convolutional layer)

  • 합성곱으로 이루어진 신경망 계층
  • 합성곱(convolution)
    • 2차원 데이터의 일정 영역 내 값들을 하나의 값으로 압축하는 연산
    • 전체 영역에서 중요한 특징만 추출하는 효과
    • 합성곱 연산에는 필터가 필요함
  • 필터(filter)
    • 입력 데이터에서 특정한 특성을 필터링하는 역할
    • 특정 특성을 부각시키거나 약화시키는 등의 변화를 줌
    • 요소별, 특징별 특성을 가져오는 역할
합성곱 연산 과정
  • 서로 대응하는 행과 열에 적힌 숫자끼리 곱한 뒤 모두 더해줌
notion image
 
  • 특성 맵, 피처 맵(feature map)
    • 합성곱 연산의 결과
    • 중요한 특징만 남아있게 된 결과
    • 필터의 패턴과 일치하는 영역일 수록 숫자가 큼
  • 합성곱 계층에서는 보통 여러 특성을 추출하기 위해 여러 필터를 사용함
    • notion image
 

10.2.2 패딩과 스트라이드

  • 4X4 크기의 입력 데이터에 3X3 크기의 필터를 적용하면 2X2의 피처맵이 만들어 짐
  • 합성곱 연산은 데이터의 크기를 줄이게 되고, 여러 번 반복하면 더 이상 합성곱 연산을 적용하지 못함
    • 입력 데이터 크기를 좀 더 키우면 해결 가능
      • 패딩(padding)
        • 입력 주변 데이터 주변을 특정 값으로 채워 입력 데이터 크기를 키우는 방법
        • 보통 0으로 채움
  • 스트라이드(stride)
    • 합성곱 연산을 수행할 때 한 번에 이동하는 간격의 크기
    • 스트라이드를 크게 설정하면 패처맵의 크기가 줄어듬

10.2.3 풀링(pooling)

  • 특성 맵 크기를 줄여 이미지의 요약 정보를 추출하는 기능
  • 합성곱과 다르게 필터가 필요 없음
    • 특정 영역에서 최댓값이나 평균값을 가져와 요약 정보를 구하기 때문
  • 풀링의 목적
    • 특성 맵 크기를 줄여 연산속도를 빠르게 하기 위함
    • 이미지에서 물체의 위치가 바뀌어도 같은 물체로 인식하기 위해
      • 합성곱 연산은 물체 위치가 바뀌면 같은 물체로 인식하지 못함
      • 풀링은 특정 영역의 요약 정보(대푯값)을 가져와서 위치가 약간 변해도 같은 물체로 판단함 = 위치 불변성(location invariance)
  • 대표적으로 최대 풀링과 평균 풀링이 있음
    • 최대 풀링
      • 풀링 영역에서 가장 큰 값을 취하는 방법
      • 특정 영역에서 가장 뚜렷한(밝은) 부분 추출
    • 평균 풀링
      • 풀링 영역의 평균값을 구하는 방법
      • 특정 영역의 평균적인 특징 추출

10.2.4 전결합(fully-connected)

  • 이전 계층의 모든 노드 각각이 다음 계층의 노드 전부와 연결된 결합
  • 전결합 계층(fully-connected layer) 또는 밀집 계층(dense layer)
    • 전결합으로 구성된 계층
    • CNN에서는 보통 마지막 부분에서 구현함
  • 앞의 합성곱과 풀링 계층이 이미지에서 특징을 뽑아내면 전결합 계층은 이 특성을 활용해 특정한 레이블로 분류하는 역할을 함
  • 평탄화
    • 합성곱 계층과 풀링 계층을 거친 2차원 데이터는 1차원으로 바꾼 뒤 전결합을 적용
  • 평탄화한 1차원 데이터를 최종 출력값과 전결합하지 않고, 전결합 계층을 여러 개 만드는 이유?
    • 분류를 더 효율적으로 하기 위해

10.2.5 합성곱 신경망 전체 구조

  • 입력 데이터는 배치크기, 가로 픽셀 수, 세로 픽셀수 , 색상(채널 값)로 4차원 데이터를 다루게 됨
 

10.3 성능 향상을 위한 딥러닝 알고리즘

10.3.1 드롭아웃(dropout)

  • 과적합을 방지하기 위해 신경망 훈련 과정에서 무작위로 일부 뉴런을 제외하는 기법
  • 매 훈련 이터레이션마다 새롭게 적용
    • 매 훈련마다 서로 다른 신경망을 훈련하는 꼴
    • 여러 모델을 훈련하여 결과를 취합하는 앙상블 학습과 유사
  • 드롭아웃 비율 0.2로 설정하면 전체의 20% 뉴런을 제외하게 됨

10.3.2 배치 정규화(batch normalization)

  • 과적합 방지와 훈련 속도 향상을 위한 기법
  • 내부 공변량 변화(internal covariate shift)를 해결하기 위한 기법
    • 신경망 계층마다 입력 데이터 분포가 다른 현상
  • 데이터가 정규분포(평균0, 분산1)을 따르도록 분포를 변환하는 작업

10.3.3 옵티마이저(optimizer)

  • 신경망의 최적 가중치를 찾아주는 알고리즘
  • 10.1.4의 경사 하강법(SGD)이 대표적인 예
  • 모멘텀(Momentum)
    • SGD에 물리학의 관성 개념을 추가
    • 이전 단계의 진행 방향을 기억하여 일정 비율로 현 단계에 반영
      • 지그재그 폭이 줄어드는 효과 → 더 빠르게 최적 파라미터에 수렴
  • Adagrad
    • 최적 파라미터에 도달할수록 학습률을 낮추도록 한 옵티마이저
    • 적응적 학습률(adaptive learning rate)
      • 최적점에서 멀 때는 학습률을 크게 잡아 빠르게 수렴
      • 최적점에서 가까울 때는 학습률을 낮춰 최적점을 지나치지 않도록 함
  • RMSProp
    • Adagrad의 단점을 보완한 방법
      • 훈련이 진행될 수록 학습률이 낮아져 0에 가까워져, 가중치 갱신이 되지 않음
    • 적응적 학습률을 활용하지만, 최근 기울기만 고려해 학습률을 낮추는 방법
    • 훈련을 오래 지속해도 학습률이 0에 수렴하지 않음
  • Adam
    • 딥러닝 모델을 설계할 때 가장 많이 사용하는 옵티마이저
    • Momentum과 RMSProp의 장점을 결합한 방법
      • 관성을 이용하며, 적응적 학습률을 적용함

10.3.4 전이 학습(transfer learning)

  • 한 영역에서 사전 훈련된 모델(pretrained model)에 약간의 추가 학습을 더해 유사한 다른 영역에서도 활용하는 기법
  • 처음 훈련하는 것보다 적은 데이터로 훨씬 빠르게 높은 성능치에 도달할 수 있음
  • 전이 학습의 종류
    • 신경망 전체를 다시 훈련하는 파인튜닝(fine tuning)
    • 일부 계층만 다시 훈련하는 방법
 
Share article
RSSPowered by inblog