ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7. 딥러닝(1)
    AI 모델(딥러닝 기초)/7. 딥러닝 2023. 2. 21. 15:23
    728x90

    ※ CNN의 정확도 향상

    현재 MNIST 데이터셋 대상 accuracy의 순위를 살펴보면 전반적으로 CNN을 사용한 기법들이 상위권을 차지한 것을 알 수 있다. 하지만 주로 합성곱 계층 2개에 완전연결 계층 2개 정도인 신경망으로 구현 되어 있다.

     

    MNIST 데이터셋은 손글씨 숫자라는 비교적 단순한 문제이기 때문에 층을 깊게 하지 않아도 충분히 좋은 수준의 결과가 나온다. 이제 데이터를 일반 사물 인식으로 바꾸게 되면 문제가 훨씬 복잡해지기 때문에 층을 깊게 하여 더 높은 정확도를 출력하는 방식을 택하는 것이다. 

     

     

    ■ 정확도 개선 기법

     

    1. 앙상블 학습

    2. 학습률 감소

    3. 데이터 확장

     

    여기서는 데이터 확장에 대해서 한 번 살펴 보자.

     

    데이터 확장(Data Augmentation)은 입력 이미지를 알고리즘을 동원해 '인위적'으로 확장시킨다. 입력 이미지를 회전, 세로로 이동, 일부를 잘라내는 crop, 좌우를 뒤집는 flip, 밝기 등의 외형 변화, 확대 축소 등의 스케일 변화 등을 사용한다.

    아무리 좋은 인공지능 성능을 가지더라도 데이터가 많은 것을 이길 수는 없다. 그래서 데이터가 적을 경우 뻥튀기 시켜 데이터를 확장시키는 방식을 택하는 것이다.

     

     

    ■ 층을 깊게?

     

    층을 깊게 하는 것은 신경망의 매개변수 수를 줄인다는 장점을 가진다.

     

    예를 들어, 7×7 크기의 필터를 예로 들어보자. 3×3으로 나눌 경우, 7×7 -> 5×5 -> 3×3 -> 1×1 총 3번의 단계를 거쳐 나타낼 수 있다. 이렇게 되면 총 3×3×3 = 27개의 매개변수를 가지게 되는 것이다. 하지만, 순수하게 7×7 크기를 층을 거치지 않고 바로 1×1로 나타낸다면 49개의 매개변수를 가지게 된다.

     

    이렇게 층을 깊게 함으로써 매개변수를 줄이고 학습 데이터의 양을 줄여 고속으로 학습을 수행할 수 있게 하는 이점이 있다.

     

    사물인식에서 신경망이 얕은 상태에서 해결하기 위해서는 해당 사물의 다양한 특성들을 한 번에 이해해야 할 정도의 많은 학습 데이터가 필요하며, 시간도 오래걸린다. 하지만, 층을 깊게 함으로써 계층적으로 학습해야 할 문제를 분해하여 단순한 문제로 처리가 가능하다. 이전 CNN 시간에도 다루었다시피 처음엔 에지정도로 시작하여 층을 지날 수록 고급정보를 처리하도록 만드는 것이다.

     

     

     

    ※ VGG

    합성곱 계층, 완전연결 계층을 모두 16층 or 19층으로 심화했음.

    3×3의 작은 필터를 사용한 합성곱 계층을 연속으로 거치며, 합성곱 계층에 2~4회 연속으로 풀링 계층을 두어 크기를 절반으로 줄인다.

     

     

     

     

    ※ GoogLeNet

    - 세로 방향과 가로 방향의 깊이가 모두 깊다.

    - 가로 방향에 '폭'이 존재 하는데 이를 '인셉션 구조'라 한다.

    GoogLeNet 구조

     

    인셉션 구조

     

    ■ 인셉션 구조

    - 크기가 다른 필터와 풀링을 여러 개 적용하여 그 결과를 결합한다.

    - 이 인셉션 구조를 하나의 빌딩 블록(구성 요소)로 사용한다.

    - 1×1 크기의 필터를 사용한 합성곱 계층을 많은 곳에서 사용하는데, 이는 채널 쪽으로 크기를 줄이는 것으로 매개변수 제거와 고속 처리에 기여한다.

     

     

     

    ※ ResNet

    딥러닝 학습 시 층이 지나치게 깊으면 오히려 성능이 떨어지는 경우가 많다. 이를 개선하기 위해 '스킵 연결'을 도입한 모델

     

     

    ■ 스킵 연결

    - 구조가 층의 깊이에 비례해 성능을 향상 시킬 수 있게 함.

    - 입력 데이터를 합성곱 계층을 건너뛰어 출력에 바로 더함으로써 층이 깊어져도 학습을 효율적으로 할 수 있게 해 준다.

    - 역전파 때 스킵 연결이 신호 감쇠를 막아주기 때문.

    - 입력 데이터를 그대로 흘리는 것으로 역전파 때도 상류의 기울기를 그대로 하류로 보낸다. 이로 인해 기울기가 작아지거나 지나치게 커질 걱정 없이 앞 층에 의미 있는 기울기를 전할 수 있게 된다. 기울기 소실 문제를 스킵 연결이 줄여 주는 셈.

     

    스킵 연결을 사용한 모습

     

    VGG 신경망을 기반으로 transfer learning을 시도했으며, VGG 신경망에 스킵 연결을 도입하여 층을 깊게 했다. 150층 가까이의 계층을 사용하더라도 정확도가 오르게 된다.

     

    ResNet 구조

     

     

    ■ 전이 학습(transfer learning)

    - 학습된 가중치를 다른 신경망에 복사한 다음, 그 상태로 재학습을 수행하는 방식

    - 보유한 데이터셋이 적을 때 특히 유용한 방법

     

     

     

    728x90

    'AI 모델(딥러닝 기초) > 7. 딥러닝' 카테고리의 다른 글

    7. 딥러닝(3)  (0) 2023.02.23
    7. 딥러닝(2)  (0) 2023.02.22
Designed by Tistory.