일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 소프티어
- 구름
- 알고리즘
- jsonwebtoken
- 인가인증
- BFS
- 함수 종속성
- es_java_home
- 자바
- DFS
- 정렬
- bfs
- CODETREE
- java
- 동전 퍼즐
- 백엔드 개발
- 카카오클라우드
- On-Premise
- objectstorage
- sonarqube
- s3
- 카카오엔터프라이즈
- 코드트리
- 완전탐색
- bitmask
- DP
- softeer
- db
- dockercompose
- MESSAGEBROKER
- Today
- Total
wooing
합성곱 신경망(Convolutional Neural Network) 본문
합성곱 신경망이란?
합성곱 신경망은 크게 합성곱층(Convolution layer)과 풀링층(Pooling layer)으로 구성되어있다.
위의 그림에서 CONV는 합성곱 연산을 의미하고, 합성곱 연산의 결과가 활성화 함수 ReLU를 지난다. 이 두 과정을 합성곱층이라고한다. 그 후에 POOL이라는 구간을 지나는데 이는 풀링 연산을 의미하며 풀링층이라고한다.
합성곱 신경망은 이미지 처리에 탁월한 성능을 보이는 신경망이다. 이미지 처리를 하기 위해 다층 퍼셉트론을 사용할 수 있지만 한계가 있었다. 그 이유로는 2차원 텐서 구조의 이미지를 1차원 배열로 변환하여 사용하였기 때문이다. 1차원으로 변환하였기 때문에 공간적인 구조 정보가 유실된 상태이기때문에 성능이 떨어진것 이다. 이미지의 공간적인 구조 정보를 보존하면서 학습할 수 있는 방법으로 합성곱 신경망을 사용한다.
합성곱층(Convolution Layer)
1. 합성곱 연산(Convolution Operation)
합성곱층은 합성곱 연산을 통해 이미지의 특징을 추출하는 역할을 한다. 커널(Kernal)또는 필터(Filter)라는 n*m크기의 행렬로 이미지를 처음부터 끝가지 훑으며 n*m크기에 겹쳐지는 부분의 각 이미지와 커널의 원소 값을 곱해서 모두 더한 값을 출력하는것을 말한다.
*일반적으로 커널은 3 * 3 또는 5 * 5를 사용한다.
2. 패딩(Padding)
합성곱 연산으로 나온 텐서는 입력보다 작아진다는 특징이 있다. 만약 합성곱을 여러층 쌓았다면 최종적으로 얻는 결과는 초기 입력보다 매우 작아지게 된다. 합성곱 연산이후에도 크기를 동일하게 유지하려면 패딩을 사용하면 된다.
패딩은 합성곱 연산을 하기 전에 입력의 가장자리에 지정된 개수의 폭만큼 행과 열을 추가해주는것 이다.
3. 가중치와 편향
합성곱 신경망과 다층 퍼셉트론의 가장 큰 차이는 가중치와 편향 연산 방식이다. 앞에서 설명했든 합성곱 신경망은 합성곱을 사용하는데 이는 다중 선형 회귀에서 행렬곱을 사용하는 원리와 같다. 훨씬 적은 수의 가중치를 사용하며 공간적 구조 정보를 보존할 수 있다.
3차원 텐서의 합성곱 연산
방금까지의 설명은 채널(Channel) 또는 깊이(Depth)를 고려하지 않은 2차원 텐서를 가정하고 설명했다. 여기서 채널또는 깊이란 이미지의 구성 요소중 하나인데 색 성분을 뜻 한다. 일반적으로 이미지는 (높이, 너비, 채널)이라는 3차원 텐서 구조를 가진다. 아래의 컬러이미지는 적색, 녹색, 청색으로 채널 수가 3개이다.
다수의 채널을 가진 입력 데이터를 가지고 합성곱 연산을 하려면 커널의 채널 수도 입력 데이터와 같아야한다. 각 채널끼리 입력과 커널을 합성곱 한 후에 연산 결과를 모두 더해주면 최종 결과가 나오게 된다. 주의해야할 점은 연산에 사용되는 커널은 3개의 커널이 아니라 3개의 채널을 가진 1개의 커널이다. 즉 아래의 이미지를 예로 하면 (2 * 2* 3)의 텐서이다.
이때 커널의 갯수를 N개로 하여 연산을 하면 N개의 채널을 가진 특성 맵이 만들어진다.
풀링(Pooling)
일반적으로 합성곱 층 다음에는 풀링층을 추가하는 것이 일반적이다. 풀링 층 에서는 특성 맵을 다운샘플링하여 특성 맵의 크기를 줄이는 연산을 한다. 풀링 연산에는 일반적으로 최대 풀링(max pooling)과 평균 풀링(average pooling)이 사용된다. 최대 풀링은 커널 크기만큼 이동하며 대상 영역의 최댓값을 가져오는것 이고, 평균 풀링은 영역의 평균을 가져오는것 이다.
References:
'인공지능 > 머신러닝' 카테고리의 다른 글
[논문] Alexnet(2012) (0) | 2023.02.13 |
---|---|
과적합, 기울기 소실, 기울기 폭주 (1) | 2023.01.30 |
퍼셉트론(Perceptron) (0) | 2023.01.29 |
소프트맥스 회귀(Softmax Regression) (0) | 2023.01.20 |
정수 인코딩, 원-핫 인코딩(Integer Encoding, One-hot Encoding) (0) | 2023.01.19 |