본문 바로가기
DataMining/Deeplearning

DL - 기초; 신경망소개/CNN/RNN

by bents 2021. 2. 27.

신경망은 입력노드와 출력노드의 연결망 (논리회로)
연결망에 가중치를 추가시킴.
가중치덕분에 입력노드와 출력노드만으로 더 다양한 관계를 표현할 수 있음.

신경망의 다른 이름은 퍼셉트론.
입력노드층과 출력 노드층을 여러겹 쌓으면 좀 더 복잡한 관계를 표현할 수 있음. 이를 다층 퍼셉트론MLP 또는 Fully connected/Dense/Affine layer 라고 한다. 다층 퍼셉트론에서 모든 출력 노드는 모든 입력노드와 연결되어 있다. 단, 입력노드는 1차원만 받는다.

입력노드값이 서로 독립적인 관계이면 MLP를 써도 문제없다. 그러나 이미지 데이터와 소리 데이터처럼 현실 데이터는 서로 독립적이지 않다. 사진이 조금 잘려나가도 주변 사진을 통해 그려낼 수 있다. 0.1초전 음파는 현재 음파에 영향을 준다. 앞문장과 앞 단어로 뒷 글자를 유추할 수 있다. 이런 데이터까지 신경망에서 학습이 되게 하려면 어떻게 할까?

신경망의 형태를 변형시켜야 한다; CNN/RNN


이미지 데이터는 다차원 데이터이다. 가로, 세로, 대각선, 원 등등 다양한 패턴이 존재함. 다차원데이터의 부분집합을 연속해서 스캔하면서 특징데이터를 추출하는 합성신경망CNN을 쓰면 최종적으로 서로 덜 종속적인 입력노드를 만들어서 MLP를 적용할 수 있다. 5x5차원에서 3×3으로 , ..., 2x2차원에서 1x1차원으로 이런식으로 차원을 축소시키면서 엑기스정보만 남긴다. 신경망을 여러개 써서 MLP가 등장했듯, CNN도 여러개를 써서 다층 CNN사용가능, 패턴/관계를 잘 찾아낼 수 있다. 재밌는 것은 MLP가 입력노드와 출력노드의 관계를 나타내는 가중치를 지닌 것처럼, CNN도 입력 다차원데이터와 출력 다차원 데이터의 관계를 나타내는 가중치를 지님. 모든 가중치는 모델 학습과정에서 최적값으로 수렴한다.

CNN이 다차원 데이터를 잘라내고 축소(pooling)시키면서 MLP를 적용할 수 있는 형태로 바꾸었다. 소리/문자처럼 차원은 높지 않지만 시계열인 데이터를 어떻게 신경망에 사용할까? 시계열 데이터는 입력층이 서로 종속이기 때문에 은닉층도 서로 종속으로 만들어야 한다. 결과적으로 입력층-은닉층 간 가중치말고도 은닉층간의 가중치도 학습시키는 기다란 신경망이 필요해짐(HMM개념차용). 마치 자기자신을 반복해서 학습시키는 모양같다고 해서 RNN이라고 함.

Attention과 GAN은 무엇인가요?


Attention은 RNN으로 시계열 데이터를 학습시키던 천재개발자들이 빡쳐서 새로 만든 신경망.ㅎ
--> 은닉층 내 가중치를 학습하니, 입력층 내 가중치 학습하자(구현방법; 각 입력노드 정보를 압축한 행렬생성-> 입력노드 간 weight생성). Attention layer는 입력노드간 가중치를 통해 가공한 과거 입력노드정보(맥락벡터;Context/Hidden vector)와 신규 입력노드정보를 합치는 신경망.

GAN은 CNN에서 착안해서 발견한 신경망.
--> CNN이 특징을 추출시키면서 차원을 축소시킨다고? 반대로 특징을 기반으로 더 많은 특징을 만들어내면서, 차원도 증가시키는 방법이 있겠다 ! 특성데이터를 "생성"하는 신경망. 단, 생성능력을 향상시키기 위해 새로 생성한 데이터를 찾아내는 부분을 붙여주자

'DataMining > Deeplearning' 카테고리의 다른 글

DL - 기초; 배치 정규화  (0) 2021.02.27
DL - 기초; 초기화  (0) 2021.02.27
DL - 기초; 활성함수  (0) 2021.02.27
DL - 기초; 경사하강 & 최적함수  (0) 2021.02.27
DL - 기초 ; 오차역전파  (0) 2021.02.27