CNN 스터디 1주차

노은서·2024년 9월 8일
post-thumbnail

[CHAPTER 01. 딥러닝 영상 분석 소개]

1. 대표적인 딥러닝 영상 분석 기법 3가지

이미지 분류
이미지 객체 인식
이미지 분할

이미지 분류란 ?

= 어떠한 이미지 영상이 있을 때 이 영상이 어느 카테고리로 분류되는지에 대해 확률적으로 계산하는 방법

이미지 분류는 딥러닝 영상 분석의 첫 번째 단계이자 가장 중요한 뼈대 역할 !!

  • 이미지 분류에선 딥러닝의 학습 과정이 필수
  • 이미지 분류에 쓸 수 있는 아키텍쳐 : MNIST, AlexNet, GoogLeNet, ResNet 등

이미지 객체 인식이란 ?

= 특정 대상을 객체별로 인식해 그 위치를 x, y 좌표와 높이, 너비 값으로 이뤄진 바운딩 박스를 그려서 나타내는 것을 말한다.

이미지 객체 인식은 YOLO, SSD라는 객체 인식 네트워크로 구현 가능 !!

이미지 분류와 가장 큰 차이점
= 객체 인식의 결과에는 대상 객체의 위치에 대한 좌표 정보가 있다는 것

  • 이미지 분류의 결괏값은 카테고리별 확률 값들의 벡터
  • 객체 인식의 결괏값은 바운딩 박스 좌표(x,y,width)

이미지 분할이란 ?

= 이미지의 모든 픽셀을 지정된 카테고리로 분류하는 방법 (이미지에 있는 모든 픅실에 대해 예측을 수행하는 방법)

의미론적 분할

= 객체 단위는 신경 쓰지 않고 픽셀 단위로 분류하는 것

객체 분할

= 객체 인식 개념까지 추가해 객체별로 나누어 분류하는 것

2. 심층 신경망의 이해

이미지 분류의 경우 머신러닝보다 심층 신경망을 이용함 !!

  • 심층 신경망의 기본적인 단위 : 선형 분류

    - 선형 분류
    : 데이터를 직선이나 평면 같은 선형 경계로 구분하는 분류 방법
    - 선형 분류 모델의 목표
    : 미래의 새로운 X값이 있을 때 예측 결과 Y를 얻는 것

* 딥러닝의 경우

X : 영상 이미지

Y : (분류의 경우) 카테고리별 확률값인 클래스 점수 벡터

W (가중치) : 입력값과 함께 계산할 파라미터로 이뤄진 행렬값

  • 데이터로 훈련을 계속해 가중치 값이 최적화된다면 예측값과 정답의 오차 점점 감소

[심층 신경망의 구조]

심층 신경망은 기본적으로 행렬 곱셈 계산식으로 이뤄짐 !!

  • 심층 신경망은 이 행렬 곱 계산 결과를 바로 결과로 사용하지 않고, 그다음 행렬 곱 연산의 입력으로 사용 (중첩된 행렬 곱 계산식)

    은닉층(hidden layer)

    • 입력의 계산 결과를 다음 계산의 입력으로 사용하는 층
    • 은닉층이 더 많이 존재할수록 더 깊은 네트워크

    3. 딥러닝 모델의 기본 구조

    1) 딥러닝 훈련 과정과 추론

    딥러닝 훈련 과정(트레이닝, 학습)

    = 훈련 데이터에 대해 가중치와 함께 계산한 모델의 결괏값이 정답과 차이가 거의 없을 때까지 모델의 가중치를 최적화 하는 과정

    딥러닝 추론 과정

    = 모델이 완성되면 새로운 데이터에 대한 결과를 유추하는 과정

2) 손실 함수와 가중치의 최적화

손실함수란 ?

= 가중치가 좋은지 좋지 않은지를 평가할 수 있는 방법
--> 일반적으로 평균제곱 오차(MSE)교차 엔트로피 오차를 사용

평균 제곱 오차(Mean Square Error : MSE)

= 실젯값과 추정값 간의 차이를 제곱한 값의 평균을 측정

  • 모델의 품질을 나타내는 척도

  • 항상 양수이며 0에 가까울수록 좋다고 평가

  • 손실값은 정답에서 멀어질수록 크게, 정답에 가까워질수록 작게

    yk : 신경망의 출력
    tk : 정답 라벨
    k : 데이터의 차원 수 (분류하고자 하는 클래스의 개수)

교차 엔트로피 오차(Cross Entropy Error : CEE)

엔트로피란 ?

= 변수의 불확실성을 나타내는 지표
** 불확실성이 증가할수록 엔트로피 값은 커짐

교차 엔트로피란 ?

= 하나의 변수가 실제 분포와 예측 분포 사이에 서로 다른 분포를 가질 경우, 두 분포들의 차이를 의미

* 가중치 최적화

= 딥러닝 훈련 초기에는 추정치에 대한 손실값이 큼
이러한 손실을 감소시키려면 가중치를 최적화 해야함!!

