Denoising Auto Encoder (DAE)

태그
Auto Encoder
포스팅 날짜
2021/11/11
본 세션에서는, 이전 세션에서 언급했던 Auto Encoder (AE) 및 VAE (Variational Auto Encoder) 와 유사한 형태의 네트워크인 Denoising Auto Encoder (DAE)에 대해서 알아보려고 합니다.
앞서 소개드렸던 Auto Encoder (AE) 나 Variational Auto Enocoder (VAE) 에 비교하여 가장 먼저 보이는 구조의 특징적인 변화는 Input Cell 이 있던 위치에 내부에 정삼각형이 그려진 다른 Cell 이 존재한다는 점입니다. 이러한 형태의 Cell 을 Noisy Input Cell 이라고 합니다.
그렇다면, 갑자기 왜 Noisy Input Cell 에 대한 아이디어가 나온 것일까요?
결론부터 말씀드리자면, Denoising Auto Encoder (DAE) 의 목적이 noisy input 으로부터 noise 를 제거하는 것이기 때문입니다. Noisy Input 이 네트워크로 들어왔을 때 output 으로 noise 가 제거된 input 을 얻고 싶은 것입니다.
여기까지 설명드리면, 눈치가 빠르신 분들은
일부러 input 에 noise 를 추가하고 네트워크를 통해 나온 output 이 noise 가 없는 원래 input 과 비슷하도록 학습을 진행하는구나!
라는 것을 알아차리셨을 것 같습니다.
맞습니다.
Denoising Auto Encoder (DAE) 는 고의로 input 데이터에 noise 를 추가하여 이미지를 변형시킨 뒤에 네트워크를 통해서 해당 noise 를 제거하도록 학습을 시켜 나중에 실제 noise 가 포함된 데이터가 존재할 때 해당 데이터로부터 실제로 noise 를 제거할 수 있는 기능을 하게 만드려는 것입니다.
Auto Encoder (AE) 를 이용하여 denoising 을 진행하려고 한 이유는, 일부 noise 가 포함된 input data 더라도 해당 input data 를 잘 설명할 수 있는 representation 을 뽑아낼 수 있을 것이라는 직관에서 나온 시도입니다. 마치, 뿌연 안경을 끼고 바라본 물체를 바라보아도 물체의 원래 모습을 상상해낼 수 있는 것처럼 말입니다.
놀랍게도, 여기까지 오셨다면 Denoising Auto Encoder (DAE) 에 대한 내용을 모두 이해하신 것입니다. 나머지는 Auto Encoder (AE) 와 동일합니다.
그렇다면, 이러한 noise 를 추가하는 방법에는 어떤 것이 있을까요?
Denoising Auto Encoder (DAE) 를 처음 제시한 논문에서는 다음과 같이 적혀 있습니다.
In our experiments, we considered the following corrupting process, parameterized by the desired proportion ν of “destruction”: for each input x, a fixed number νd of components are chosen at random, and their value is forced to 0, while the others are left untouched. The procedure can be viewed as replacing a component considered missing by a default value, which is a common technique.
논문에서는 input data 의 일부 픽셀을 0 으로 만드는 noise 를 추가했다고 합니다. 결과적으로 논문에서는 학술적으로 데이터의 일부가 유실되더라도 복원할 수 있음- 을 보였습니다.
실제 활용 예시는 위와 같다고 보시면 됩니다. Noise 가 존재하는 버전과 그렇지 않은 버전의 두 학습 데이터 쌍을 이용해 비슷한 noise 로부터 noise 를 제거하는 역할을 수행할 수 있습니다.
이렇게 이번 세션에서는 Denoising Auto Encoder (VAE) 에 대해서 알아보는 시간을 가졌습니다. Denoising Auto Encoder (VAE) 의 목적이 noise 가 존재하는 데이터의 noise 를 제거하는 것이고, 이를 위해서 Auto Encoder 의 형태를 빌렸음을 주요하게 알아두시면 좋을 것 같습니다.