작성
·
385
0
선생님 안녕하세요, 항상 강의 잘 듣고 있습니다.
다름이 아니라, 해당 강의에서 다룬 pretrained된 모델을 기반으로 classification level만 바꾸어 훈련할 때, pretrained 되어 저희가 가져온 부분에 해당하는 가중치들은 변화하지 않고 오직 저희가 마지막에 추가한 레이어들에 속해있는 가중치들만 학습이 되는걸까요?
전이 학습을 사용할 때 이미 학습된 가중치들을 가져와서 가중치 초기화를 할 때만 이용할 수도 있다고 언급 하셨어서 이 코드에서는 어느 범위까지 미리 학습된 가중치들을 활용하셨는지 궁금합니다.
또 만약에 pretrained된 레이어에 해당하는 가중치들은 변화하지 않고 오직 저희가 새로 추가한 레이어에 해당하는 가중치들만 경사 하강법을 통해 계속 업데이트 되고 있다면, 기존 코드들에 비해 실행 시간이 훨씬 오래 걸리는 이유가 그만큼 back propagation 과정이 길기 때문이라고 이해해도 될까요?
감사합니다!
답변 1
0
안녕하십니까,
pretrained 모델을 기반으로 전이학습을 한다는 것은 feature map의 가중치를 pretrained된 값을 그대로 유지 한다는 의미가 아니로, 1000개의 class로된 imagenet 데이터 세트로 학습된 feature map의 가중치를 초기에 적용한다는 의미입니다.
일반적으로 cnn 모델을 만들때 이들 cnn filter의 가중치는 random/Xavier/He 초기화가 되어 있습니다. 이들을 말 그대로 초기화이며, 이미지가 가지는 일반적인 외곽선, 질감, 형체 대비, 직선/곡선들의 filter값을 제대로 표현하고 있지 않습니다. 학습을 진행하면서 이들 filter의 weight를 최적화 해나가게 됩니다.
pretrained는 filter의 초기화를 random/Xavier/He 초기화를 적용하지 않고 imagenet dataset로 이미 학습된 filter의 가중치를 초기에 적용합니다. 일반적인 외곽선, 질감, 형체 대비, 직선/곡선들의 filter 가중치 값을 가진 상태에서 학습을 통해서 이 가중치를 학습 데이터에 보다 정교하게 맞춰 나갑니다.
요약 드리면 pretrained 모델을 기반으로 전이 학습을 한다는 것은 그렇지 않은 경우에 대비해서 가중치 학습에 출발 선상이 다른 것입니다. 때문에 더 최적으로 filter 가중치를 빠르게 정확하게 학습 할 수 있습니다.