Deep learning

Transfer Learning

비비이잉 2021. 7. 23. 15:09
반응형

Transfer Learning은 이미지넷(100만장이 넘는 이미지를 담고 있는 데이터셋으로 각 이미지에 레이블이 붙어 있음)이 제공하는 거대한 데이터셋으로 학습한 가중치의 일부를 능력이 유사하거나 새로운 분야의 신경망에 복사한 후, 그 상태로 재학습을 수행하는 것을 의미한다. 전이 학습은 학습 데이터가 부족한 프로젝트를 진행하는 경우 매우 큰 도움이 된다.

  • transfer learning 설명

https://dataplay.tistory.com/30

  • transfer learning 소스 코드

https://colab.research.google.com/drive/1UKg_Okb1zXdSzInghU6vXQMLnFQTBO5e#scrollTo=KXvkTWMu4Uih

  • tensorflow 공식 튜토리얼

https://www.tensorflow.org/tutorials/images/transfer_learning

  • tensorflow transfer learning 가이드(영어)

https://keras.io/guides/transfer_learning

  • efficientNet 모델 구조 B0

http://www.gisdeveloper.co.kr/?p=8655

  • pytorch에서 데이터 구조 변경하는 방법
  • 데이터 preprocessing & Data Load 하는 함수

https://hwiyong.tistory.com/333

 

 

😊 매개 변수가 줄어들 때의 장점

  1. 넓은 수용영역(Receptive Field)를 소화할 수 있음

- 필터가 작을 수록 국소부위에 대한 특징을 잡아 낼 수 있어 더 많은 디테일을 찾을 수 있다

2. 층마다 활성화 함수 사용 가능

-신경망의 비선형을 유지시켜 신경망의 표현력을 개선할 수 있음

3. 적은 데이터로도 좋은 성능의 신경망을 만들 수 있어 학습의 효율성이 높아짐

 

 

Fine Tuning ?

  • 미세조정
  • 미리 학습된 모델에 새로운 데이터셋을 넣어서 모델의 전체 파라미터를 업데이트하는 것을 말한다. 이는 업데이트 과정에서 파라미터를 완전히 바꾸어버려 overfitting 등의 문데가 생길 수 있어서 미세하고 정교한 파라미터 업데이트를 위해서 변수 초기화 과정에서 제약을 거는 등의 작업을 해주어야함.

 

Bottle Neck ?

CNN계열의 모델에서 CNN을 적용한 가장 마지막의 layer에서 나온 ouptut을 의미함. CNN layer을 거칠때마다 이미지에서 feature가 추출 되는데 그런 feature 중 가장 마지막 단계의 ouptut이라고 생각하면 된다. Transfer Learning 을 할 때에 bottleneck feature를 생성하는 layer까지의 parameter를 고정한다. 그리고 그 이후의 layer를 추가학습하는 식으로 진행한다.

Affine Laye인 Fully connected layer(FC)를 거치기 바로 직전의 추상화된 레이어의 특징들을 bottle next feature라고 말한다. 기존의 imagenet 데이터셋을 기반으로 학습된 모델을 사용하여 이미지의 특징을 추출하고 이 특징을 기반으로 FC레이어를 분류시킬 수 있는 과정이 Feature Extraction, Transfer Learning 이라 함.

 

 

 

overfitting

  • validation loss가 training loss 보다 낮은 걸 뜻함

 

Freezing

Freezing이 어떤 뜻인지?

 

 

Dataset.map(f) https://hwiyong.tistory.com/333(참고)
  • 입력데이터의 셋의 각 원소에 주어진 함수 f를 적용하여 새로운 데이터셋을 생성해준다. 함수형 프로그래밍 언어에서 리스트 또는 기타 구조에 적용되는 map()함수를 기반으로한다. 함수 는 입력에서 단일요소인 tf.Tensor 오브젝트를 받으며, 새로운 데이터셋에 포함될 tf.Tensor 오브젝트를 반환하다.
  • 실제환경에서 이미지 데이터셋 학습시킬 때, 서로 다른 크기의 이미지를 공통 크기로 변환하여 고정크기의 배치를 사용하는데

 

train = raw_train.map(format_example)

validation = raw_validation.map(format_example)

test = raw_test.map(format_example)

이런 형태를 이야기한다.

https://keras.io/guides/transfer_learning/

Code

https://dojang.io/mod/page/view.php?id=2408

file_path = next(iter(list_ds))
image, label = parse_image(file_path)
  • next, iter 이 어떤 역할을 하는지?

즉, iter반복 가능한 객체에서 이터레이터를 반환하고, next이터레이터에서 값을 차례대로 꺼냅니다.

iter은 반복을 끝낼 값을 지정하면 특정값이 나올 때 반복을 끝낼 수도 있다.

iter(호출가능한 객체, 반복을 끝낼값)

>>> it = iter(range(3))
>>> next(it, 10)
0
>>> next(it, 10)
1
>>> next(it, 10)
2
>>> next(it, 10)
10
>>> next(it, 10)
10

next(it,10)으로 기본값을 설정해서 0, 1, 2 가 다 반복되고 나면 10을 출력한다.

https://rfriend.tistory.com/tag/tf.data.Dataset.list_files()

https://rfriend.tistory.com/tag/tf.data.Dataset.list_files()

https://www.tensorflow.org/guide/data_performance?hl=ko

 

 

transfer learning

 

  • next 0,1,2,가 다 반복되면 10을 출력한다.

https://rfriend.tistory.com/tag/tf.data.Dataset.list_files()

 

 

https://www.tensorflow.org/tutorials/load_data/images?hl=ko

 

 

pre-trained model's final part doesn't transfer over because it's specitfic to its dataset. So you have to build the last part of your model to fit your dataset.

 

word embedding can be used for feature extraction

 

include-top= False means that you're not interested in the alst layer of the model. Since modesl are visualized from bottom to top, that layer is referred to as the top layer.( Excluding the top layers is important for featur extraction

 

https://jeinalog.tistory.com/13

 

반응형

'Deep learning' 카테고리의 다른 글

SMOTE for imbalanced image dataset  (0) 2021.08.13
GAN(Generative Adversarial Network)  (0) 2021.08.06
Model Performance Measure  (0) 2021.07.23
Imbalanced data  (0) 2021.07.23
Learning rate scheduler  (0) 2021.07.01