1. 데이터의 형태
- 딥러닝을 이해하는 바업 중 가장 쉬운 방법은데이터의 형태 변화를 좇는 것이다.
- 이미지 데이터는 보통 채널(Channel)이라는 것을 가진다. 우리가 일상적으로 사용하는 것은 대부분 RGB 이미지이다.
- RGB의 표현 방식에 따라 (C, W, H) 또는 (W, H, C)와 같이 표기할 수 있다. 이 표기법을 알고 있다면, 어떤 딥러닝 모듈이 요구하는 데이터 형태를 알아보고 그에 맞게 데이터를 변형 시킬 수 있다.
2. 레이어는 어렵다?
- 레이어(Layer) : 하나의 물체가 여러 개의 논리적인 객체들로 구성되어 있는 경우, 이러한 각각의 객체를 하나의 레이어라 한다.
- 딥러닝에서 보통 신경망의 Weight라고 표현했지만, 정확히는 레이어의 Weight가 맞다. 신경망은 레이어들의 각기 다른 Weight들이 유기적으로 연결되어 이뤄내는 하나의 결과물이다. 이것이 인간의 두뇌와 닮아서 인공 신경망이란 이름을 갖게 된것이다.
3. 딥러닝의 근본! Linear 레이어
- Fully Connected layer, Dense layer 등 다양한 이름으로 불리지만 이러한 것들은 결국 Linear 레이어에 해당하며 이번 노드에선 이 이유로 Linear 레이어라 칭하고 있다.
- 선형대수학에서 쓰이는 용어 중 선형 변환(Linear Transform)이 있는데, 그것과 완전히 동일한 기능을 하는 레이어이다.
- Linear레이어는 선형 변환을 활용해 데이터를 특정 차원으로 변환하는 기능을 한다.
4. 정보를 집약시키자! Convolution 레이어
- 만약 620만개의 parameter가 생성되어야 하는 이미지가 있는데, 여기서 "손"이란 목적을 가지고 Linear하게 데이터를 본다면 모든 픽셀을 살펴야 하기 때문에 비 효율적이다.
- 그래서 고안된 것이 Convolution 레이어이다.
- Convolution 연산이라는 것은 딥러닝 외적으로도 많이 사용되는 개념이다. 필터가 이미지와 겹쳐지는 부분의 Convolution 연산을 통해 계산된다.
5. 핵심만 추려서 더 넓게! Pooling레이어
- 위에서 Convolution 레이어가 이미지 입력을 처리할 때 Linear 레이어에 비해 훨씬 적은 파라미터로 훨씬 효과적으로 중요한 이미지 피처를 뽑는 것을 배웠다.
- Linear레이어는 입력 피처 전체가 매 출력에 미치는 영향을 가중치를 모든 입력 피처 사이에 전부 고려한다.
- 이미지처럼 지역성(Locality) 그 자체가 엄청나게 중요한 정보가 되는 경우, Linear 레이어는 그 중요한 정보가 모두 소실된 채 엄청나게 큰 파라미터 속에서 입력과 출력 사이의 관계 가중치를 찾아내야 하는 어려운 문제를 풀어야 한다.
- 그러나 Convolution 레이어는 필터 구조 안에 Locality 정보가 온전히 보존된다. 인접한 픽셀들 사이에서의 패턴만 추출할 수 있다는 것 자체만으로도 불필요한 파라미터 및 연산량을 제거하고 훨씬 정확하고 효율적으로 정보를 집약시킬 수 있게 된다.
- 그러나 Convolution 레이어에게 몇 가지 문제가 있다.
1) 필터 사이즈가 이미지의 유의미한 정보를 담아내기에는 너무 작은 사이즈일 수 있다.
2) stride를 잘못 주면 찾고자 하는 object가 필터 경계선에 걸려서 인식하지 못할 우려가 있다.
- 이를 해결하기 위해 우리는 수용영역(Receptive Field), MaxPooling 레이어라는 것을 알아야 한다.
6. 집약된 정보의 복원! Deconvolution 레이어
- 마지막으로 Convolution의 결과를 역재생해서 원본 이미지와 최대한 유사한 정보를 복원해 내는 Auto Encoder를 알아본다.
- 우선 MNIST 데이터셋을 입력으로 받아 그대로 복원하는 Auto Encoder를 아래와 같이 만들겠다.
1) 패키지 임포트 및 MNIST 데이터셋 로딩
2) AutoEncoder 모델 구성
3) AutoEncoder 모델 훈련
4) AutoEncoder Reconstructuin Test
- 코드 위주의 실습을 했다.
'공부 > AIFFEL' 카테고리의 다른 글
Exploration 12 : 인공지능으로 세상에 없던 새로운 패션 만들기 (0) | 2021.02.23 |
---|---|
풀잎스쿨 - DeepML(CS231N) Lec. 09 (0) | 2021.02.22 |
FUNDAMENTAL 21. SQL을 이용해 DB와 대화해보자 (0) | 2021.02.19 |
Exploration 11 : 뉴스 요약봇 만들기 (0) | 2021.02.19 |
FUNDAMENTAL 20. 그나저나 데이터는 어디서 가져오지? (0) | 2021.02.19 |