(Convolutional Recurrent Neural Network)
•
CNN과 RNN, CTC loss를 사용하여 input으로 부터 시퀀스를 인식하는 것
•
CRNN은 입력 이미지를 CNN에 통과시킨 후, width 채널을 유지한 채로 RNN을 진행해 순서대로 각 width 별로 글자를 인식시키고, 그 결과를 정리해 보여주는 모델
네트워크 구조
•
3 stage 구조
•
bidirectional LSTM 채택
1.
CNN을 통해 input 이미지로부터 feature sequence를 추출한다.
2.
추출한 feature sequence들을 RNN의 input으로 하여 이미지의 텍스트 시퀀스를 예측한다.
•
RNN 사용하는 이유: CNN 제한된 수용장 확장
3.
예측된 텍스트 시퀀스를 텍스트로 변환한다.
CNN → RNN 변환 과정
reshape으로 width 특징은 유지한 상태로 RNN의 채널 개수를 width * channel 개로 설정
이 때, CNN의 height 부분의 공간적 특징들이 섞임
•
Convolutional Layer(LesNet, VGG)를 통해 얻어진 Feature Sequence가 각각 어느 부분을 나타내는지 보여주는 이미지
CNN
Convolutional Neural Network (합성곱 신경망)
•
Convolution과 Pooling을 반복적으로 사용하며 불변하는 특징을 탐색하고, 그 특징을 입력 데이터로 Fully-Connected 신경망에 전달해 Classification을 수행하는 신경망
•
인간의 시신경 구조 모방한 기술
•
특징맵 생성하는 필터까지도 학습 가능
•
이미지 인식 위해 패턴 찾는데 특히 유용
•
데이터를 직접 학습하고 패턴을 사용하여 이미지 분류
•
이미지의 공간 정보를 유지한 채 학습하는 모델 (1d로 변환하지 않고 2d 그대로 작업)
Fully Connected Layer만으로 구성된 인공 신경망보다 효율적
ResNet
Residual Neural Network
•
논문명: Deep Residual Learning for Image Recognition
•
Residual Representation 함수를 학습하여 신경망이 152 layer까지 가질 수 있고, 이전 layer의 입력을 다음 layer로 전달하기 위해 skip connection (shortcut connection) 사용하는 신경망
•
Plain Network의 문제
◦
Plain network: skip/shortcut connection을 사용하지 않은 일반적인 CNN(AlexNet, VGGNet) 신경망
◦
신경망이 깊어질 수록 기울기(gradient) 소실(vanishing)과 폭발(exploding) 문제가 발생
•
skip/shortcut connection
◦
기존 신경망:
◦
로 정의하여 이 되도록 학습
▪
미분하면 x가 1이 되어 기울기 소실 문제 해결
◦
정확도 감소 없이 신경망의 layer를 깊게 쌓을 수 있음
ResNet Architecture
RNN
Recurrent Neural Network (순환 신경망)
•
입력과 출력을 시퀀스 단위로 처리
•
메모리 셀: 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할
•
입출력 길이를 다르게 설계 가능
1.
one-to-many
2.
many-to-one
3.
many-to-many
•
학습에 back propagation의 확장인 BPTT(Back Propagation Through Time) 사용
◦
재귀적 형태의 모델을 시간에 대해 펼쳐 현재 시점의 에러를 최초 시점까지 전파하여 학습
•
바닐라 RNN의 한계
◦
장기 의존성 문제: 시점이 길어질수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상 발생
◦
이를 보완한 RNN 모델: LSTM(장단기 메모리), GRU(게이트 순환 유닛)
LSTM
Long Short-Term Memory
•
은닉층의 메모리 셀에 Forget / Input / Output 게이트 추가하여, 필요하지 않은 정보는 지우고 기억해야할 정보 저장
•
바닐라 RNN에서 셀 상태(C(t))라는 값 추가
◦
RNN보다 긴 시퀀스 입력 처리에 뛰어남
•
LSTM 층에는 3가지 정보가 전달되고, 해당 층에서 ht와 Ct를 계산하여 다음 층으로 전달 (계산 과정에서 gate 사용)
1.
xt : 단어 t의 임베딩 정보
2.
ht-1 : 이전 단계의 hidden state
3.
Ct-1 : 기억 셀
Bidirectional LSTM
•
역방향으로도 정보 추출하는 LSTM
◦
일반 LSTM: 순방향(왼→오)로 정보 추출
•
시퀀스 데이터에서 더 많은 정보 추출 가능, 성능 향상
CTC loss
•
CTC(Connectionist Temporal Classification)
•
학습 데이터에 클래스 라벨만 순서대로 있고 각 클래스의 위치는 어디있는지 모르는 unsegmented 시퀀스 데이터의 학습을 위해서 사용하는 알고리즘
•
순차적으로 진행하며 이전 state와 중복되면 합침
◦
ex. aaabbbbcccddeefff → abcdef