- 합성곱 계층과 풀링 계층의 공통점은?
합성곱과 풀링은 딥러닝의 합성곱 신경망(Convolutional Neural Network, CNN)에서 주로 사용되는 두 가지 기술입니다.
기능적 목적: 둘 다 CNN에서 특징을 추출하고 입력 데이터를 다운샘플링하여 네트워크의 파라미터 수를 줄이거나 중요한 정보를 강조하는 데 사용됩니다.
커널 적용: 합성곱과 풀링은 모두 윈도우(커널)를 사용하여 입력 데이터를 처리하며, 이를 통해 특징을 추출하거나 요약합니다.
- 합성곱 계층과 풀링 계층의 차점은?
역할: 합성곱(Convolution)은 입력 데이터에 대해 필터를 적용하여 특징 맵을 생성합니다. 이는 주로 이미지에서 특정 패턴이나 특징을 감지하는 데 사용됩니다. 반면, 풀링(Pooling)은 특징 맵을 다운샘플링하여 크기를 줄이거나 중요한 정보를 강조하는 역할을 합니다.
연산 방식: 합성곱은 입력 데이터와 필터 간의 원소별 곱셈과 합을 통해 특징 맵을 생성합니다. 풀링은 일정한 영역에서 대표 값을 추출하거나 통계적인 정보를 계산하여 다운샘플링합니다.
파라미터: 합성곱은 가중치(필터)를 학습하며, 이 가중치들은 신경망의 학습 과정에서 조정됩니다. 반면 풀링은 학습되는 파라미터가 없으며, 단순히 입력값을 다운샘플링하는 역할을 합니다.
간단히 말하자면, 합성곱은 특징을 추출하고 풀링은 추출된 특징을 압축하거나 강조하는 역할을 합니다.
- 그렇다면, 폴링 계층에 따로 커널이 있을까요? (O/X)
X
합성곱 신경망(CNN)의 풀링 계층(pooling layer)에는 커널이 사용되지 않습니다.
풀링 계층은 입력 특성 맵에서 작은 영역을 대표하는 값을 추출하는 데 사용되며,
주로 최대 풀링(max pooling)이나 평균 풀링(average pooling) 방식이 적용됩니다.
이러한 프로세스는 커널을 사용하지 않고,
영역의 최대값이나 평균값을 취하는 방식으로 수행됩니다.
이렇게 특성 맵의 크기를 줄이면서 계산량을 감소시키고, 과적합(overfitting)을 방지할 수 있습니다.
- 완전연결 계층(Affine 계층) 의 문제점은?
완전연결 계층 (Affine 계층) 에서는
인접하는 계층의 뉴런이 모두 연결되고
출력의 수는 임의로 정할 수 있다.
하지만, 완전연결계층은 데이터의 형상이 무시된다는 문제점이 있다.
예를 들면, 이미지는 3차원 데이터(가로, 세로, 색상)이지만
완전연결계층에 입력할 때는 1차원 데이터로 바꿔줘야 한다.
그렇기 때문에 형상에 담긴 정보를 살릴 수 없다.
하지만, 합성곱 계층은 형상을 유지한다.
이미지도 3차원 데이터로 입력받아서 형상을 가진 데이터로 제대로 이해할 수 있다.
- 완전연결 신경망에는 가중치 매개변수와 편향이 존재하는데,
CNN에서 필터의 매개변수는 (가중치/편향)에 해당한다.
가중치에 해당한다.
편향은 항상 하나만 존재하게 된다.
CNN에서 필터(커널이라고도 하는 회색부분) 의 매개변수는 신경망이 학습하는 가중치로,
입력 데이터를 특정 특징으로 변환하는 데 사용됩니다.
CNN에서 필터는 합성곱 연산에 사용되는 가중치 행렬입니다. 필터는 입력 이미지 또는 특징 맵을 훑으며 특정한 특징을 감지하기 위해 사용됩니다. 이 가중치 행렬은 합성곱 층에서 사용되며, 입력 데이터의 특정 부분에 대응하는 가중치를 나타냅니다.
예를 들어, 이미지 처리에서 3x3 크기의 필터는 입력 이미지의 작은 부분에 대응하며, 이 부분과 필터의 가중치를 곱하여 특징 맵을 생성합니다. 이러한 필터는 합성곱 층에서 학습됩니다. 초기에는 랜덤한 값을 가지고 있지만, 신경망이 학습을 진행하면서 역전파 알고리즘을 사용하여 이러한 필터의 가중치가 조정됩니다. 이렇게 함으로써 네트워크는 입력 데이터에서 중요한 특징을 학습하고 감지할 수 있습니다.
- 합성곱 연산을 수행할 때마다 크기가 작아지면
어느 시점에서는 출력 크기가 1이 되어버려 연산이 불가할것이다.
이 때, 쓰는 기법은?
패딩
- 스트라이드를 키우면 출력의 크기는 (작아진다/커진다)
작아진다.
- 패딩을 크게 하면 출력의 크기는 (작아진다/커진다)
커진다.
- 3차원 합성곱 연산에서 주의할 점은 입력데이터의 채널 수와 ( )의 채널 수가 같아야 한다.
필터
- 합성곱 연산의 출력으로 다수의 채널을 내보내려면 어떻게 해야 할까?
가중치에 해당하는 필터를 다수 사용해야 한다.
p.238) 필터를 FN개 적용하면 출력 맵도 FN개가 생성
- 필터의 가중치 데이터는 몇 차원 데이터?
4차원데이터로서 (출력채널수, 입력채널수, 높이, 너비) 순서로 작성한다.
- 세로, 가로의 방향의 공간을 줄이는 연산은?
폴링
- 폴링 계층의 특징 3가지
1) 학습해야 할 매개변수가 없음
폴링은 대상 영역에서 최댓값이나 평균을 취하는 명확한 처리이므로
2) 채널 수가 변하지 않음
채널마다 독립적으로 계산하기 때문
3) 입력의 변화에 영향을 적게 받음 (=영향을 적게받으니 강건하다)
입력데이터가 가로로 1원소만큼 어긋나도 출력은 같다(단, 데이터에 따라 달라질수는 있음에 유의)
- 입력데이터를 가중치 계산에 용이하도록 펼치는 함수는?
im2col,
가중치 계산하는 것을 필터링 한다고 표현하는데
필터링 하기 좋게 필터를 적용하는 3차원 블록의 영역을 한 줄로 늘어놓는 전개방식이다.
이 함수를 적용하면 2차원 행렬로 변환된다.
- 그렇다면 im2col 함수를 사용했을때 생길 수 있는 문제점은?
필터 적용 영역이 겹칠 가능성이 있다.
책에서는 스트라이드르 크게 잡아 필터 적용 영역이 겹치지 않도록 했지만
실제 상황에서는 영역이 겹치는 경우가 대부분이다.
겹치게 되면 im2col로 전개한 후 원소 수가 우너래 블록의 원소 수보다 많아지게 되어
결과적으로 메모리를 더 많이 소비한다는 단점이 있다.
- 폴링 계층 구현의 세 단계는?
1) 입력 데이터 전개
2) 행별 최댓값을 구한다
3) 적절한 모양으로 성형한다.
- 대표적은 CNN 네트워크를 두 가지 말씀
1) LeNet : 손글씨 숫자 인식네트워크
2) AlexNet
- AlexNet은 LeNet 에 비해 어떤 변화를 주었는가? 3가지
1) 활성화함수로 ReLU 사용
2) LRN이라는 국소적 정규화 실시 계층을 이용
3) 드롭아웃을 사용