Week8 - Day 5 Review


1. 오늘 한것

  • 정리 마무리

2. 피어세션에서 한 것

  • 팀 공통 정리 문서 만들기!

3. 주말 할 일

  • CNN Viz 정리 마무리
  • 다다음주 P-Stage를 대비하여 필요한 지식을 미리 찾아두고 공부해두기
  • Kaggle 스터디 발표준비

4. 하루 느낀점

  • CV wiki를 작성하기로 했는데 잘 되었으면 좋겠다
  • 그리고 꼭 CV에 국한된 것이 아니라 부캠 전체 공유하는 위키 만드는것도 한번 고려를 해보려고 한다
  • 같이 위키만들 사람 구하려면 기초부터 조금 잘 만들어두어야 겠다

5. 미세 팁

  • 오늘은 없습니다

reference

Week8 - Day 1~4 Review


1. 1~4일간 한 것

  • CV 트랙 강의 수강 완료
  • 과제 완료
  • 추천 시스템 청강 준비

2. 피어세션에서 한 것

  • receptive field 에 관한 정리
    • Convolution Layer에서 한번에 받을 수 있는 영역의 크기
    • 이 영역이 클수록 한번에 볼 수 있는 정보의 크기 또한 커진다
      • 성능의 향상
  • 과제 리뷰
    • 1번과제 Resnet 34 scratch 구현에서의 의문점에 관하여 토론
      • ReLU의 적용 시점에 따라서 성능이 갈리지 않나?
    • 가이드라인 코드에서는 ReLU를 Skip Connection과 합치기 전에 각각 적용함
    • 직접 만든 코드에서는 ReLU를 합친 output에 적용하였다
    • 성능은 직접만든 코드쪽이 월등하게 높은것으로 나타났다

3. 주말 할 일

  • 다다음주 P-Stage를 대비하여 필요한 지식을 미리 찾아두고 공부해두기
  • Kaggle 스터디 발표준비

4. 하루 느낀점

  • 팀원이 바뀌고 새로 그라운드 룰부터 많은것을 정하기위해 정말 많이 이야기했다
  • 아직 바뀐지 얼마 지나지 않아서 조금은 어색한 느낌이 있다
  • 금방 좋아지겠지

5. 미세한 팁

Functools.Partial


과제를 하다가 functools의 partial을 쓸 기회가 있었는데 오류를 뱉어서 나름대로 해결을 하고 정답지를 보니 작성한 코드가 달라서 한번 조사해보고 쓰는 글입니다.

Functools의 Partial에 대해 알아보자

  • functools Module의 내장 함수인 Partial은 기존에 존재하는 함수에 추가적인 인수를 지정하여 새로운 버전의 함수로 만들어주는 기능을 가지고 있다.

Partial의 예시

말로만 설명하면 이해하기 힘드니 코드와 같이 보자

다음과 같이 n진수를 10진수의 형태로 바꾸어 주는 함수가 있다고 하자

1
2
def to_int(num, base):
return int(num, base=base)

이때 특정한 수 2와 3을 Base로 하는 함수를 원한다고 할 때 다음과 같이 사용할 수 있다.

1
2
3
4
5
def two_to_int(num):
return to_int(num, base=2)

def three_to_int(num):
return to_int(num, base=3)

하지만 매번 특정한 수를 Base로 하는 함수를 이렇게 여러줄로 정의하면 코드의 줄도 길어지고 귀찮을수 있는데 이때 Partial을 사용하면 다음과 같이 함수를 새로 정의할 수 있다.

1
2
3
4
5
6
7
two_to_int = partial(to_int, base=2)
three_to_int = partial(to_int, base=3)

two_to_int("10")
2
three_to_int("120")
15

내부 구조

Partial 함수는 아래 코드와 같이 정의되어있다

여기서 2가지 방법으로 함수의 인자를 미리 설정할 수 있다.

  • partial(함수이름, 변수)
    • newfunc.args에 변수를 저장한다
  • partial(함수이름, 변수명=변수)
    • newfunc.keywords에 변수명이 Key, 변수가 value로 저장된다
    • 기존에 있는 변수를 변수명을 통해서 다시 지정할 때 그 변수의 입력위치가 중간에 존재할 경우 Error가 발생한다
