Googlenet

Mechboy·2024년 10월 30일

논문 분석

목록 보기
1/5

논문 원본

Googlenet

  • Googlenet은 CNN 신경망을 더욱 많은 은닉층을 사용하여 학습하기 위해서 나온 방법임, Inception이라는 구조를 도입하여 더욱 깊은 레이어와 효율적인 계산 자원을 활용하여 ILSVRC14(Imagenet Large-Scale Visual Recognition Challene 2014)에서 우승을 했음

도입 배경

현 상황의 문제점

  • 2014년 당시에 Deep learning에서 성능을 가장 올리기 쉬운방법은 은닉층을 증가시키는 방법이었음, 하지만 단순히 은닉층을 증가 시키기에는 2가지 문제가 발생하여 진행이 어려웠음
  1. 데이터가 충분하지 않다면 over fitting이 되기 쉬운 문제
  2. 그리고 학습을 하는데 많은 컴퓨팅 리소스가 소요

대응 방안

  • 이런 문제를 해결하기 위해서 등장한것이 sparesly하게 연결된 아키텍쳐를 사용하는 것임 하지만, 하지만 GPU는 Dense한 행렬연산에 효율적이라서 sparesly 한 레이어가 많아질수록 연산에 비효율성이 발생하게 됨

    여기서 sparesly 하다는 의미는 특정 채널의 값의 텐서에 0이 많다는 의미가 되고, 반대로 Dense하다는 의미는 텐서에 0이 적다고 생각하면됨

  • Sparesly 한 방식을 적용하기 위해 Inception이라는 컨셉을 도입하게 됨. 즉 Inception layer에서 특정패턴만 강하게 반응하고 나머지 출력을 0이나 0에 가까운 값을 만들어서 특정 컨볼루션 연산만 출력으로 이어주도록 하는것

    정확한 예시는 아니지만 대략적인 비유를 하자면

    • 1*1 커널에서는 이미지 개별 픽셀의 특성에 집중 -> 점
    • 3*3 커널에서는 이미지의 경계선(엣지) -> 선
    • 5*5 커널에서는 이미지의 윤곽이나 형상을 인식함 -> 면

Inception 구조

  • 그림과 같이 여러개의 컨볼루션 레이어를 병렬로 이어주는것을 인셉션 구조라고 함. 좌측의 naive version이 오리지널이지만 5*5 컨볼루션을 진행하기에는 많은 연산에 많은 자원이 소요되는 문제점이 있음.
    이를 해결 하기 위해서 커널 사이즈가 1인 컨볼루션 레이어를 도입해 채널 출력 채널을 줄여서 대응


위 그림을 보면에서 reduced 커널이 1 * 1 커널로 입력되는 텐서의 차원을 줄여주는 역할을 함, 즉 컨볼루션 연산에서 연산량을 줄이기 위해 텐서의 채널을 줄여준다고 보면 됨

  • inception 구조에서 max pooling을 해주는 이유는 훈련의 효율을 위해서 추가 한것으로 필수는 아님
  • 추가로 인셉션 채널 중간에 포함된 auxiliary classifier는 기울기 소실을 방지하기 위해서 추가됨. 학습 단계에서는 0.3의 가중치를 곱하여 total loss에 더해 준다.
profile
imageprocessing and Data science

0개의 댓글