
주로 이미지 처리, 컴퓨터 비전, 자연어 처리 분야에서 사용되며, 입력층과 출력층 그리고 그 사이에 은닉층으로 이루어진 신경망 구조의 딥러닝 알고리즘이다.

Y라는 손글씨를 다층 퍼셉트론으로 분류한다고 했을 때, 위 그림처럼 이미지를 1차원 벡터로 변환하여 입력층으로 사용해야한다. 1차원으로 변환된 결과는 원래의 이미지가 가지는 공간적인 구조 정보가 유실된 상태로 분석에 어려움을 가진다.
따라서 이미지의 공간적 구조 정보를 보존하며 학습할 수 있는 방법으로 '합성곱 신경망(CNN)'을 이용한다.

① 커널 또는 필터라는 nXm 크기의 행렬로 높이X너비 크기의 이미지를 처음부터 끝까지 겹치며 훑는다
② nXm 크기에 겹쳐지는 부분의 각 이미지와 커널의 원소 값을 곱해서 모두 더한 값을 출력한다.
③ 합성곱 연산으로 초기 입력보다 작아진 특성 맵을 얻을 수 있다.

위 과정을 통해 입력으로부터 커널을 사용해 합성곱 연산을 통해 나온 결과로, 비선형성 추가를 위해 활성화 함수를 지난다.
합성곱 연산과 마찬가지로 커널과 스트라이드의 개념을 가지지만 학습해야 할 가중치가 없으며 연산 후에 채널 수가 변하지 않는다는 차이점이 있다.
최대 풀링

▲ 특성 맵이 절반 크기로 다운 샘플링 된 모습
커널과 겹치는 영역 안에서 최대값을 추출
평균 풀링
커널과 겹치는 영역 안에서 평균값을 추출
3 × 3 이미지를 처리한다고 가정해보자.
다층 퍼셉트론의 경우

입력층 9개 × 은닉층 4개 = 총 36개의 가중치를 가진다
CNN의 경우

2 × 2 커널, 스트라이드 1일 때,

합성곱 연산을 통해 이미지 전체를 훑으며 사용되는 가중치는 총 4개 뿐이다. CNN은 다층 퍼셉트론을 사용할 때보다 훨씬 적은 수의 가중치를 사용하여 공간적 구조 정보를 보존한다는 특징을 가진다.

편향은 커널 적용 뒤에 더해지는 값으로, 하나의 값만 존재하며 커널이 적용된 결과의 모든 원소에 더해진다.
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!