가중치 최적화 방법

  • 경사하강법
  • 역전파

3) 경사 하강법과 역전파

경사 하강법이란 ?

= 손실 함수의 최솟값을 찾기 위해 반복적으로 기울기를 따라 내려가는 최적화 알고리즘

* 그래프상의 접선의 기울기가 최소화되는 지점으로 내리막길 방향을 따라가는 방법

  • 훈련이 계속될수록 손실이 감소하면 당연히 가중치 값도 변화됨

<가중치 업데이트 수식>

  • 가중치의 업데이트량 : 현재 가중치에서 어느 정도로 값을 이동시킬지를 결정
  • 딥러닝 훈련 과정에서 경사 하강법의 가중치 업데이트 수식을 통해 반복적으로 가중치 최적화

    (-) : 손실을 줄이기 위해 기울기가 증가하는 방향과 반대 방향
    r : 업데이트 크기를 조절하는 상수. 너무 크면 최솟값을 지나쳐버리고, 너무 작으면 수렴 속도가 느려짐
    ∇F(a) : a에서의 기울기. 손실 함수의 변화율

    * 학습률이란 ?

    = 한 번의 학습으로 얼마만큼 학습해야 할지, 즉 파라미터 값들을 얼마나 갱신하느냐를 정하는 수치

확률 경사 하강법(Stochastic Gradient Descent : SGD)

= 전체 학습 데이터를 사용하지 않고 확률적으로 선택한 샘플 데이터를 이용해 학습하는 방법

  • 대규모 데이터셋에서 가중치 파라미터를 업데이터할 때 RAM 부족으로 'out of memory' 오류가 발생하는 경우 해결 가능
  • 미니 배치 학습법이라고도 함

but 여전히 경사 하강법으로도 손실이 남아있을 수 있음. 이러한 문제를 해결하기 위해 소개된 역전파 훈련 알고리즘!!

역전파란?

= 신경망의 오차를 출력층에서 입력층으로 역으로 전파해 가중치를 업데이트하는 과정

<역전파 과정>

  1. 순전파가 먼저 진행됨
  2. 순전파가 끝난 후 출력층에서 최종 결과의 손실을 계산한다
  3. 오차를 줄이기 위해 미분을 이용해 출력층에서 입력층 방향으로 거슬러 올라감
    (가중치 파라미터들을 미세하게 업데이트하기 위해 미분의 연쇄법칙을 이용)

    * 미분의 연쇄법칙

<순전파>

= 입력층(왼쪽)에서 계산을 시작해 가중치 파라미터들을 출력층(오른쪽)으로 업데이트해 나가는 과정

  • 경사 하강법은 순전파 알고리즘을 사용

<연쇄법칙과 역전파>

  • 손실값을 이용해 가중치를 업데이트하고자 가중치 미분값을 구해야함 --> 미분의 연쇄법칙으로 구할 수 있음

(가중치의 미분값) = (손실값의 미분값) x (은닉층 출력의 미분값)

f : 활성화 함수
z = 순전파를 통해 계손된 손실

  • x 입력값에 대한 가중치의 미분값 : (∂L / ∂x)
  • y 입력값 대한 가중치의 미분값 : (∂L / ∂y )
  • 한 노드의 입력값(x)에서 사용한 가중치의 미분값을 얻고 나면, 모든 입력값(y)에 대해 계산하고 합을 계산
    ex ) (∂L / ∂x) + (∂L / ∂y )
  • 이렇게 계산된 값에 학습률(r)을 곱해 가중치를 업데이트함으로써 딥러닝의 결과를 개선

    * 하이퍼파라미터 = 학습률, 에프크 수, 네트워크,데이터의 종류등 모델의 성능에 결정적인 영향을 미치는 값

정리(한 에포크에서의 학습)

1) 순전파로 가중치를 최적화하기 위해 업데이트하고
2) 출력값(레이어의 끝)에서
손실값을 계산한 후
3) 이 손실값을 이용해 역전파하면서 가중치를 다시 조정해주는 과정

* 손실값이 최소화되고 모델의 정확도가 높아질 때까지 반복!!

4) 소프트맥스 함수

  • 이미지 분류를 위한 딥러닝의 출력 레이어에선 실수 형태의 Y, 스코어 벡터가 산출됨
  • 함수 사용 목적 : 계산된 결과를 다중 분류라는 목적을 위해 확률적 해석을 가능하게 하는 것!!

소프트맥스 함수란 ?

= 딥러닝 신경망에선 분류 결과를 얻기 위해 모든 입력의 영향을 함께 고려할 때 사용하는 함수
* 정규화 지수 함수라고도 불림
* 딥러닝의 계층에서 출력층의 활성화 함수로 가장 적합해 널리 사용

  • 항등함수와 달리 소프트맥스 함수는 모든 입력값으로부터 영향을 받음
  • 소프트 함수에서 출력값인 y1, y2, y3을 모두 합하면 1이므로 이 출력값은 확률로 해석 가능
     `	
profile
개발 & 공부 기록

0개의 댓글