8/1 Today I Learned -1

boks·2024년 8월 1일
post-thumbnail

📖 학습한 내용

  • 사전학습 모델

📖 핵심내용

📌 사전학습 모델

  • 개요

그대로 사용

  • 준비된 데이터가 많이 없는 경우
  • 하고자하는 task와 사전학습 모델의 목적이 같거나 유사한 경우 사용

전이학습

일반적으로 탑층까지 그대로 사용하고, 이후 분류층은 새로운 테스크에 맞게 변경하고 학습시킨다.

사전학습 모델의 특징추출을 이용하고, 새로운 테스크에 맞게 기계학습 알고리즘으로 대체한다.

  • 고려할 점
    1) 학습모델과 테스크가 얼마나 유사한지
    2) 특징추출이 얼마나 잘 작동하는지

  • 테스크에 맞게 넣을 기계학습 알고리즘 예시


    ※ 분류 알고리즘에서 최종적으로 나온 라벨들의 확률값은 어떤 피처로 사용하기 어렵다.
    어느 지점부터 새로운 알고리즘을 연결할지 고민해야한다.
    테스크가 많이 일치하면 많은 부분을 사용하고, 테스크가 차이가 나면 일반적인 특성정보를 사용해야한다.

  • 사전학습 모델의 특정레이어를 인풋으로 지정
    각 층의 이름을 summary로 볼 수 있다.

Model(inputs=base_model.input, outputs=base_model.get_layer('avg_pool').output)

이 코드에서는 avg_pool의 아웃풋을 새로운 분류 알고리즘의 인풋으로 받을 것이다.
※ 모델 호출할때 include_top 속성이 있다. True면 분류부분 불러오기, False면 탑층빼고 불러오기

새로운 모형 구축

분류층은 가져오지 않음 + 사전학습모델 가중치 고정

model1 = MobileNet(include_top=False, input_shape=(IMG_WIDTH, IMG_HEIGHT, 3))

def model_maker():
    # top 층을 제외한 사전학습 모형 호출
    base_model = MobileNet(include_top=False,
                           input_shape=(IMG_WIDTH, IMG_HEIGHT, 3))
for layer in base_model.layers[:]:
    layer.trainable = False
    input1 = Input(shape=(IMG_WIDTH, IMG_HEIGHT, 3))
    custom_model = base_model(input1)
    custom_model = GlobalAveragePooling2D()(custom_model) # 각 채널 (7x7 채널)에서 평균값 하나만 추출
        # 기본 네트워크의 출력 feature 맵의 차원(높이 및 너비)을  줄임
    custom_model = Dense(64, activation='relu')(custom_model)
    predictions = Dense(NUM_CLASSES, activation='softmax')(custom_model)
        # 출력 층, NUM_CLASSES : 예측 클래스 수 = 2
    return Model(inputs=input1, outputs=predictions)

파인튜닝(미세조정)

  • 가중치 동결
    새로운 학습과정에서 동결된 가중치는 변하지 않는다
    고수준의 특징을 추출하는데 이미 효과적으로 학습되었다고 가정
for layer in base_model.layers[-30:]:

-> 마지막 30개의 레이어를 학습가능하게 설정함

데이터 증강

기존 데이터를 변형, 확장하여 학습시키는 것

  • 오토인코더
    압축 및 복원하는 과정
    새로운 데이터로 인식을 한다
  • imageDataGenerator
    케라스에서 제공하는 데이터증강 매서드

    -> 다양한 포맷의 이미지가 생성된다.

파인튜닝

  • 정의
    모델 전체 또는 대부분의 layer에 대한 가중치 학습
    새로운 데이터가 많이 필요하다.

  • 어떤 층을 다시 학습할 것인가
    가중치 동결 - 새로운 데이터에 대한 학습과정에서 가중치가 변경되지 않는다
    학습 가능한 가중치 - 파인튜닝과정에서 학습이 이뤄지는 부분 -> 특정한 테스크에 맞게 학습이 이뤄짐(가중치 조정)

  • 포인트
    어떻게할지는 데이터 양과 태스크 비슷한 정도로 판단을 한다.

📖 이후 학습 계획

  • transfomer, bert
profile
설계엔지니어의 변신

0개의 댓글