7.5 CNN구현하기
단순한 CNN의 네트워크 구성
OrderedDict 순서가 있는 딕셔너리
gradient()
순전파
self.loss()
역전파
dout = 1
dout = self.last_layer.backward(dout)
layers = list(self.layers.values())
layers.reverse()
for layer in layers:
dout = layer.backward(dout)
7.6 cnn 시각화하기
계층이 깊어질수록 추출되는 정보(정확히는 강하게 반응하는 뉴런)는 더 추상화된다는 것을 알 수 있습니다.
AlexNet: 합성곱 계층과 풀링 계층을 여러 겹 쌓고 , 마지막으로 완전연결 계층을 거쳐 결과를 출력하는 구조입니다.
합성공 계층을 여러 개 쌓으면 , 층이 깊어지면서 더 복잡하고 추상화된 정보가 추출 된다는 것입니다.
처음 층은 단순한 에지에 반응하고 , 이어서 텍스처에 반응하고 , 더 복잡한 사물의 일부에 반응하도록 변화합니다.
즉 , 층이 깊어지면서 뉴런이 반응하는 대상이 단순한 모양에서 '고급' 정보로 변화해갑니다.
다시 말하면 , 사물의 '의미'를 이해하도록 변화하는 것입니다.
7.7 대표적인 CNN
7.7.1 LeNet
cnn의 원조 LeNet
LeNet 은 손글 씨 숫자를 인식하는 네트워크로 , 1998 년 에 제안되였다.
합성곱 계층과 풀링계층(정확히는 단순히 '원소를 줄이기'만 하는 서버샘플링 계층)을 반복하고 , 마지막으로 완전연결 계층을 거치면서 결과를 출력
LeNet과 '현재의 CNN' 차이점:
활성화 함수 LeNet은 시그모이드 함수를 사용하는데 반해 ,현재는 ReLU를 사용
원래의 LeNet은 서브 샘플링을 하여 중간 데이터의 크기를 줄이지만 현재는 최대 풀링이 주류입니다.
큰 차이는 아니다.
'첫 cnn'
7.7.1 AlexNet
딥러닝이 주목받도록 이끈 것
2012년에 발표
AlexNet 합성곱 계층과 풀링 계층을 거듭하며 마지막으로 완전연결 계층을 거쳐 결과를 출력합니다.
LeNet에서 큰 구조는 바뀌지 않았습니다만 , AlexNet에서는 다음과 같은 변화를 주었습니다.
활성화 함수로 ReLu를 이용
LRN(Local Response Normilization)이라는 국소적 정규화를 실시하는 계층을 이용
드롭아웃을 사용
gpu
딥러닝 발전의 큰 원동력: 빅데이터와 gpu
'책 > 밀바닥부터 시작하는 딥러닝' 카테고리의 다른 글
08-2. 딥러닝 (0) | 2021.01.04 |
---|---|
08-1. 딥러닝 (0) | 2020.12.28 |
07-2. 합성곱 신경망(cnn) (0) | 2020.12.09 |
07-1. 합성곱 신경망(cnn) (0) | 2020.11.19 |
06. 학습 관련 기술들 (0) | 2020.10.20 |