[n433]Auto Encoder(AE)
■ Key words
ㆍAE(Auto Encoder)
- Input(Encoder; Input X)
- Latent Feature(잠재된 특징)
- Output(Decoder; same Input X)
■ 주요내용
ㆍAE(Auto Encoder) : "출력 = 입력"을 학습시키는 신경망. 차원 축소 등을 위해 표현학습(representation learning)
또는 특징학습(feature learning)을 비지도 학습의 형태로 학습하는 신경망
⇒ input x를 넣어 이르 특징을 잡아주는 벡터 z를 생성하고, 이를 바탕으로 x를 복원(reconstruction)하여 나온
x'과 x의 차이를 손실함수(reconstruction error)로 정의한 후 z를 학습하여 input data의 특징을 labeling 하는 것
- 입력데이터 자체를 레이블로 활용하는 학습방식 / 별도의 레이블이 필요없는 비지도학습.
- 목적 : 네트워크가 중요한 의미를 갖는 신호 외의 noise를 제거하도록 훈련함으로써 차원 축소
· 잠재적 표현(Latent Representation) : Auto Encoder에서 코딩된 코드영역
- 구조 : encoding/decoding model(parameter)가 동시에 학습되나, 분리하여 활용 가능(Feature extractor 등)
· Encoding : 데이터를 잠재적 표현으로 변경하는 차원축소과정(→ Latent Representation)
· Decoding : 잠재적 표현에서 다시 데이터로 재구성하는 과정(→ Data)
· Latent Representation : 데이터의 정보량이 많은 부분 또는 대표적인 속성이 우선 남게 됨
* 생성 모델적 접근 방식에서 중요 ↔ 생성적 대립 신경망(GAN) 등 Encoder/Decoder 활용으로 생성모델 구현 가능
- 표현학습/특징학습 : 특징 탐지(feature detection)나 분류(classification)를 위해 필요한 특징들을 자동으로
발견하는 시스템적 기법들의 총체
* 다층구조학습 : 여러 층으로 구성된 모델로 학습하는 것. AE가 해당.
- Manifold Hypothesis : 고차원의 데이터가 저차원의 다양체(manifold)에 표현될 수 있다는 가정
(기하학적 유추를 통해 4차원 이상의 공간을 연구하기 위해 도입된 개념)
- Loss Function : 입력과 출력의 차이
⇒ 모델을 통과하며 압축(차원축소)되었다가 복원되더라도 특징을 학습하기 때문에 매우 근사하게 복원됨
- AE의 활용
· 데이터(이미지)의 차원축소(및 복원)
· noise 제거 : 각 image에 임의의 noise를 적용하여 보다 중요한 특징을 학습할 수 있음
· Convolutional Auto Encoder : 가중치를 CNN의 형태로 가져오는 모델.
· 이상현상 발견용 AE : ECG(심전도) 그래프 분석을 위해 개발. 정상 모델로 학습 후 loss값이 threshold를
넘는지 여부로 정상/이상 판별(정상으로 학습하였기에 비정상의 loss값이 큼)
* 일종의 지도학습. 학습대상이 정상으로 labeling 되어있음.
* threshold : 일반적으로 평균보다 1 표준편차(Standard Deviation) 큰 값을 지정(~ 통계 신뢰수준 범위)
threshold 조정을 통해 precision 및 recall 조정 가능.
ㆍStacked Auto Encoder : Encoder의 layer가 너무 깊어지면 학습이 잘 안 일어날 수도 있으므로, AE를
여러 층 쌓아 하나의 모델로 활용하는 것
■ Session note
ㅁ 오전 session
ㆍAuto Encoder : 비지도 학습. Encoder(원본 이미지 차원 ↓) + Decoder(차원 ↑; 원본 이미지 복원)
ㆍ압축 후 복원하는 과정에서 손실이 있음 / noise를 입력하여 복원 성능을 더 올릴 수 있음
ㆍ활용 : 이상현상 발견용 AE : ECG(심전도) 분석
- 정상적인 심전도로 학습 후 비정상 데이터로 테스트; 평균과 표준편차를 활용하여 threshold 지정 및 비정상 판별
ㆍ목적 : label이 없는 데이터에서 input data에서 주요한 특징(feature)을 추출하기 위해
- 추출 후 복원하는 과정을 통해 그 차이를 손실함수로 삼아 특징을 학습함
ㆍ구조 : encoder(차원 축소) - latent feature - decoder(복구)
ㆍ무엇을 할 수 있는가? 차원 축소(loss 발생) / 노이즈 제거 / 이상 감지
ㆍencoder와 decoder의 가중치를 역치로 사용하는 이유 : 학습할 parameter를 줄여서 속도가 더 빠름 / 성능도 잘 나옴
ㆍ과제 : encoder 층을 늘리면서 결과 변화 확인해보기 / 층이 많다고 좋은 것은 아님; 데이터마다 다름
? noise : 일반화, 과적합 방지; 모델 성능 증가 + CNN 활용으로 성능 증가
? mnist image 크기 784(28, 28, 1) : 28*28pixel, channel 1(흑백) / 이미지 크기가 커지고 색(RGB)가 들어갈 경우, input shape이 달라지게 됨
? 일단은 정상범주 사람의 데이터만 넣고 테스트를 비정상적인 사람을 하는건가요?
- 이상치 파악
- 정상범위로 학습
- 정상 / 비정상 테스트
? 모델에 input_shape를 넣을 때는 실제 이미지의 픽셀과 다른 값을 넣으면 모델이 알아서 크롭해서 사용하게 되나요?
그 CNN 과제할 때 사람마다 input_shape을 다르게 했던데 다 모델이 돌아가더라구요
CNN할때 보니까 인풋 안넣어주면 빌드가 안된다고 하던데
- 정석적으로는 원래 image의 실제 pixel값을 넣어줘야 함
- keras의 발달로 Input(shape)을 입력하지 않아도 알아서 인지함
? 비슷한 질문인데 이미지 데이터 제너레이터에서 사이즈 지정해주는것도 완전 자유인가요? 아니면 좋은 사이즈가 있을까요?
- 보통 model 구조에 맞춰서 입력함 / 필요시 실제 사이즈로 넣기도 함
? AE로 푸는 문제는 굳이 레이블이 필요없는 문제 위주인가?
- AE의 목적은 image 압축임. 이를 여러 방면으로 활용하는 것.
? 오래된 사진 복원에 AE 사용? 목적은 차원 축소이지만, noise 제거 차원에서는 활용 가능할 듯
? 혹시 AE를 어제 배운 segmentation, object detection 등에 활용 가능하다면 성능적인 차원에서 AE와 (Faster)R-CNN 중 어느 것이 더 좋을까요?
- AE는 차원 축소를 위한 것이므로, segementation 등의 학습에 활용은 가능하나, 이 둘의 목적이 다르므로 직접적인 성능 비교는 불가함
? 하나의 인코더에 레이어를 여러개 쌓는것과 stacked AE는 다른건가요?
- 학습 방법에 차이가 있음. layer가 이어진 AE는 역전파 1회 / stacked AE는 각각이 AE. 단계에 따라 역전파를 n회 시행함. layer의 층이 깊어지면 학습이 어려워질 것으로 생각하고 분리한 stacked AE 방법이 고안됨. stacked AE 방법의 성능이 좀 더 좋다고 알려짐
ㅁ 오후 session
ㆍAE의 데이터 시각화 : 디코더에서 이미지 복원, 노이즈 제거 이미지 제작 등
ㆍAuto Encoder
- 목적 : 이미지의 차원 축소
- 할 수 있는 것 : 노이즈 제거, 특성추출, 이상치 감지
- 구조 : 인코더(이미지의 차원 축소) + 디코더(차원 복구)
⇒ 인코더로 축소한 것이 특징을 잘 축소했는지 확인하기 위해 디코더로 복구
- latent feature
ㆍstacked AE : AE의 layer가 너무 깊어지게 되면 학습이 잘 안 될 수 있으므로, 여러 개의 AE를 쌓아올린 모델
ㆍDenoising : noise는 해당 image의 특징이 아니기 때문에, 차원을 축소하고 복원하는 과정에서 사라지게 됨
ㆍlatent Variable : input data의 중요한 feature만 남아있는 것
? 정보량이 많은 부분 = 주요한 부분? != feature selection, = feature extraction; 선택이 아닌 추출
- 대표적이고 정보량이 많은 부분이 많이 반영될 것. 중요 특징들은 가중치에 의해서 결정됨
ㆍ이상치 발견 AE
- 주의할 점 : 정상(주류) 데이터로만 학습 → loss 확인 → 모르는(비정상) 데이터는 loss가 커서 threshold 이상일 경우 이상치로 분류
? 오래된 사진 복원 : 학습 시엔 깔끔한 데이터(원본) 필요 / 사용 시엔 오래된 사진을 줄 수 있지만, 학습 시엔 사용 못 함.
? stacked AE : input 50 → softmax layer → output 10
- latent feature가 50. 이 latent feature를 가지고 classification에 활용하는 층임.
* GAN : AE의 반대 과정
ㆍAE로 사전학습한 것을 전이학습으로 이용하여 활용할 수 있음
■ 주요함수
ㆍ
■ Reference
ㆍAuto Encoder : https://www.youtube.com/watch?v=YxtzQbe2UaE
ㆍ Auto Encoder : https://youtu.be/54hyK1J4wTc
ㆍAuto Encoder : https://www.youtube.com/watch?v=3jmcHZq3A5s&t=93s