RNN
순차적 데이터에 적합한 유형의 신경망.
*순차적 데이터: 단어, 시계열, 동영상과 같은 각 시각 단계가 이전 단계와 관련되는 데이터
ex1) 동영상 인식 예제
동영상은 N개의 프레임으로 구성
CNN
장점: 적절한 결과 제공 가능
단점: 동영상의 일부가 다른 부분보다 더 중요하다는 사실을 반영 x
중요한 부분이 의미 없는 부분보다 항상 더 많은 프레임을 차지하지 x
=> 출력의 평균을 구하면 중요한 정보를 잃어버릴 위험이 있다.
RNN
CNN에서 발생하는 위험을 보완하기 위해 동영상의 모든 프레임에 첫 번째부터 마지막 프레임까지 차례대로 적용.
의미있는 결과를 생성하기 위해 모든 프레임에서 얻은 특징을 적절하게 결합
이를 위해 상태라는 새로운 개념 도입
*상태: RNN의 메모리라고 볼 수 있음. 열행렬로 시작해 동영상의 각프레임을 사용해 업데이트. 프로세스가 끝나면 최종 상태는 RNN의 출력을 생성하는데 사용
RNN의 주성 구성요소: RNN 셀
모든 프레임에 적용되며 현재 프레임과 이전 상태를 모두 입력으로 받는다.
즉, 널 상태로 시작하여 셀은 현재 상태를 현재 프레임과 결합해 새로운 상태를 생성하는 것. 다음 동일한 프로세스를 다음 프레임에 적용하고 프로세스가 끝나면 최종 상태가 된다.
RNN을 동영상에 적용하면 전체 동영상 또는 모든 단일 프레임을 분류 가능.
RNN에 대한 일반적인 이해
EX) 폭력적인 동영상 VS 댄스 동영상 분류
총성은 매우 갑자기 발생 가능하기 때문에 동영상 전체 프레임 중 몇 프레임에 나타날 것. 네트워크가 W INPUT을 학습해서 총성 정보가 입력에 포함된 경우에도 상태에 '폭력적인 동영상'의 개념을 추가하는 것이 이상적
또한 이전 공식에 정의한 상태에서의 '폭력'의 개념이 사라지지 않게 하는 방식을 학습
=> 총성이 처음 몇 프레임에만 등장하더라도 이 동영상은 폭력물로 분류될 것
댄스 동영상인 경우엔 네트워크가 가중치 행렬을 학습하여 입력에 춤추고 있는 것 같은 사람이 포함되어 있는 경우 상태에서 춤의 개념을 살짝만 증가시키는 것이 이상적.
춤추는 동영상은 대부분은 춤추는 사람들을 포함한 프레임으로 구성되기 때문에 상태를 조금씩 증가시키면서 오분류를 피함. 또한 순환 가중치 행렬은 상태에서 춤 개념이 점진적으로 사라지게 학습돼야 한다.
RNN 가중치 학습
일반적인 개념은 네트워크가 만들어낸 오차를 기반으로 가중치를 수정함으로써 가중치를 학습하는 것
시간을 통한 역전파
RNN의 경우 오차는 네트워크의 깊이를 통해 역전파될 뿐만 아니라 시간을 통해서도 전파. 우선 모든 시간 단계에서 개별 손실을 모두 더해 손실을 계산한다 => 각 시간 단계에 대해 경사를 별도로 계산할 수 있다는 것과 동일
결론적으로 경사는 이전의 모든 상태와 순환 가중치 행렬에 따라 달라진다. 이것을 시간을 통한 역전파라 하는 것이다.
부분 역전파
K시간 단계마다 경사 계산 가능.
경사를 계산하는 횟수를 K1로 나눔으로써 네트워크 훈련 속도가 빨라짐.
또한 모든 시간 단계를 쭉 역전파하는 대신 이전 K2 단계까지만 역전파하도록 제한. 경사 소실을 효과적으로 제한하고 경사를 계산하는데 필요한 계산양을 제한. 그렇지만 네트워크가 장기적인 시간 관계를 학습할 가능성을 적다
이 두 기술을 조합한 것이 부분 전파.
장단기 메모리 셀
RNN은 경사 폭발 문제와 단일 상태 행렬에 정보를 저장하는 것이 문제인데 두 문제를 피하기 위해 나온 것이 RNN의 변형인 장단기 메모리(LSTM)이다.
LSTM 일반 원리
LSTM 아키텍처는 셀 상태라고 부르는 메모리 행렬을 저장하고 이 정보는 게이트에 의해 풀력된다. 하나의 게이트는 LSTM의 다른 요소에 항별로 곱해질 행렬이다.
입력 게이트: 입력에 적용돼 어떤 정보가 통과되는지 결정
망각 게이트: 셀 상태에 적용해 어느 정보를 잊어버릴지 결정
출력 게이트: 셀 상태와 곱해 출력할 정보를 결정
=> 경사 소실로 인한 영향을 덜 받음
추가 공부하자...
'인공지능' 카테고리의 다른 글
인공지능 스터디 #3 (0) | 2021.05.19 |
---|---|
인공지능 스터디 #2 (0) | 2021.05.19 |
openpose 사용 환경 설정 (0) | 2021.05.19 |
인공지능 5주차 (0) | 2021.02.08 |
인공지능 4주차 (0) | 2021.02.01 |