복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.
▶6.1 컨볼루션 신경망의 동기와 전개
▶6.2 컨볼루션 신경망의 구조와 동작
6.2.1 컨볼루션 연산으로 특징 맵 추출
컨볼루션(convolution) 연산
- 특징 추출 또는 신호 변환에 사용한다.
- 수용장(파란 부분)과 커널의 선형 결합이다.
- z는 입력 신호, u는 커널, h는 커널의 크기
Extra. Convolution
convolution
- Flip the filter in both dimentions (bottom to top, right to left)
- Then apply cross-correlation
convolution vs correlation
혼동해서 쓰더라도 결과 얻는 데는 큰 차이가 없다.
일정하게만 사용하면 된다.
2차원 컨볼루션
컨볼루션의 특징
- 커널에 따라 특징 맵 추출해 준다.
- 위 그림의 커널의 경우 수평 엣지와 수직 엣지 특징 맵을 추출 한다.
- 원본 영상과 같은 크기의 특징 맵을 생성 한다.
- 원본 영상 자체에 연산을 적용하므로 정보 손실이 없다. (Spatial 공간 정보가 동일하다.)
- 다층 퍼셉트론의 경우 2차원 구조를 1차원 구조로 펼친 다음 입력해야 한다.
6.2.2 컨볼루션층과 풀링층
컨볼루션층은 표준 컨볼루션에 몇 가지 아이디어를 추가로 고려한다.
- 특징 맵이 작아지는 문제 해결을 위한 덧대기(Padding)
- 덧대기를 하지 않으면 커널 사이즈에 비례하게 줄어든다.
- 영상 크기를 축소할 수 있는 보폭 (보폭을 k로 설정하면 특징 맵은 1/k로 줄어든다.)
- 바이어스 추가
- 파라미터를 적게 넣고도 표현을 다양하게 만들 수 있다.
다중 커널을 사용
- 커널을 32, 64 또는 128개를 사용하여 다중 특징 맵을 추출 한다. (풍부한 특징 추출)
- M * N * k 텐서에 h * h * k 크기의 커널 k'개를 적용하면 M' * N' * k' 텐서를 얻는다.
- 커널은 M과 N 축을 따라 슬라이딩한다.
- 계산 시간
- ex) 512 * 512 크기의 RGB 영상에 3*3 커널을 적용하면 커널 하나당 512*512*3*3*3 = 7,077,888번의 곱셈 수행
풀링층
- 최대 풀링은 커널 안에 있는 화소 중에 최댓값을 취한다.(평균 풀링은 평균 취한다.)
- 특징 맵에 있는 지나친 상세함을 줄여 요약 통계량을 추출해 준다.
- 보폭을 s로 하면 특징 맵은 s배만큼 줄어든다.
- 학습 파라미터는 없다.
부분 연결성
- 아래 그림에서 오른쪽 층의 노드는 왼쪽 층의 노드 3개 하고만 연결된 부분 연결성
- 두 층의 노드 개수를 n1과 n2라 하고 커널 크기를 h라 하면, 컨볼루션 신경망은 h * n2개의 에지 가진다.
- FC는 n1 * n2개 에지
가중치 공유
- 에지는 h * n2개지만, 가중치를 공유하기 때문에 가중치는 h개뿐이다.
- 2차원 영상에서 h * h 커널을 k'개 사용하는 경우 h*h*k'개의 가중치
- 학습으로 알아내야 할 매개변수가 대폭 줄어든다.
- 2차원 영상 둘을 FC로 연결하는 경우 필요한 매개변수의 수는?
- (256 * 256) * (256 * 256)
- 3 * 3 커널을 사용하면 9가지만 있으면 된다.
6.2.3 빌딩 블록을 쌓아 만드는 컨볼루션 신경망
빌딩 블록
- k * m * n 입력 텐서에 k'의 커널을 적용하면 k' * m' * n' 크기의 특징 맵이 된다.
- m'과 n' 값은 덧대기(padding)와 보폭(stride)에 영향을 받는다.
- 풀링을 적용하면 k' * m'' * n'' 특징 맵이 된다.
- 이 텐서는 다음 빌딩 블록의 입력이 된다.
LeNet-5 사례 [LeCun1998]
- 현재 기준으로 보면 아주 간단한 컨볼루션 신경망(C-P-C-P-C-FC-FC)
- 입력은 1*32*32 텐서(32*32 크기의 필기 숫자 맵, 커널 개수 1개)
- 빌딩 블록 1
- 컨볼루션은 1*5*5 커널을 6개 사용(보폭 1, 덧대기 안 함)
- 1*32*32 텐서 → 6*28*28 텐서
- 파라미터 : (1 * 5 * 5 + 1) * 6 = 156
- 풀링은 2*2 커널을 사용(보폭 2)
- 6*28*28 텐서 → 6*14*14 텐서
- 파라미터 X
- 빌딩 블록 2
- 컨볼루션은 6*5*5 커널을 16개 사용(보폭 1, 덧대기 안 함)
- 6*14*14 → 16*10*10
- 파라미터 : (6 * 5 * 5 + 1) * 16 = 2416
- 풀링은 2*2 커널을 사용(보폭 2)
- 16*10*10 → 16*5*5
- 파라미터 X
- 컨볼루션 적용(16*5*5 커널을 120개 사용, 보폭 1, 덧대기 안 함)
- 16*5*5 → 120*1*1
- 파라미터 : (16 * 5 * 5 + 1) * 120 = 48120
- FC(완전연결) 적용
- 1*120 → 1*84
- 파라미터 : (120 + 1) * 84 = 10164
- FC(완전연결) 적용
- 1*84 → 1*10
- 파라미터 : (84 + 1) * 10 = 850
LeNet-5의 가중치(매개변수) 수
- 컨볼루션층은 5*5 커널 6개+5*5 커널 16개 + 5*5 커널 120개
- (1*5*5+1)*6 + (6*5*5+1)*16 + (16*5*5+1)*120 =50692개
- FC 층은 (120+1)*84+(84+1)*10 = 11014개
- 학습 알고리즘은 61706개의 매개변수를 최적화해야 한다.
- LeNet에서는 FC층이 컨볼루션 층보다 오히려 적은 값이 나온다.
- 다만 AlexNet에서는 FC layer의 unit수가 4096이기 때문에, 훨씬 많은 매개변수가 생긴다.
- 딥러닝은 FC 층을 전역 평균 풀링 등으로 대치하여 매개변수 수를 줄이는 방향으로 발전
바이어스 유무에 따라서 +1을 하는지 안 하는지 결정된다.
컨볼루션 층을 할 때 패딩을 하는지 안 하는지 확인해야 한다.
- 패딩을 하지 않으면 사이즈가 줄어든다.
- 패딩을 하면 사이즈가 그대로다.
'컴퓨터공학 > 인공지능' 카테고리의 다른 글
[인공지능] 6장. 컨볼루션 신경망과 컴퓨터 비전3 (0) | 2023.04.15 |
---|---|
[인공지능] 6장. 컨볼루션 신경망과 컴퓨터 비전2 (0) | 2023.04.13 |
[인공지능] 5장. 딥러닝과 텐서플로3 (0) | 2023.04.12 |
[인공지능] 5장. 딥러닝과 텐서플로2 (0) | 2023.04.12 |
[인공지능] 5장. 딥러닝과 텐서플로1 (1) | 2023.04.10 |