ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 딥러닝 #2 (CNN 구조, CNN 학습 알고리즘)
    인공지능 2021. 2. 17. 14:57

    2021/01/31 - [인공지능] - 딥러닝 #1 (작동 구조, 기울기 소멸 문제, 과적합 문제)

     

    딥러닝 #1 (작동 구조, 기울기 소멸 문제, 과적합 문제)

    " 최근 '알파고'부터 시작하여 '이루다 AI 챗봇'에 이르기까지 딥러닝 모델에 대한 발전과 관심이 점점 커져 왔다. 하지만 개인 정보 및 사생활 침해 문제들과 미래의 일자리가 뺏길 것에 대한 우

    idplab-konkuk.tistory.com

    "
    저번 글에서 딥러닝의 기본적인 구조와 문제 사항에 대해 논하였다.

    그 기본적인 구조로부터 파생된 종류는 심층신뢰신경망, 오토인코더, 순환신경망 등 무수히 다양하지만, 이번 포스팅에서는 음성과 이미지 인식에 탁월한 성능을 보이는 합성곱 신경망(CNN, Convolutional Neural Network)에 대해 논해보겠다.
    "

     

    CNN이란 동물의 시각피질의 구조에서 영감을 받아 만들어진 딥러닝 신경망 모델로 특징을 추출하는 Convloution 층과 정보를 압축하는 Pooling 층의 반복 그리고 후반에 다층 퍼셉트론 층으로 이루어져 있다. 아무래도 좀 생소한 단어들이기에 아래 그림을 통해 이해해 보자.

     

                            https://missinglink.ai/guides/convolutional-neural-networks/convolutional-neural-network-tutorial-basic-advance/                  *Bird에 해당하는 확률 0.94는 오타로 0.04가 맞다

    위 그림은 CNN 모델의 일반적인 작동 구조도를 표현한 것이다.

     

    일반적으로, 보트의 생김새에 대해 알고 있는 사람은 사진을 보자마자 보트 사진이라는 것을 알 수 있다. 하지만 아무런 학습이 이루어지지 않은 인공지능 모델에게 판단을 기대하기란 어려운 문제이다.

     

    "그렇다면 대표적인 모델 학습 방법 머신러닝을 사용하여 학습을 하면 되지 않는가?"

     

    여기서 문제가 발생한다. 머신러닝은 학습용 데이터 프레임의 배열들을(각 Column이 뭘 의미하는지도 구분되어 있는) 입력 값으로 받고 주어진 출력값에 매칭시켜 학습을 하는 방식이지만, 위 보트 사진은 2차원 이미지의 RGB 값들로 이루어져 있다.

     

    다시 말해 보트 사진은 특징이라고는 R, G, B 세 개의 차이만 있고 (가로 픽셀 수) * (세로 픽셀 수) * (R, G, B 3개의 채널) 만큼의 엄청난 양의 데이터를 가지고 있는 것이다. 만약 저 사진 그대로 머신러닝을 할 경우 어마어마한 시간이 걸릴 테고 바다 위에 흰색의 무언가 떠있다면 다 보트라고 대답하게 될 것이다.

     

     

     

    "그렇다면 어떻게 해야 하는가?"

     

    저 많은 데이터들의 집합에서 압축된 특징만을 추출한 뒤 학습하는 것이다. 그 과정은 아래와 같다.

     

    "CNN 구조"

     

    1. 컨볼루션 층

    특징을 추출하는 층으로 일정 영역의 값들에 대해 가중치를 적용하여 하나의 값을 만드는 연산이 실행된다. 이때 이 가중치 행렬을 컨볼루션 필터(=커널 or 마스크)라 부른다.

     

    또한 가중치 필터 연산 후에 활성화 함수를 적용하여 이후 연산에 넘겨진다. 이때 CNN의 경우 대부분 ReLU 활성화 함수를 사용한다.

    출처: https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

    위 이미지에서는 5x5 행렬의 이미지에 대해 3x3 필터를 1 스트라이드(연산마다 필터가 움직이는 칸 수)로 특징 추출하는 모습이다. 이후 나온 결과 행렬 Convolved Feature Map을 특징지도라고 한다.

     

    1-(1). 패딩

    컨볼루션 연산에 있어서 필요할 경우, 결과 값 행렬의 크기를 조정하기 위해 입력 배열의 둘레를 확장하고 0으로 채우는 연산이다.

    입력 배열의 둘레를 한칸 확장하고 0으로 채운 뒤 연산 수행

     

    2. 풀링 층

     

    일정 크기의 블록을 통합하여 하나의 대표값으로 대체하는 연산으로 컨볼루션 층에서 출력된 특징 지도를 압축하여 특정 데이터를 강조하는 역할을 한다.

    특징지도를 Max Pooling, Average Pooling 할 경우 결과 행렬

    풀링 방식에는

    • 블록 내의 원소들 중 최대값을 대표값으로 선택하는 Max Pooling
    • 블록 내의 원소들의 평균값을 대표값으로 선택하는 Average Pooling
    • 블록 내 원소의 크기를 선택 확률로 변환 후 확률에 따라 선택하는 Stochastic Pooling

    등 다양한 방법이 있지만 일반적으로 CNN에서는 Max Pooling 기법을 대중적으로 사용한다.

    이에 대한 이유는 실제 뉴런이 가장 큰 자극에 반응하듯이 CNN 모델에서도 이 기법을 사용할 경우 노이즈가 줄고 학습 속도가 증가하기 때문이다.

     

     

    Conv 층과 Pooling 층의 반복된 연산으로 어느덧 입력 이미지 배열은 특징들만을 포함한 하나의 1차원 배열 데이터로 변환된다. 이후 과정은 이전 포스팅에서 언급했던 다층 퍼셉트론 층(Fully Connected Layer)을 통해 연산이 수행되고 회귀 혹은 분류(SoftMax 층 필요)가 이루어진다.

     

    이제 CNN의 구조는 얼추 알겠다. 그렇다면 학습은 어떻게 이루어지는가?

     

     

    "CNN 학습 방식"

    가중치가 학습되는 방식은 저번 포스팅에서 다루었으며 CNN 모델에서도 동일하게 적용된다.

     

    기본적으로 모든 학습 방식, 즉 오차역전파 알고리즘은 경사하강법을 기반으로 발전하였다. 발전을 거듭한 끝에 일반적이고 대중적인 알고리즘이 개발되었지만 그 과정에 있었던 알고리즘에 대해서도 간단히 알아보겠다.

     

    먼저 기본적인 경사하강법 알고리즘은

    위 식과 같이 오차함수에 대해 조정할 가중치로 편미분을 한 그래디언트 값을 이용해 수정해 나간다.

     

    • Momentum

    경사 하강법에 관성(=탄력 Momentum)을 더해주는 알고리즘으로, 직전 학습 단계의 가중치 변화량에 모멘텀율 α (일반적으로 0.9)을 적용 후 그래디언트와의 합벡터로 가중치 조정하는 방식이다. 

    Momentum 알고리즘

    • NAG (Nesterov Accelerated Gradient)

    직전 모멘텀 항을 이용하여 조정될 방향을 예측하고 이동 후 계산하는 알고리즘으로, 현재 가중치 w(t)를 직전 모멘텀 항을 사용하여 미리 이동시키고 해당 위치에서 그레디언트를 계산하여 가중치를 조정하는 방식이다.

    NAG 알고리즘

    • AdaGrad (Adaptive Gradient)

    매 시점마다 각 가중치에 대해 별도의 학습률을 사용하는 알고리즘으로, 많이 변화한 가중치는 최적값에 근접했을 것이라 보고 학습률이 감소하며 반대로 적게 변화한 가중치는 학습률을 높여 빠르게 오차를 줄여나가는 방식이다.

    여기서 입실론은 G_i (t) 값이 0이 될경우 학습률이 0으로 수렴하게되므로 이를 막기 위한 작은 상수이다.

    • RMSprop 

    AdaGrad 방식과 마찬가지로 가중치 별로 별도의 학습율을 적용하지만 지수 이동 평균 기법을 적용하여 최근 값의 영향은 더욱 크고, 오래된 값의 영향은 대폭 낮추는 알고리즘이다. AdaGrad 방식에서 학습률이 0으로 수렴하는 현상을 방지하고자 개발되었다.

    지수 이동 평균 기법을 표현한 식으로 최근 값에 대한 영향이커질수록 과거 값의 영향은 작아진다.
    RMSprop 알고리즘 구조로 오차함수에 대해 지수 이동 평균 기법이 적용되어 있다.

    • Adam(Adaptive Moment Estimation)

    Momentum 방식과 RMSprop 방식이 결합된 방법으로 Momentum 항과 학습율 항에 RMSprop 방식과 같이 지수 이동 평균 적용된 알고리즘이다.

    여러 데이터셋에 대해 가장 좋은 학습 성능을 보이며 현재 딥러닝 모델에 가장 많이 쓰이는 대중적인 알고리즘이다.

    지수 이동 평균 기법을 이용하여 개별적인 학습률이 적용되는 RMSprop 방식과 직전 단계 가중치 변화량에 힘을 실어주는 Momentum 방식이 결합된 Adam 알고리즘

     

Designed by Tistory.