DNN과 CNN

Hyewon Jung·2023년 5월 26일

딥러닝 개념 정리

목록 보기
1/2

인공지능과 딥러닝은 인간의 신경망을 본따 만들었다. 그러나 처음에 OR과 AND문제를 풀 수 있던 인공신경망은 아주 간단한 XOR도 풀 수 없다는 것에 암흑기가 잠깐 찾아왔으나, 이는 차원을 변경하면 풀 수 있음을 알게 되어 다시 인공신경망이 발전하기 시작했다!

그러면, 차원은 어떻게 증가하는가, 그건 층(layer)을 겹겹이 쌓으면 된다!
층을 쌓는 것에서 ANN, DNN, CNN이 발전하였다.



용어 정리

인공지능(Artificial Intelligence) : 인간의 지능이 갖고 있는 기능을 갖춘 컴퓨터 시스템을 뜻하며, 인간의 지능을 기계 등에 인공적으로 구현한 것을 말함.

머신러닝(Machine Learning) : 혹은 기계학습은 인공지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야

딥러닝(Deep Learning) : 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(다량의 복잡한 자료들에서 핵심적인 내용만 추려내는 작업)을 시도하는 기계학습 알고리즘의 집합을 뜻함.



DNN

사람의 신경망을 본따 만든 것은 기존 ANN과 똑같다. input과 output을 비교해 얼마나 성능이 좋은지 점수를 매기는 것도 똑같다. 다른 점은 은닉층을 더 깊게 쌓았다는 것이다. output이 나오면 output과 실제레이블을 비교해 loss(오차)를 계산하고 미분을 통해 loss로 새로계산한 가중치(그래디언트 descent라고 부른다)를 backward한다. 그렇게 해서 input에 적용될 weight(가중치)를 업데이트한다. 이 dnn에서 더 나아가서 나타난 것이 cnn, rnn, LSTM등이다.

CNN(합성곱 신경망)

CNN은 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조다. DNN에서 1차원 input만 처리할 수 있는 단점을 보완하였다. 이 CNN 알고리즘은 Convolution과정과 Pooling과정을 통해 진행된다. Convolution Layer와 Pooling Layer를 복합적으로 구성하여 알고리즘을 만든다.

용어를 정리해보자면,

convolution과정

합성곱이라고도 부른다. 이미지의 작은 부분의 특징을 추출하기 위해 이미지의 크기보다 작은 filter를 적용, filter와 각 부분의 값과 곱해서 하나의 출력값을 만든다. 이미지를 보면 이해가 쉽다. WnW_nXnX_n을 각각 곱한뒤 평균을 내거나, 합쳐서 output부분의 Y1Y_1이 된다. 이 과정을 convolution이라고 하며 이는 파라미터 수를 줄여주는 역할을 한다. 압축과정이라고 생각하면 편하다.

pooling

위의 사진만 봐도 알 수 있다. 3x3이미지에 2x2사진을 적용하니 이미지 크기가 2x2가 되었다. 이렇게 이미지의 크기를 줄이는 과정을 pooling이라고 한다. 연산을 가볍게 가져가기 위한 기법이다.

padding

이미지가 위 사진처럼 2x2로 출력되었다고 보자. 이 이미지 크기도 충분히 작은데 cnn은 dnn처럼 layer를 여러개 가져간다. 또 filter를 적용하면 크기가 또 작아진다. 그러면 분실되는 정보량이 너무 많아진다. 그래서 너무 작아지지 않기 위해 0으로 주변 이미지를 둘러주는데

이를 padding이라고 한다.

ReLU(활성화함수)

relu는 다들 알 것이라고 생각한다. 선형계층을 여러개 쌓을 때 단순하게 여러개 쌓으면 최종적으로는 하나의 선형레이어를 반환하여 그동안 쌓은 layer의 의미가 퇴색되기 때문에 비선형성을 추가해주어야 하는데 그 역할을 하는게 ReLU와 같은 활성화함수라는 것을.

cnn에서도 동일하다 전의 conv layer에서 다음 conv layer로 이동하기 전에 선형결과를 비선형(있다 없다 같은,)결과로 바꿔주어야 하는데 그 역할을 하는 함수이다.

fully connected layer

최종 결과를 반환하기 위한 layer이다. CNN 마지막에서 분류(Classification)를 결정하는 단계이다. 이를 위해 DNN처럼 flatten을 해주어야 한다.

  1. flatten : 각 레이어를 1차원 벡터로 변환

  2. fully-conneced layer : 1차원 벡터로 변환된 레이어를 하나의 벡터로 연결 (각 층의 노드들은 하나로 연결)

  3. 그 후 softmax를 적용해 클래스를 정의

profile
Amateur data scientist & student

0개의 댓글