
12강은 활성 layer visualizing의 중요성에 대한 내용입니다.
이 강의에서 말한 시각화의 중요성을 정리하자면,
딥러닝이 동작하는 이유를 시각적으로 설명하기 위함
딥러닝 내부에서 어떤 동작을 하는지 설명하기 위함
입니다.
Alexnet, ResNet-18과 같은 복잡한 딥러닝 Layer를 살펴보면, layer를 많이 거치면 거칠수록,
직관적 무언가를 알아보기에는 굉장히 큰 어려움이 존재하는 것을 알 수 있습니다.

위와 같이, 이미지를 CNN에 넣고 학습을 시키게 되면, 유사한 이미지를 검출할 수 있습니다.

이런식으로 군집화 되어있는 것을 확인할 수 있습니다.
모델이 어떤 부분에 주목하는지, 어떤 특징이 중요한지 파악하는 방법 몇 가지를 말했습니다.
Maximally Activating Patches
Occlusion Experiments
Saliency Maps
Gradient Ascent
Maximally Activating Patches

Maximally Activating Patches는 어떤 이미지가 각 뉴런들의 활성화를 최대치로 만드는지 확인하는 방식 입니다.
Occlusion Experiments

이 방식은 위의 코끼리 사진처럼 마스크 처리가 일부분 되어있는 것을 확인할 수 있습니다.
위 처럼, 마스크의 위치를 이리저리 옮겨가면서, 점수에 변화가 있는지, 없는지 확인하는 방식을 Occulation Experiments 라고 합니다.
Saliency Maps
Saliency Maps는 이미지의 한 픽셀을 보고, 그 부분이 최종 예측에 얼마나 영향을 끼치는지 알아보는 방식 입니다.
Gradient Ascent

이 방식은 전에 나왔던 backpropagation 방식을 feature 시각화에 적용한 방식입니다.
기울기를 구할 때, 역전파 (backpropagation)로 구했었는데, 여기서 weight값을 고정하고, 입력 image를 찾는 방식을 Gradient Ascent 라고 합니다.
방식을 정리하자면,
1. 첫 입력 이미지를 0으로 초기화
2. 이미지의 현재 스코어 계산
3. 이미지를 픽셀 단위로 쪼개고, backpropagation해서 기울기 계산
4. 업데이트(계속 반복)
위의 과정을 거치게 됩니다.
DeepDream

DeepDream 방식은 신경망이 학습한 패턴을 시각화하고, 이미지에 새로운 패턴을 생성하는 기술을 말합니다.
이 방식을 4가지 과정으로 정리하자면,
1. 입력된 이미지를 CNN계층 중간까지만 통과
2. 기울기 저장
3. backpropagation으로 이미지 업데이트
4. Repeat !
이 방식으로 창의적인 이미지 여러개를 뽑아낼 수 있다고 합니다.
Feature Inversion
Feature Inversion 방식을 통해 각 layer에서 어떤 특징이 포착되고 있는지 짐작 가능합니다.
지정한 layer에서 activation map을 추출하고, 이걸 갖고 위의 그림처럼 이미지를 재구성하는 방식입니다.
Texture Synthesis

텍스트 합성 방식입니다.
지정 layer에서 위의 방식처럼 Activation Map을 추출하고, 'Gram Matrix'를 생성합니다.
여기서 Gram Matrix는 다른 공간에 있는 Channel을 가지고, 계산 후에 새로운 Matrix를 생성하는 것입니다.
Neural Style Transfer
말 그대로 스타일 변형 입니다.
예술적으로 합성한 것으로 보면 되고,
이 방식은 새로운 이미지 생성에, Control 해줘야 할 것이 참 많다고 합니다.
또한 순전파, 역전파 과정을 반복해야하는 까닭에 이미지 생성에 속도가 상대적으로 느리다는 단점을 갖고 있습니다.
감사합니당 ~ 🦾