1
2
3
4
5
6
7
8
def partial(func, /, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = {**keywords, **fkeywords}
return func(*args, *fargs, **newkeywords)
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
  • 함수가 실행될때는 newfunc.args에 저장된 args, 함수에 입력되는 parameter, newfunc.keywords 순으로 순차적으로 입력된다
1
2
3
4
5
6
7
8
9
10
11
12
def tempfunc(one, two, three, four):
print(one, two, three, four)

a = partial(tempfunc, 1, 2)
a(5, 3)
output
1 2 5 3

a = partial(tempfunc, two=1)
a(5, 3, 2)
output
TypeError: tempfunc() got multiple values for argument 'two'

reference

부스트 캠프 ai tech 8주 4일차 CNN visualization


CNN visualization 의 필요성

  • 기존 DeepLearning 모델은 내부를 볼 수 없는 시스템(Black Box)라고 여겨졌다
    • 실제로는 내부 Parameter 값을 볼 수 있지만 weight들로 이루어진 Metrix만 존재하기 때문에 해석하기 힘들다
  • CNN visualization에서는 weight들을 시각화 해서 설명가능하게 만들어 준다
    • filter들을 시각화 함으로써 어떤방식으로 동작하는지 설명이 가능해진다
    • weight의 GradCAM을 통하여 어떤부분에 모델이 집중하는지 보여주면서 왜 잘 동작했는지, 동작하지 않았는지를 더 쉽게 설명이 가능하다
    • 시각화된 결과를 기반으로 추가적인 성능 향상을 위한 가설을 세울 수 있다

CNN Visualization

  • CNN Visualization에는 다양한 방법들이 존재한다
  • 이 글에서는 Model behavior analysis와 Model Decision analysis부분에 대해서 다룬다

Model behavior analysis

  • 모델 자체의 행동에 집중하여 분석하는 기법

Embedding feature analysis

High Level의 Layer에서 얻어지는 Feature를 분석하는 기법이다

Nearest Neighbors in Feature Space

  • Nearest Neighbors를 이용한 모델 시각화이다
  • Neural Networks를 이용하여 High Level의 Feature를 뽑고 이를 이용하여 DB를 생성한다
  • test Data를 Model에 넣어서 kNN으로 모델이 생성한 High dimensional Feature Space를 확인한다
  • 예제를 보고 판단하기 때문에 전체적인 부분을 확인하기는 힘들다

t-SNE

  • 위의 모델이 생성한 High demensional Feature Space를 Low dimensional Space로 변화시켜서 시각화하는 방법
  • Feature의 전체적인 그림을 그려주어서 Feature Space를 어느정도 이해할 수 있도록 도와주는 역할을 한다

Activation investigation

Mid ~ High Level Layer에서 이루어지는 Feature 분석 기법이다

Layer Activation

  • mid to high level hidden unit의 행동을 파악해보는 기법
  • 특정 Layer의 특정 Node를 가공하여 어느부분을 집중적으로 보는 node인지를 masking한다

Maximally activating patches

  • Hidden Node 별로 가중치가 가장 높은 부분을 뜯는 기법
  • 국부적인 부분에 적합하여 Mid Level Feature에서 사용한다

Class visualization

  • 예제 데이터를 사용하지 않고 네트워크의 parameter로 이미지를 시각화 하는 방법
  • 특정 class에 대한 네트워크의 예상치를 확인하는 방법이다
  • 이것을 보고 주변객체와의 연관성 등도 파악이 가능하며 데이터의 편향성이 존재하는지도 파악 할 수 있다
  • 특정 이미지를 넣어서 확인하는 것이 아닌 dummy 이미지를 넣어서 확인한다

Model Decision analysis

  • 모델의 특정 입력에 대해서 경향에 집중하여 분석하는 기법

Occulsion map

  • 특정 부분에 Occusion patch를 이용하여 가린 이미지들로 뽑은 Score바탕으로 heapmap을 구성하는 방법
  • 특정 이미지의 스코어 영향을 미치는 영역을 파악할 수 있다.

via Backpropatation

  • 특정 이미지에 대해서 classification하는데에 영향을 미친 부분을 heapmap으로 표시하는 기법
  1. 특정 이미지에 대한 class의 스코어를 얻는다
  2. Backpropagation을 통해서 입력 이미지의 Gradient를 구한다
  3. 얻어진 Graident의 magnitude를 구한다
    • 얼마나 큰 영향을 끼쳤는지가 중요하기 때문에 부호를 제거한다
  4. 해당 map을 시각화

Class Activation Mapping

  • 특정이미지에 대해서 어떤 결과가 나왔고 어떤부분을 참조하였는지를 보여주는 기법
  • Global Average Pooling + FC Layer가 있는 모델에서만 사용이 가능하다

Grad CAM

  • CAM과 같이 특정이미지에 대해서 어떤 결과가 나왔고 어떤부분을 참조하였는지를 보여주는 기법
  • CNN Backbone이기만 하면 어떤 모델이든지 사용이 가능하다

reference

부스트 캠프 ai tech 8주 3일차 Object Detection


Object Detection

  • 특정 오브젝트가 어디에 위치해있고, 그 오브젝트가 무엇인지를 탐지하는 Task를 말한다
  • Classification과 Box Localization을 같이 하는 Task
  • 자율주행이나 OCR등에서 사용된다
  • Classification과 Box Localization을 따로 연산하는 Two Stage 방식과 동시에 연산하는 One Stage 방식이 존재한다

Two Stage Object Detection

  • 이미지의 BBox를 추출하고 이 BBox로 Classification을 진행하는 모델을 말한다
  • R-CNN 계열의 모델이 여기에 속한다
  • 2단계로 연산을 하기 때문에 연산속도는 느린편에 속하지만 정확도가 높다
  • 이미지로부터 BBox를 만들어 내는 알고리즘
  • 이미지의 색상단위로 Over Segmentation을 진행하고 규칙에 따라 점점 합쳐나가는 알고리즘
    • Color Similarity
    • Texture Similarity
    • Size Similarity
    • Shape Similarity
    • A final meta-similarity measure

R-CNN

Classification이 바로 Object Detection에 응용된 모델이다.
모델은 아래와 같이 간단한 단계로 BBox를 구하고, Classification을 진행한다

  1. Selective Search를 사용하여 물체가 있을 법한 후보를 선택한다(~2k)
  2. 선택된 후보군 전체에 대해서 이미지의 크기를 재가공하여 Classification 모델에 집어넣는다 (2000개의 후보들에 대해서 모두 CNN, SVM 연산)
  • RCNN은 초기 모델인 만큼 다양한 문제점 또한 존재한다
    • BBox를 뽑아내는 알고리즘은 Seletive Search 같은 Huristic 알고리즘이기 때문에 학습이 불가능해서 성능향상이 크지 않다
    • Selective Search는 Cpu에서 연산이 이루어지기 때문에 시간도 많이 소요된다
    • 후보 전체에 대하여 Classfication을 한번씩 진행하다보니 연산량이 많아져서 시간소모가 크다

Fast R-CNN

기존의 R-CNN의 연산이 매우 오래걸린것을 해결한 모델이다.
Roi Pooling을 이용하여 모든 후보에 대해서 Convolution Network 에 입력하던것을 단 1번으로 줄였다.

  • Keyword
    • RoI Pooling
    • SPPNet

RoI Pooling을 이용한 Fast R-CNN

  1. 전체 이미지를 CNN에 통과시켜서 Feature Map을 추출한다
  2. Seletive Search등의 Region Proposal Method를 이용하여 RoI를 찾는다
  3. 찾은 RoI를 미리 뽑아둔 Feature Map에 투영하여 RoI에 해당하는 부분에 대해서 Pooling을 진행해서(SPPNet 이용) Classification을 위한 FC Layer의 input Size에 맞춘다
  4. softmax연산을 통하여 Classification을 진행한다
  5. Bounding Box Regression을 통하여 BBox의 위치를 재조정한다

R-CNN에서 RoI Pooling을 도입하여 연산속도면에서 획기적인 발전을 이룩한 모델이지만 여러 한계점이 존재했다

  • 아직도 Seletive Search를 사용하기 때문에 BBox 검출에 대해서 큰 학습이 이루어지지 않았기 때문에 성능면에서는 큰 차이가 없다
  • 모델 뒷부분의 성능은 개선되었지만 BBox 검출 속도는 그대로기 때문에 Bottleneck 현상이 발생한다

Faster R-CNN

Fast R-CNN의 단점이었던 Seletive Search를 Nueral Network(RPN)로 대체함으로써 End to End로 학습이 가능해진 모델이다

  • Keyword
    • RPN
    • NMS
    • IoU (Intersection over Union)
      • 두 BBox가 얼마나 잘 겹쳐있는지를 판단하는 Metric

RPN

  • Region Proposal Network

R-CNN 계열에서 RoI를 생성하던 Region Proposal Method를 대체하는 Network이다.
RPN에서는 다양한 모양의 BBox를 출력 해 내기 위해서 미리 특정 크기의 Anchor Box들을 구현해 놓고 이 Anchor Box들과 대조하여 IoU를 계산한다.

  • Faster RCNN 에서는 3개의 Scale과 3개의 비율을 조합하여 9개의 Anchor Box를 미리 정해 두었다.

RPN에서는 Slide Window 방식으로 Anchor Box를 이용하여 물체가 존재하는지에 대한 유무와 BBox의 delta 값을 Feature Map으로 부터 추출한다

  • Delta : 고정된 크기의 Anchor Box를 실제 BBox에 일치시키는 이동 정보를 담고있는 벡터를 말한다

결론적으로 RPN을 학습시키면 물체가 존재할 가능성이 높은 BBox를 도출하는 쪽으로 학습이 진행된다

RPN으로 부터 추출된 BBox 좌표를 기준으로 기존에 뽑아두었던 Feature Map에 RoI Pooling을 적용하고 Classification과 Box Regression을 진행한다

Non Maximum Suppression

  • RPN으로 생성된 수많은 BBox중 중복되는 Box들을 지우는 알고리즘
  1. 동일한 클래스에 대해서 Sorting을 통해 Comfidence 순서로 정렬 시킨다
  2. 가장 Confidence가 높은 BBox와 IoU가 일정 이상인 BBox는 중복되었다고 판단하고 삭제한다

추가적인 사항

  • 실제로 Faster RCNN을 학습시킬때는 RPN과 RCNN 모델을 따로 각각 학습을 시킨뒤에 붙였다고 한다

One Stage Object Detection

  • 이미지의 BBox를 추출하면서 Classification까지 동시에 진행하는 모델을 말한다
  • 1단계로 연산을 하기 때문에 실시간 처리속도가 높지만 정확도가 2 Stage Detector 보다 조금 떨어진다

YOLO

  • One Stage Object Detection Model의 대표적인 모델
  • Faster RCNN과 유사하게 Anchor Box와 Box Regression을 통해서 BBox를 예측한다
  • Anchor Box의 위치를 찾는것과 동시에 Class Probability map을 생성한다
  • Class Probability map과 BBox를 합쳐서 detection을 마친다
  • 초당 처리 프레임 수는 Faster RCNN을 앞섰지만, 성능면에서는 조금 떨어지는 경향을 보였다

Single Shot MultiBox Detector(SSD)

  • YOLO의 정확도 문제가 개선된 One Stage 모델이다
  • 아래의 그림과 같이 여러개의 Feature Map에서 Anchor를 이용하여 Feature를 추출한다
  • 각 레이어마다 Anchor Box에 대한 정보들을 종합하여 최종적으로 NMS를 통해 겹치는 BBox를 제거하여 결과를 낸다
  • 이를 통하여 Yolo와 비슷한 수준의 처리속도와 Faster RCNN을 넘는 성능을 보여주었다

RetinaNet

  • Focal Loss와 FPN구조를 도입함으로써 One Stage Detector의 성능을 더욱 끌어올린 모델 구조
  • Keyword
    • Focal Loss
    • Feature Pyramid Network(FPN)

Focal Loss

  • One Stage Detector의 고질적인 문제인 적은 Positive Sample 문제를 해결하기 위해 고안된 Loss 함수이다
    • Positive Sample은 단 하나지만 Negative Sample은 엄청나게 많이 발생하기 때문에 Class imbalance 문제가 발생한다
  • Cross Entropy loss로 부터 고안된 Loss 함수
  • 맞추기 쉬운 Sample에 대해서 발생하는 weight를 낮추고 맞추기 힘든 Sample에 대해서는 높은 weight를 주게 된다
    • loss값은 Focal loss가 작지만 같은 지점의 Gradient를 보면 Focal Loss가 훨씬 크다

Feature Pyramid Networks

  • 서로다른 해상도의 Feature Map을 쌓아올린 형태를 가지는 CNN 모델이다
  • 입력층에 가까울수록 Low Level의 Feature를 가지고, 출력층에 가까울수록 High Level(Global Level)의 Feature를 보유하는 CNN의 특성을 이용하였다
  • (a)는 다양한 Scale의 Feature 맵을 사용해서 다양한 크기의 Object를 탐색하는 것이 가능하고 성능도 좋다. 하지만 여러장의 이미지에서 모두 Feature Map을 추출해야하기 때문에 느린 처리속도를 가진다
  • 기존의 Yolo는 단일 Scale의 Feature 맵을 사용하는 (b) 방식을 사용했다. 모델구조가 단순하여 빠른 처리가 가능하지만, 성능이 떨어지는 단점이 존재한다
  • SSD에서 사용한 방식인 (c)는 다양항 크기의 Feature Map을 사용하여 좋은 성능과 빠른 처리속도를 보여주었지만, Backbone을 지나서 충분하게 High Level 수준의 Feature들을 합쳐서 결과를 내기 때문에, 더 높은 해상도의 Low Level Feature Map(High Resolution map)을 사용 하지 않아 Small Object 검출에 한계가 있다고 논문에서 서술했다
  • FPN에서는 (d)의 구조를 통하여 Low Level 부터 High Level 까지의 Feature Map을 전부 사용하여 검출이 힘든 작은 물체 까지 잘 검출하는 모습을 보여주었다

reference

부스트 캠프 ai tech 8주 2일차 Sementic Segmantation


Semantic segmentation

  • 이미지의 픽셀단위로 Classification을 수행하는 Task
  • 의료분야에서나 자율주행, 영상편집 등의 분야에서 다양하게 사용된다.

Fully Convolutional Networks (FCN)

  • KeyPoint : 기존 fully connected Layer(fc Layer)를 Convolutional Layer로 대체하면서 fc Layer의 문제점을 해결하고 Semantic Segmentation까지 end to end로 구현한 모델
  • 기존의 Classification 모델들은 마지막 Layer를 fc Layer로 구성하기 때문에 고정된 input 이미지 사이즈를 가져야 했지만 1 x 1 Convolution Layer를 사용하면서 가변적인 input 이미지를 사용할 수 있게 되었다

  • 맨 마지막 단에 Upsampling을 시행하여 해상도를 맞춰주어 Segmentation을 한다

    • Transposed Convolution
  • 아래와 같은 특징을 골고루 가지기 위해 중간단계의 map을 Upsampling을 해서 가져와 더한다. 단계별 Map들이 합쳐지면서 더 좋은 Segmantaion 이 가능했다.

    • Layer를 적게 거칠수록 이미지의 지역적이고 세부적인 부분에 집중한다
    • Layer를 많이 지나가면 이미지의 전체적인 부분에 집중한다

U Net

  • FCN을 유사한 구조를 가진 Segmentation 모델
  • Feature를 추출하는 Contracting 과정과 Upsampling을 단계적으로 진행하는 Expanding 과정으로 나뉜다
  • Contracting Path
    • 한번의 과정이 끝날 때 마다 Channel 수를 2배로 늘린다
    • 기존의 FCN의 추출과정과 비슷하다
  • Expanding Path
    • 해상도를 2배씩 늘리면서 점진적으로 Upsampling을 진행한다
    • 반대로 Channel수는 절반으로 줄이면서 진행한다
    • Contracting 과정에서 대칭으로 대응되는 Layer에서 나온 Map과 Concatenating을 진행해서 Fusion 시킨다
  • 주의할점
    • MaxPooling을 통해서 크기를 반으로 점진적으로 줄이고 다시 Upsampling을 통해 2배씩 늘려나가기 때문에 이미지 사이즈가 홀수일 경우 차원이 맞지않아 계산이 불가능하다

DeepLab

  • 구글에서 2018년에 작성된 논문으로 그 당시 좋은 성능을 보여주었다
  • 모델의 특징으로는 Dilated convolution와 Depthwise separable convolution를 이용하여 파라미터 수를 줄이면서 성능을 유지시켰다
  • 본 글에서는 논문의 주된 특징인 Dilated convolution와 Depthwise separable convolution Layer에 대해서 다룬다

Dilated convolution

  • Atrous Convolution 이라고도 한다
  • 필터 내부에 빈 공간이 존재하는 Convolution Layer를 말한다
  • parameter r을 조절하여 내부의 빈 공간의 크기를 조절 할 수 있다
    • 1일 경우 기본적인 Convolution Layer와 동일
  • 동일한 양의 파라미터와 계산량을 유지하면서 한 픽셀이 볼 수 있는 영역을 크게 할 수 있다.
    • 기존에 한 픽셀이 볼 수 있는 영역을 크게 하기위해서는 Kernel Size를 키워야 했는데 이는 필연적으로 파라미터와 계산량의 증가가 따라온다
    • 이미지 데이터의 경우에는 한 픽셀 주위의 픽셀이 어느정도 연관이 되어있다고 가정할 수 있기 때문에 가능한 방식으로 생각된다

Depthwise separable convolution

  • 기존 Convolution Layer의 연산을 2단계로 분리시켜서 사용되는 파라미터 수를 획기적으로 줄인 방법이다
  • Convolution Layer에서는 Channel축을 필터가 한번에 연산하지만, Depthwise separable convolution Layer에서는 Channel을 분리해서 1의 길이를 가지는 여러개의 Feature로 만들고 여기에 1 x 1 x 채널길의 크기의 필터를 다시한번 적용하여 연산을 하는 방식을 취한다
  • 이를 통해서 기존 연산에서는 $H \times W \times C \times n$ 개의 파라미터가 필요 했지만 Depthwise separable convolution 연산에서는 $H \times W \times C + C \times n$ 개의 파라미터가 필요하게 되어 수를 더욱 줄일 수 있었다.

reference

부스트 캠프 ai tech 8주 1일차 CNN architectures


Image Classifier

  • 이미지를 분류하는 기본적인 모델을 말한다
  • 충분한 데이터가 존재한다면 모든 분류문제는 K-Nearest Neighobors로 해결이 가능하다.
    • 영상 분류 문제를 검색 문제로 바꿔서 해결이 가능하다
    • 하지만 데이터는 너무 많고, 우리의 머신 리소스는 한정적이기 때문에 모든 문제를 해결하기에는 적합하지 않다
    • 데이터 수에 비례해서 시간복잡도가 증가한다
  • 초창기에는 single Fully Connected Layer를 이용해서 분류 문제를 해결하려 했다
    • 레이어층이 적다보니 평균적인 이미지에서 벗어나면 잘 작동하지 않았다(test 성능이 좋지 않았다)
  • 이미지를 전체적으로 보는것이 아닌 부분적으로 파라미터 연산을 하는 Locally Connected Layer가 등장하였고 Convolution Layer의 전신이 되었다

Data Augmentation

  • 우리가 모델을 학습시킬때 사용하는 Data는 실제 전체 데이터에서 샘플링한 극히 일부의 데이터이다. 또한 데이터를 제작한 사람의 주관또한 들어가 있을 가능성이 존재하기 때문에 Train Data의 분포가 실제 데이터와 일치한다고 보기 힘들다. 이를 보안하기 위해서 Data의 분포를 다양하게 만드는 방법을 Data Augmentation이라고 한다.
  • 기본적인 Augmentation
    • 밝기, 채도, 명암 조절
    • Random Crop, Filp, Rotate
    • Affine Transform : 기하학적 변환
      • warp로 시작하는 함수
  • 특수한 Augmentation
    • CutMix : 두개의 사진을 잘라서 합치는 Augmentation. 라벨값 또한 비율에 맞게 조절한다
  • MixUp : 두개의 사진을 Alpha값의 조절을 통한 픽셀을 합치는 Augmentation. 라벨값 또한 비율에 맞게 조절한다

Transfer Learning

  • 기존에 학습시킨 네트워크를 이용하여 새로운 Task를 해결하는 모델에 재학습 시키는 방법
  • 학습시키는 Dataset이 비슷한 분포를 가지고 있어야 더욱 잘 학습 된다.
  • Layer Freeze
    • 특정한 Layer의 Parameter를 Freeze시켜서 고정시키고 나머지 Layer로만 학습시키는 방법
    • 데이터의 양이 적을때 효과가 좋다
  • Fine Tuning
    • 새로 추가된 Layer의 Learning Rate와 기존 CNN 부분의 Learning Rate를 다르게(기존 부분을 더 작게) 설정하여 Tuning하는 방법
    • 어느정도 데이터가 존재할때 효과가 좋다

Knowledge distillation

  • Teacher Student Learning
  • 큰 모델에서 학습한 weight를 작은 모델에도 비슷하게 작동하게 전달하는 기법
    • 최적화방면에서도 많이 이용된다.

reference