[lecture09]
1. Deconvolution이란?
: Deconvolution 분류결과를 통해서 이미지를 생성하는 것이다.
즉, 원래는 이미지를 CNN처리를 하면 이미지에 맞는 분류 결과가 온다. 이를 반대로 진행해서 분류 결과를 통해서 분류 결과에 맞는 이미지를 생성하는 것이다.
예를 들어 고양이와 강아지로 분류를 한 모델이 있다고 가정하고, 우리는 고양이에 대해서 관심이 있는 상태라고 생각해보자.
그러면 강아지 관련된 뉴런의 경사는 0으로 만들고, 고양이에 대한 경사는 1로 만들어서 역전파를 진행한다. 이렇게 진행하면 아래와 같은 고양이와 닮은 약한 이미지가 생성된다.
2. Deconvolution의 목적
위의 과정을 진행하면 결국 결과 값으로는 해당 모델이 고양이라고 생각하고 있는 이미지가 생성이 된다. 하지만 이 이미지가 고양이 이미지와 다른 이미지를 만들어내는 경우, 해당 모델의 뉴런들은 올바른 특징 파악을 하지 못하고 있는 상태이다. 반대로 이 이미지가 고양이와 비슷한 이미지를 만들어 내는 경우 해당 모델의 뉴런들은 올바른 특징을 제대로 파악하고 있는 상태이다.
따라서 Deconvoluton을 하는 이유는 각각의 뉴런이 제대로된 역할을 하고 있는지 시각적으로 확인하기 위해서이다.
3. Optimization의 과정
위의 Deconvoluton에서는 내가 관심 있는 클래스의 뉴런의 경사를 1로, 관심 없는 클래스의 뉴런의 경사를 0으로 만들었다. 하지만 Optimization에서는 내가 관심 있는 클래스의 스코어에 대한 경사를 1로 설정하고, 관심 없는 클래스이 스코어에대한 경사를 0으로 설정한다.
그 후 이미지 자체를 학습한다.
즉, 원래는 모든 값이 0인 빈 이미지를 갖고 있었지만, 해당 이미지를 Forward pass를 하고, 특정 클래스의 스코어의 경사만 1을 설정하고 Backpropagation을 통해서 해당 클래스와 관련된 뉴런들이 중요하게 생각하는 특징들을 이미지에 패턴을 입력한다.
이 과정을 반복하면 특정 클래스와 관련된 뉴런들이 중요하게 생각하는 이미지가 최종적으로 만들어진다.
즉, 최종적으로 만들어진 이미지를 해당 모델에 넣으면 특정 클래스의 스코어가 최대값이 된다. 쉽게 말해서 이 모델이 특정 클래스에서 정답으로 생각하는 이미지를 생성할 수 있는 것이다.
만약에 거위 클래스의 스코어를 선택해서 이미지를 생성하면 아래와 같은 이미지가 생성될 수 있다.
5. Optimization에서 ForwardPass를 거치는 이유
ForwardPass는 이미지를 학습 시키지 않고 출력 값만 가져오는데 왜 필요할까?
위에서 과정을 반복하면서 이미지에 패턴을 입힌다고 했다. 이렇게 패턴을 입히려면 역전파를 진행해야하는데 이 역전파를 진행하기 위해서는 수정됩 이미지가 필요하다. 이 이미지를 제공하기 위해서 Forward Pass를 진행한다.
4. Optimization-Based approach with Regularization
max라는 건 최대 값을 찾는 것이다. 또, λ||I||는 해당 이미지의 크기이다. 하나의 이미지가 많은 클래스에서 최대 스코어가 나오게 하려면 각각의 이미지 패턴이 입혀져서 이미지 자체의 크기가 커진다. 우선 이 점을 잘 알아놓고 아래의 설명을 해보겠다.
이제 위의 식 전체를 살펴보자.
위 식의 의미는 arg max(특정 클래스에 대해서 최대 스코어를 갖는 이미지 - 이미지 크기)라고 할 수 있다.
즉, 두가지의 조건이 생긴다. 특정 클래스에 대해 최대 스코어를 갖는 이미지, 이미지의 크기가 작은 이미지이다.
이렇게 되어야한 괄호 내부의 있는 값이 최대치가 된다.
쉽게 말하면 여러 패턴이 입혀지지 않고, 하나의 클래스의 패턴만 있는 이미지를 추출하는 공식이다.
이러한 공식을 사용하면 지나치게 비현식적인 형태가 되지않는다. (예를 들면 개의 머리와 사람의 몸을 하고 있는 이미지)
[lecture10]
1. 왜 이미지 캡셔닝은 CNN을 사용하지 않고, RNN을 사용하는가?
이미지 캡셔닝은 이미지를 분류하는 것 뿐만 아니라 이미지에 대해서 설명하는 작업이 필요하다. 즉, 이미지를 텍스트로 변환해야한다.
만약에 강아지가 밥을 먹는 이미지를 캡셔닝한다면, 강아지가 밥은 먹는다. 라는 텍스트가 설명으로 와야한다. 하지만 CNN은 단순하게 특징만 파악하지 텍스트로는 설명이 힘들다.
텍스트로 변환하기 위해서는 문맥이 중요하다. 이런 문맥은 전 단어를 참고해서 다음 단어를 예측해야한다. 이러한 것에 유리한 것이 RNN이기 때문에 RNN을 사용한다.
2. 해당 사진에서 같은 l이 입력으로 주어지는데 왜 예측되는 값은 각각 l, o로 다를까?
답은 이전의 hidden state가 다르기 때문이다.
즉, 이전 입력값이 다르기 때문이다. 첫 l은 이전에 e가 입력값으로 주어진다. 따라서, 다음 값을 l로 예측했고 다음 l은 이전 값이 l이기 때문에 다음 값을 o로 예측한 것이다.
3. cell state를 업데이트하는 방식
위의 사진과 같이 이전 cell state에서 중요한 부분만 일부분 추출하고, 당시에 들어온 입력 값(g)중 중요한 일부분을 추출해서 그 값을 더해서 새로운 cell state를 업데이트한다.
4. 왜 cell state를 하면 장기기억을 잘할까?
hidden state는 연산할 때마다 값이 계속 곱해진다. 이렇게 값을 계속 곱하다 보면, 아주 큰 값이나 아주 작은 값이 되어 결국 "기울기 손실"이라는 문제가 생길 수 있다. 즉, 값이 점점 작아지거나 커지면서 중요한 정보가 사라지게 되어, 오래된 정보를 잘 기억하지 못하게 된다.
반면에, cell state는 다른 방식으로 정보를 유지한다. LSTM에서는 cell state가 일종의 "정보 저장소" 역할을 한다. cell state는 매번 값이 곱해지기보다는, 새로운 정보와 이전 정보를 선택적으로 합치며 나아간다. 즉, 이전 정보를 손실 없이 그대로 가져갈 수 있는 부분이 있고, 새로운 정보가 필요한 부분만 업데이트되기 때문에, 장기적인 정보를 더 잘 기억할 수 있다. 이렇게 cell state는 계속해서 중요한 정보를 유지하고, 불필요한 정보는 덜어내며 정보를 관리하는 역할을 한다고 보면 된다.
'CVLab > cs231n (2016)' 카테고리의 다른 글
2024.11.07 Q&A (0) | 2024.11.09 |
---|---|
cs231n - lecture11(CNNs in practice) (0) | 2024.10.27 |
cs231n - lecture10(RNN) (1) | 2024.10.09 |
cs231n - lecture09(CNN의 시각화 및 이해) (5) | 2024.10.06 |
2024.10.04 Q&A (0) | 2024.10.04 |