06일차 [ CNN, RNN, LSTM ] - votus777/AI_study GitHub Wiki
ANN (Artifical Neural Network)
-
가장 넓은 범주의 개념
-
굳이 설명 안해도 어차피 아래에 있는 것들이 다 포함된다.
DNN (Deep Neural Network)
-
우리가 하던거
-
여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화
(다량의 복잡한 자료들에서 핵심적인 내용만 추려내는 작업)을 시도하는 기계학습 알고리즘의 집합
CNN (Convolution Neural Network) 합성곱신경망
-
Convolution Layer와 Pooling Layer의 복합적인 구성
Convolution : 회선, 얽힘, 복잡함 - 데이터를 추출하고 압축하는 과정, 파라미터의 갯수를 줄임
Pooling : 데이터의 사이즈 축소 및 노이즈 상쇄
-
이미지를 통째로 처리하는 대신에 타일로 나눠서 처리 픽셀 하나 하나 처리하려면 학습량이 어마무시하게 증가한다.
-
데이터 손실은 일어나지만 어차피 모든 데이터가 아닌 feature 데이터를 뽑아내는데 주안점
인식을 할 때 전체 영역을 두고 연관성을 조사하기 보다 그 주변부에 한정해서 처리를 하는 것이 효율적이다. ( 감각을 느낄 때 그 주변 부위만 아프지 먼 곳은 아프지 않는 것처럼) 공간적으로 인접한 신호들에 대한 correlation 관계를 비선형 필터를 적용해 추출 이렇게 convolution한 특성을 살린 신경망 연산을 한다고 해서 CNN이라 부른다.
-
정보추출 문장분류 얼굴인식 등에 쓰임
-
선생님 말로는 CNN으로도 시계열 데이터 분석도 가능하다 한다.
RNN (Recursive Neural Network) 재귀신경망
모른다. 하기 싫다
RNN (Recurrent Neural Network) 순환신경망
-
순차적인 데이터 처리 (=시퀀스 데이터 = 시계열 데이터)에 적합, 기존 네트워크는 가변적인 데이터에 적합하지 않음
-
현재의 학습과 과거의 학습의 연결을 가능- 과거의 데이터가 미래에 영향을 줌 Hidden state 에서 기억 및 메모리 수정
-
RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서,
다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있다 -> param이 많은 이유 -
단점은 입력과 출력 사이의 거리가 멀수록 그 관계성이 약해짐. 가장 최근의 데이터가 가장 강한 비중을 차지함
-
왜냐하면 RNN을 거치면서 데이터가 변환되므로 일부 정보는 매 훈련 스텝 후 사라지기 때문에 시간이 지나면 첫번째 데이터의 흔적을 가지고 있지 않다.
-
갭이 크면 클수록 역전파시 gradient가 떨어져 정확도 낮아짐 -> 장기 의존성 문제
-
이런 문제를 보완한 변형 모델들이
SimpleRNN(그냥 RNN), GRU(게이트 순환 유닛) 등이 있는데 그 중 하나가 바로...
LSTM (Long Short Term Memory Networks)
-
LSTM은 RNN의 셀 스테이트 안에 3가지 게이트를 둔다.
-
Sigmoid 함수를 이용한 forget gate layer - 정보를 보존할건지 버릴건지 선택
-
Input gate layer - 앞으로 들어오는 새로운 정보 중 어떤 것을 저장할 지 결정
-
그 다음 tanh layer를 통해 셀 스테이트 안에 저장될 새로운 후보값 업데이트
-
마지막으로 output gate 를 지나서 cell state의 hyperbolic tangent를 곱한 값이 LSTM의 최종결과가 된다.
-
LSTM의 parameter에 관하여
8일차에 설명
-
그래도 구현 방법은 쉽다 -> model.add(Dense)를 model.add(LSTM)으로 바꾸면 된다.
-
역시 CNN 처럼 LSTM도 이미지 분석이 가능하다고 한다.
변칙 패턴들도 워낙 많아서 여기저기 설명이 다 다르다.
reference