본문 바로가기
  • CobsLab upgrades your company value by AI technology
이미지 처리 논문

Transfer Learning에 관해서… How transferable are features in deep neural networks?

by divers 2022. 5. 16.

오늘 소개해 드릴 논문은 ‘How transferable are features in deep neural networks?’입니다.

콥스랩(COBS LAB)에서는 주요 논문 및 최신 논문을 지속적으로 소개해드리고 있습니다.

해당 내용은 유투브 ‘딥러닝 논문읽기 모임’ 중 ‘Trasfer learning’ 영상 스크립트를 편집한 내용으로,

영상으로도 확인 하실 수 있습니다. (영상링크: https://youtu.be/JI5kXF_OUkY)

https://youtu.be/sXIurFr804w

Transfer learning이라는 개념은 이전에 포스팅 한 ‘BERT’라는 논문에서도 등장한 개념입니다. 본 논문을 통해서, Transfer learning의 개념을 자세히 알아보겠습니다.

‘How transferable are features in deep neural networks?’는 transfer lerning에 관한 논문입니다. transfer learning의 정의는 다음과 같습니다. 어떤 task A (이 task를 original task 혹은 base task라고 부르겠습니다)에 대해서 학습된 네트워크가 있을 때, network의 layer의 일부를 가져와서 새로운 task B에 새로운 신경망을 학습을 하는 데 사용하는 기법을 transfer raning이라고 합니다. 참고적으로, 위 이미지에 나와있는 AnB+ 와 같은 기호에 대해서는 뒤에서 자세한 설명을 드리겠습니다.

이 논문의 실험에서 사용되는 network는 input layer를 제외하고 8개의 layer를 가지는 network를 사용합니다. 그리고 이 논문의 주제는 어떤 feature들이 network 내에서 얼마나 general 한 지 혹은 specific 한 지를 정량화하는 방법에 대한 실험 및 결과 분석입니다.

여기서 어떤 feature가 general 하다는 것을 설명하기 위해 위 그림을 살펴보겠습니다. 일반적으로 컴퓨터 비전에서 딥러닝 신경망을 학습할 때, 저층 layer에서 feature를 시각화하는 경우를 예로 들어보겠습니다. 위 그림에서 보이는 것처럼 edge를 detecting 하는 것 같은 feature 그리고 색깔 덩어리들을 detecting 하는 것 같은 feature, 즉 gabor filter와 color blobs, 가 나타나지 않으면 학습이 잘 되지 않았다고 의심할 정도로 저층 layer에서 이러한 feature들을 잘 볼 수 있습니다. 이러한 피처들을 general 하다고 하고, 서로 다른 dataset와 서로 다른 task 들에 대해서 공통적으로 나타나는 feature들이기 때문에, 이러한 feature들을 general 하다고 합니다. 그리고 layer에서 후반부로 갈수록 각 layer는 점점 더 각 네트워크에 맞는 tssk에 대해서 specific 하게 됩니다.

예를 들어서 보면 위 그림과 같습니다. 저층의 layer는 앞에서 본 것처럼, gabor filter와 color blobs가 나타나는데 중반 layer와 후반 layer로 갈수록 task의 specific 한 feature들이 시각화된다는 것을 볼 수 있습니다.

위 문장은, general 한 feature와 specific 한 feature에 대해 말로 된 정의입니다. 앞서 설명한 것과 같은 의미입니다.

다시 실험 이야기로 돌아와서, 본 실험에서는 8개의 layer를 가지는 네트워크에서 각 layer가, 각 feature가 얼마나 general 한지, 그리고 이 general 한 것이 specific 해 지는 정도가 어떤 커브를 그리면서 변하는지에 대해 정량화하는 실험들을 진행합니다.

이러한 실험은 물론 base task A와 target task B에 의존하게 됩니다.

그리고 이 실험에서는 ImageNet dataset을 사용합니다. 그리고 task는 classification입니다. ImageNet dataset을 정확히 500개의 클래스를 갖는 두 dataset으로 랜덤 하게 나눕니다.

그렇게 되면 ImageNet dataset에서 연관된 카테고리들, 즉 연관된 클래스들이 많이 있습니다. 위에 보시는 바와 같이, fire truck과 garbage truck이 다른 카테고리로 1천 개 중에 속해있습니다. 이렇게 연관된 카테고리들이 랜덤하게 나눠지게 되면, dataset A와 dataset B에는, 확률적으로, 거의 절반씩의 카테고리들이 들어가게 됩니다. 따라서, 이 두 dataset은 similar 하다고 볼 수 있습니다.

그 이유는, 위에 설명과 대조적으로, 두 개의 dataset으로 나누는 기준으로 man-made와 natural로 나누는 방법이 있습니다. 운이 좋게도 ImageNet dataset 1000 개의 클래스 중에서 551개는 인위적인 사물들이라고 할 수 있는 man-made 카테고리들이 있고, 449개는 natural 카테고리들이 있습니다. 대략 비율이 비슷해서, 둘로 데이터 셋을 나누어서 이 dataset 두 개가 서로 dissimilar 한 dataset이고 각 dataset을 clasfication 한 테스크는 similar한 테스크라고 볼 수 있습니다.

그리고 후에 있는 실험들을 설명하기에 앞서 용어들을 정의해 보겠습니다. 첫 번째로는 B3B는 B로만 전체 네트워크를 학습한 base 네트워크 B에서 첫 번째 세 개의 layer를 그대로 가져오고, 나머지 5개의 layer를 dataset B로 학습을 하되 처음에 가져왔던 layer의 가중치를 업데이트하지 않고, 가중치를 freeze 하는 네트워크를 B3B라고 합니다. 그리고 selffer network라고 부릅니다. 그리고 이 네트워크의 가운데 숫자 3은 n으로 일반화해서 가지고 오는 layer의 개수가 몇 개냐로 BnB를 정의할 수 있습니다. 다음으로는 transfer network AnB입니다. AnB는 예를 들어 설명 하겠습니다. AnB중 예를 들어 A3B는 A dataset으로만 학습한 전체 network base A에 대해서 첫 번째 3개의 layer를 가지고 와서, 그 layer의 feature를 freeze 하고 뒤 5개의 layer를 target dataset B로 학습한 것을 A3B라 합니다. 용어를 짚고 넘어가면, 가져온 가중치를 업데이트 하지 않는 것을 layer가 frozen 되었다고 하고, 가져온 layer의 가중치도 업데이트하는 것을 fine-tune 한다고 합니다. 위에서 정의한 것들은 모두 layer를 freeze 하는 것이었습니다. 이외에 B3B+, A3B+등, ‘+’ 기호는 가져온 layer도 fine-tune 하는 것을 의미합니다.

그림으로 보면 위와 같습니다. 그림상에서 위 두 개의 네트워크는 각각 dataset A와 dataset B에 대해서 전체 네트워크를 학습한 base A와 base B이고, 각 layer의 색깔로 그 layer를 어떤 dataset으로 학습하였는지 구분할 수 있습니다. 밑에 네트워크 두 개 중 B3B는 base B에서 3개의 레이어를 가지고 오고, layer를 프리즈 하고, 뒤에 다시 B로 학습한 것입니다. 그리고 B3B+는 freeze 하지 않은 것 입니다. 그래서 그림상에서 자물쇠 표시가 잠긴 것은 freeze 한 것, 풀린 것은 fine-tuning 한 것으로 볼 수 있습니다. 그리고 밑에는 trasfer 네트워크 A3B, A3B+ 를 나타냅니다. 마찬가지로 자물쇠가 잠긴 것은 freeze한 것, 풀린 것은 fine-tuning한 것입니다.

위 그림은 base A와 base B를 보여주는 그림입니다.

앞으로 base B, 즉 target task B의 accuracy를 기준으로, 다른 네트워크들 AnB, AnB+, BnB, BnB+ 들의 accuracy를 그래프를 표현할 것이고, 여기서 x축 n는 몇 개의 레이어를 가지고 왔느냐를 나타냅니다.

먼저 base A가 있다고 해보겠습니다. base A는 base task A에 대해서 학습한 네트워크입니다.

A network에서 앞에 layer를 그대로 가지고 옵니다. 그런 다음에 이 layer를 freeze 하고, 전체 network를 image B에 대해서 학습을 시킵니다. 그러면 transfer AnB가 됩니다. 위 그림에서, 색깔로 각 layer가 어떤 데이터로 학습되는지 알 수 있습니다. 이 transfer AnB의 accuracy가 n이 커짐에 따라서, base B와 비교했을 때 어떻게 바뀌는지 살펴보겠습니다.

위 그림에서, 각 점들은 케이스들에 대해서 여러 번 학습을 하고, accuracy를 표시한 것이고, 전체적으로 봤을 때 AnB는 n이 커짐에 따라서 accuracy가 줄어드는 것을 알 수 있습니다. 여기서 알 수 있는 것은 transfer lerning을 했지만 n이 커질수록, 그리고 layer가 freeze 되었기 때문에 그리고 점점 후반부 layer로 갈수록 task A에 specific 하기 때문에 accuracy가 떨어진다는 것을 볼 수 있습니다.

이번에는 base B로 시작하는 selffer 네트워크를 살펴보겠습니다. 먼저 base B가 있고, base B에서 저층 layer들을 그대로 가져와서 freeze 한 후에, 뒤 layer들을 똑같이 dataset B로 학습을 합니다. 그러면 selffer BnB가 될 것입니다.

이번에는 그래프가 어떻게 변하는지 살펴보겠습니다. 그래프상에서 파란색을 보시면, n이 커질수록 accuracy가 줄어들었다가 다시 올라가는 걸 볼 수 있습니다. 특히, A의 n=4일 때 그리고 n=5일 때 accuracy가 크게 떨어집니다. 그 이유는 n=4와 n=5 그리고 n=5와 n=6 이 두 인접하는 layer들이 co-adaptation(상호 적응)이 많이 되어서, 중간을 자르고 앞에 layer를 고정하고 뒤 것을 학습시키면 뒤에 것을 아무리 독립적으로 학습을 시킨다고 해도, 앞에 것이 변해주지 않으면 optimization이 잘 되지 않기 때문입니다. 그리고 이렇게 accuracy가 높게 나오지 않는 현상을 co-adaptation이라고 합니다. 특히 n이 4와 5 그리고 5와 6 사이에 co-adaptation이 크다는 것을 확인할 수 있습니다. 그리고 n이 6과 7일 때 다시 accuracy가 올라갑니다. 이 현상을 보면, 떨어지지 않고 올라가기 때문에, co-adaptation이 network의 중간에서 발생하고, 뒤에 있는 6과 7 그리고 7과 8 layer는 co-adaptation이 없다는 것을 알 수 있습니다. 이러한 점을 본 논문에서 특히 강조하는 부분입니다.

다시 정리해보면, 위 그림의 파란색의 퍼포먼스가 떨어지는 이유는 co-adaptation 때문이고, 빨간색 transfer AnB의 퍼포먼스가 떨어지는 이유는 뒤 layer로 갈수록 layer가 A task에 specific 하기 때문입니다.

그리고, fine-tuning까지 더한 AnB와 BnB를 살펴보겠습니다. AnB+가 가장 높고, n이 커질수록 퍼포먼스가 증가합니다. 그 이유는 transfer learning도 했고, 거기에 fine-tuning까지 해서 generalization에 도움이 되었기 때문에 가장 좋은 퍼포먼스를 내고 있다고 볼 수 있습니다. 그리고 신기한 것은 BnB+도 대체적으로 n이 커질수록 모두 base B보다 높은 퍼포먼스를 내고 있습니다. 이를 통해, BnB+도 똑같은 dataset B로만 학습을 한 것이지만, 초기화가 잘 된 layer들을 가지고 와서 학습을 하느냐에 따라서 성능이 개선될 수 있다는 점을 알 수 있습니다.

그리고 AnB의 성능을 구간으로 묶어서 나타낸 것인데, 첫 번째 row가 나타내는 것은, n이 ‘1 – 7’인 네트워크의 성능의 평균, 그것이 얼마나 base B와 selffer BnB+보다 증가되었느냐를 나타내는 것이고, ‘3 – 7’은 5개의 네트워크를 평균 낸 것입니다. ‘5 – 7’은 3개의 네트워크 평균 낸 것입니다. 표의 ‘layers aggregated’가 뒤로 갈수록 더 성능 상승 폭이 큰 걸로 봤을 때, transfer learning을 할 때 fine-tuning까지 하는 경우에, 더 많은 layer를 가지고 올 수록 더 좋은 성능을 낸다는 것을 알 수 있습니다.

지금까지는 similar 한 dataset에 대한 실험이었습니다. 이제 dissimilar 한 dataset에 대한 실험을 살펴보겠습니다.

위 그림에서, 6 각형의 주황색 그래프는 dissimilar dataset의 AnB의 평균 accuracy이고, y축을 보면 마이너스로 표시된 것은, base B와 비교했기 때문에, 성능이 마이너스로 나타나는 것입니다. 위 그림에서 다이아몬드 모양의 빨간색의 그래프는 similar 한 데이터셋으로 전이 학습을 한 AnB의 평균 accuracy의 base B와 비교한 결과입니다. 여기서 볼 수 있듯이 두 tsk가 dissimilar 할수록 n이 커짐에 따라서 performance drop이 크다는 것을 알 수 있습니다. 결국 dissimilar 할수록 transfer learning의 이점이 작다는 것을 알 수 있습니다.

또 한 가지 흥미로운 실험이 있습니다. Jarret이라는 연구자가 2009년에 발표한 논문에서, convolutional 네트워크에서 저층의 layer를 랜덤 하게 초기화하고 학습을 하지 않았을 때, 어느 정도의 성능을 낸다는 것을 관찰을 했습니다. 해당 실험은 좀 더 작은 데이터셋과 좀 더 작은 네트워크에 대한 실험이었습니다. 그런데 오늘 소개해드린 논문의 실험은 아주 큰 dataset인 ImageNet dataset이고, 좀 더 큰 network에 대한 실험을 했을때 저층 layer를 랜덤하게 초기화했을 때 Jarret의 연구 결과만큼 퍼포먼스의 증가는 없었습니다.

n이 커짐에 따라서, 즉 랜덤하게 초기화 한 저층 layer가 많아짐에 따라서, 퍼포먼스가 drop을 합니다. n이 ‘2 – 3’으로 갔을 때, 즉 두 개의 layer만 가져오지 않고 세 개의 layer까지 랜덤 초기화를 했을 때, 급하게 급격하게 accuracy가 drop는 것을 볼 수 있습니다. 여기서 알 수 있는 사실은 저층 레이어 2까지가 general 하다는 사실입니다.

최종 결과를 정리해보겠습니다. 실험에서 layer가 얼마나 general 한 지 specific 한 지를 정량화할 수 있는 수단에 대해서 알아봤습니다. 그리고 transfer learning이 영향을 받는 요소인 co-adaptation이라는 개념을 알 수 있었습니다. 그리고 feature의 specificity를 알 수 있었고, 또 얼마나 두 task가 두 dataset이 차이가 있느냐에 따라서 transferability가 결정된다는 것을 알 수 있었습니다. 그리고 BnB+의 사례로 보듯이 fine-tuning은 언제나 도움이 된다는 것을 알 수 있었습니다.

댓글