CRNN 모델

(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 부분의 공간적 특징들이 섞임 CNNoutput:BWHC>RNNinput:BWCnew1(=HC)CNN output : B * W * H * C -> RNN input : B * W * C_{new1}(= H * C)
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
기존 신경망: H(x)=xH(x)=x
H(x)=F(x)+xH(x)=F(x)+x 로 정의하여 F(x)=0F(x)=0 이 되도록 학습
미분하면 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

레퍼런스 출처