728x90
복습
[Neural Networks]
- 지난 시간엔 선형 score 함수(10개로 분류)를 2개 레이어인 신경망에 적용시키는 신경망을 학습함 (f= W_2*max(0,W_1*x))
- NN을 통해서는 mode 문제(최빈값)를 해결할 수 있음
- 다양한 자동차 모양을 분류할 수 있게 하기 위해, 중간 단계의 템플릿을 학습하게 하는 것이 가능함. 여러개의 템플릿을 합산해서 최종 class score를 계산하면 한가지 색의 자동차 뿐 아니라 다양한 색, 모양의 자동차를 분류할 수 있게 됨
Convolutional Neural Networks
(앞의 히스토리는 생략)
[ConvNet은 다양한 곳에 적용되고 있음]
- 이미지 분류, 이미지 검색, Detection, Segmentation, 자율 주행, Kinetic detection, 의료, 이미지 캡션,GAN 등에 사용
[Fully Connected Layer]
- FC 레이어에서는 벡터를 가지고 연산하는 것
- (1) 32*32*3과 같은 구조의 input 이미지를 1*3072 벡터로 변환
- (2) 가중치 W와 연산 수행. 이 때 W는 10*3072의 가중치를 갖고 있으며 연산을 위해 전치시킴
- (3) 두 행렬의 곱을 통해 총 열개의 Scala를 가진 1*10 벡터가 나옴
[Convolutional Layer]
- Convolutional 레이어에서는 기존 이미지의 구조를 보존시킬 수 있음
- (1) 32*32*3과 같은 이미지 input을 그대로 입력 (물론 데이터 전처리 등은 있지만 여기에선 생략)
- (2) 가중치w 역할을 하는 필터를 이미지의 좌상단끝부터 차례대로 슬라이딩하며 내적을 수행 → 필터와 이미지 일부 곱 당 하나의 scala
- 이 때 필터의 depth는 이미지의 depth와 동일해야 함 (예시에선 3 채널)
- (3) (2)번을 전체 이미지에 적용 → 전체 이미지에 필터를 적용한 scala의 행렬이 도출됨(=activation map)
- activation map의 크기는 전체 이미지 한변의 길이 N - Filter 한변의 길이 F / Stride + 1 로 예시에선 (32-5/1)+1 = 28
- (4) 필터의 개수 만큼 activation map의 개수가 도출됨
- 하나의 input 이미지에, 필터를 통해 만든 activation map이 필터의 개수만큼 있는 Conv layer가 연속된 것이 Conv Net임
- 즉 하나의 이미지에 대해 필터들이 계층적으로 학습한 것임
- 앞부분의 레이어일수록 Low-level feature를 담게 되며 뒤의 레이어로 갈수록 High-level feature를 나타냄
- 아래 레이어에 있는 하나의 셀은, 하나의 필터(=뉴런)로 만들어진 activation map을 나타내며 이는 뉴런의 활성을 최대화 시키는 Input의 모양임. 예를 들어 edge 처럼 생긴 필터를 전체 이미지에 대해 슬라이딩하면 해당 필터와 유사한 값은 값이 더 커짐
[A closer look at spatial dimension]
- 출력 사이즈는 전체 이미지의 크기와 필터 크기, 그리고 필터가 움직이는 stride에 의해 결정됨
- 필터 크기나 스트라이드 크기에 의해 출력 사이즈가 딱 떨어지지 않으면 안됨
zero padding
- ConvN을 수행할 때, 입력 이미지보다 출력 이미지가 작아지게 됨
- 이미지 크기의 손실을 방지하거나, 원하는 출력사이즈에 맞게 하기 위해 제로패딩을 사용할 수 있음
- 일반적으로 제로패딩은 필터의 크기에 따라 적용하게 됨
- 예시 : 32*32*3 이미지에 10개의 5*5 필터를 적용하고 stride=1,pad=2일때
- 출력 이미지 사이즈는 얼마인가
- 기존 32 + 2패딩*2 (좌우 상하 적용되니까) -> 36
- 36-5/1 +1 = 32 그러므로 32*32*10(필터 개수) 의 출력이 나옴
- 이 레이어에 해당되는 총 파라미터 개수는 얼마인가
- 파라미터는 필터에 있으므로
- w : 5*5*3 -> 75개, 하나의 필터당 하나의 바이어스가 있으므로 하나의 필터엔 76개의 파라미터
- 필터가 총 10개이므로 총 파라미터 수는 760
- 출력 이미지 사이즈는 얼마인가
[Pooling layer]
- 이미지를 연산한 레이어들(Representation)을 더 작게, 더 관리하기 쉽게 만드는 것 (파라미터수가 작아지니까)
- 각 activation map에 독립적으로 적용되기 때문에 depth에는 영향을 주지 않음
- Pooling layer에는 제로패딩을 일반적으로 사용하지 않음
- 종류 : 맥스풀링, averagepooling...
요약
- Conv신경망은 Conv, Pool, FC레이어를 쌓아놓은 것이다
- 주로 작은 필터와 깊은 아키텍쳐를 사용하는 트렌드가 있다
- 일반적인 구조는 Conv-relu 레이어를 N(~5)개 쌓은 다음 풀링을 하고, 이 단계를 여러번 반복한다. 그런 다음 FC-relu를 k(0~2)번 한 후 소프트맥스 함수를 통과시킨다. 하지만 ResNet, GoogLeNet이 이 패러다임에 도전하고 있음
'👩💻LEARN : ML&Data > Lecture' 카테고리의 다른 글
[CS231n] Lecture6. Training Neural Networks 2 (0) | 2023.05.15 |
---|---|
[CS231n] Lecture6. Training Neural Networks 1 (0) | 2023.05.14 |
[CS231n] Lecture4. Backpropagation and Neural Networks (0) | 2023.05.11 |
[CS231n] Lecture3. Loss Functions and Optimization (1) | 2023.05.10 |
[CS231n] Lecture2. Image Classification Pipeline (0) | 2023.05.08 |