머신러닝 & 딥러닝/딥러닝

[AI 기초 다지기] Neural Turing Machine & Deep Speech 2 논문 분석 및 코드 구현

Haru_29 2024. 11. 12. 19:32

Neural Turing Machine 이론부터 구현까지

목차

  1. 배경 및 소개
  2. 이론적 기반
  3. 아키텍처 상세 설명
  4. 메모리 접근 메커니즘
  5. 학습 방법
  6. 실험 및 결과 분석
  7. 한계점 및 향후 연구 방향

1. 배경 및 소개

1.1 기존 컴퓨터 프로그램의 세 가지 핵심 메커니즘

  1. 기본 연산 (예: 산술 연산)
  2. 논리적 흐름 제어 (분기)
  3. 외부 메모리 (읽기/쓰기 가능)

1.2 기존 머신러닝의 한계

  • 논리적 흐름 제어와 외부 메모리 활용의 부재
  • 복잡한 알고리즘적 작업 수행의 어려움
  • 가변 길이 입력 처리의 제한

1.3 NTM의 혁신점

  • 신경망과 외부 메모리의 결합
  • end-to-end 미분 가능한 구조
  • 튜링 완전성(Turing-completeness) 달성
  • 생물학적 작업 기억(working memory) 모방

2. 이론적 기반

2.1 인지과학적 배경

  • 작업 기억(Working Memory) 시스템 모방
  • 중앙 실행 장치(Central Executive)의 개념 도입
  • 주의 집중 메커니즘 구현

2.2 컴퓨터 과학적 기반

  • 폰 노이만 아키텍처 참조
  • 튜링 머신의 개념 확장
  • 메모리 주소 지정 방식의 혁신

2.3 신경과학적 근거

  • 전전두엽 피질과 기저핵의 작동 방식 참조
  • 신경세포의 지속적 발화 현상 모방
  • 문맥 의존적 작업 수행 능력 구현

3. 아키텍처 상세 설명

3.1 컨트롤러 네트워크

3.1.1 피드포워드 컨트롤러

  • 장점:
    • 동작 해석의 용이성
    • 간단한 구조
  • 한계:
    • 동시 읽기/쓰기 헤드 수 제한
    • 시간적 의존성 처리의 한계

3.1.2 LSTM 컨트롤러

  • 장점:
    • 복잡한 시간적 의존성 처리 가능
    • 내부 상태 유지 능력
  • 특징:
    • 이전 읽기 벡터 저장 가능
    • 더 유연한 메모리 조작

3.2 메모리 시스템

3.2.1 메모리 구조

  • N × M 크기의 메모리 행렬
  • N: 메모리 위치의 수
  • M: 각 위치의 벡터 크기

3.2.2 헤드 시스템

  • 읽기 헤드
  • 쓰기 헤드
  • 각 헤드의 독립적 동작

4. 메모리 접근 메커니즘

4.1 읽기 작업

r_t = Σ w_t(i)M_t(i)
  • w_t: 가중치 벡터
  • M_t: 메모리 행렬
  • r_t: 읽기 결과 벡터

4.2 쓰기 작업

4.2.1 지우기 단계

M̃_t(i) ← M_t-1(i)[1 - w_t(i)e_t]
  • e_t: 지우기 벡터
  • w_t: 가중치 벡터

4.2.2 추가 단계

w_c_t(i) = softmax(βtK[k_t, M_t(i)])
  • a_t: 추가 벡터

4.3 주소 지정 메커니즘

4.3.1 내용 기반 주소 지정

w_c_t(i) = softmax(βtK[k_t, M_t(i)])
  • k_t: 키 벡터
  • βt: 키 강도
  • K: 코사인 유사도 함수

4.3.2 위치 기반 주소 지정

  1. 보간(Interpolation)
w_g_t ← g_t * w_c_t + (1-g_t) * w_t-1

    2. 회전(Rotation)

w̃_t(i) ← Σ w_g_t(j)s_t(i-j)

    3. 선명화(Sharpening)

w_t(i) ← w̃_t(i)^γt / Σ w̃_t(j)^γt

5. 학습 방법

5.1 손실 함수

  • 이진 크로스 엔트로피 사용
  • 시퀀스별 비트 단위 평가

5.2 최적화 알고리즘

  • RMSProp 사용
  • 모멘텀: 0.9
  • 그래디언트 클리핑: [-10, 10]

6. 실험 및 결과 분석

6.1 복사 태스크

  • 목적: 순차적 메모리 저장 및 회상 능력 평가
  • 설정:
    • 입력: 8비트 랜덤 벡터 시퀀스
    • 길이: 1-20 랜덤
  • 결과:
    • LSTM 대비 빠른 학습
    • 긴 시퀀스에 대한 우수한 일반화

6.2 반복 복사 태스크

  • 목적: 중첩 함수 학습 능력 평가
  • 구성:
    • 입력 시퀀스 + 반복 횟수
    • 종료 마커 예측 필요
  • 성능:
    • 시퀀스 길이 일반화 우수
    • 반복 횟수 일반화 부분적 성공

6.3 연관 회상 태스크

  • 설정:
    • 3개의 6비트 벡터로 구성된 항목
    • 2-6개 항목 시퀀스
  • 결과:
    • 30,000 에피소드로 완벽 학습
    • LSTM 대비 월등한 성능

6.4 동적 N-그램 태스크

  • 목적: 새로운 분포 적응력 평가
  • 방법:
    • Beta(1/2, 1/2) 분포에서 확률 생성
    • 200비트 시퀀스 예측
  • 성능:
    • LSTM 대비 우수
    • 최적 추정기에는 미달

6.5 우선순위 정렬 태스크

  • 구성:
    • 20개 이진 벡터 + 우선순위
    • 상위 16개 벡터 정렬
  • 결과:
    • 선형적 메모리 주소 지정 방식 학습
    • 8개 병렬 헤드 필요

7. 한계점 및 향후 연구 방향

7.1 현재 한계

  • 메모리 크기 제한
  • 복잡한 알고리즘 학습의 어려움
  • 계산 비용 증가

7.2 개선 방향

  • 메모리 구조 최적화
  • 주소 지정 메커니즘 개선
  • 학습 효율성 향상

7.3 잠재적 응용 분야

  • 프로그램 합성
  • 적응형 알고리즘 학습
  • 메타 학습

 

Deep Speech 2: 영어와 중국어를 위한 End-to-End 음성 인식

목차

  1. 소개
  2. 아키텍처
  3. 시스템 최적화
  4. 학습 데이터
  5. 실험 결과
  6. 실제 배포
  7. 결론

1. 소개

1.1 연구의 배경

Deep Speech 2는 Baidu에서 개발한 end-to-end 딥러닝 기반 음성 인식 시스템입니다. 이 시스템의 가장 큰 특징은:

  • 영어와 중국어 두 언어 모두에서 사용 가능
  • 수작업으로 설계된 파이프라인을 신경망으로 대체
  • 노이즈가 있는 환경, 액센트, 다양한 언어에 대한 강건성
  • HPC(High Performance Computing) 기술 적용으로 학습 시간 대폭 단축

1.2 기존 시스템과의 차별점

  • 전통적인 ASR 시스템: 수십 년간 축적된 도메인 지식 필요
  • Deep Speech 2: 단일 모델로 전체 파이프라인 대체
  • 부트스트래핑/정렬/클러스터링/HMM 기계 제거
  • 순수 딥러닝 기반의 간단하고 강력한 접근법

2. 아키텍처

2.1 기본 구조

네트워크 구조는 다음과 같은 계층으로 구성됩니다:

  1. 하나 이상의 컨볼루션 입력 계층
  2. 다수의 순환(단방향 또는 양방향) 계층
  3. 하나의 완전 연결 계층
  4. 소프트맥스 출력 계층

2.2 주요 혁신 기술

2.2.1 Batch Normalization for Deep RNNs

h_l_t = f(B(W_l * h_l-1_t) + U_l * h_l_t-1)
  • 시퀀스 단위 정규화 적용
  • 깊은 네트워크의 학습 안정화
  • 일반화 성능 향상

2.2.2 SortaGrad

  • 커리큘럼 학습 전략 도입
  • 첫 에포크에서 발화 길이 기준으로 정렬
  • 학습 안정성 향상

2.2.3 Frequency Convolutions

1D와 2D 컨볼루션 비교:

  • 1D: 시간 도메인 컨볼루션
  • 2D: 시간-주파수 도메인 컨볼루션
  • 노이지 데이터에서 2D가 23.9% 성능 향상

2.2.4 Lookahead Convolution

r_t,i = sum(W_i,j * h_t+j-1,i for j in range(1, τ+1))
  • 미래 문맥 활용 가능
  • 단방향 모델의 성능 향상
  • 스트리밍 처리 가능

2.3 중국어 적용을 위한 수정사항

  • 약 6000자 출력
  • 로마자 알파벳 포함
  • 문자 단위 언어 모델 사용

3. 시스템 최적화

3.1 HPC 최적화

  • 동기식 SGD 사용
  • All-Reduce 연산 최적화 (4x-21x 속도 향상)
  • 커스텀 메모리 할당
  • GPU용 CTC 구현 (10-20% 학습 시간 단축)

3.2 배치 처리 최적화

# 배치 크기와 지연시간 트레이드오프
median_latency = {
    "10_streams": 44ms,
    "20_streams": 48ms,
    "30_streams": 67ms
}

4. 학습 데이터

4.1 데이터셋 구성

영어:

  • 총 11,940시간
  • 800만 발화

중국어:

  • 총 9,400시간
  • 1100만 발화

4.2 데이터 증강 기법

  1. 노이즈 추가
    • SNR 0dB ~ 30dB
    • 매 에포크마다 유니크한 노이즈 적용
  2. 정렬 및 필터링
    • CTC 기반 Viterbi 정렬
    • 품질 분류기 사용
    • 오류율 17%에서 5%로 감소

5. 실험 결과

5.1 영어 음성 인식 결과

테스트 셋별 WER(Word Error Rate):

  1. 읽기 음성
  • WSJ eval'92: 3.10% (인간: 5.03%)
  • LibriSpeech test-clean: 5.15% (인간: 5.83%)
  1. 액센트 음성
  • 미국-캐나다: 7.94% (인간: 4.85%)
  • 영연방: 14.85% (인간: 8.15%)
  1. 노이지 음성
  • CHiME eval real: 21.59% (인간: 11.84%)

5.2 중국어 음성 인식 결과

  • 개별 화자: 5.7% CER (인간: 9.7%)
  • 5인 위원회: 3.7% CER (인간: 4.0%)

6. 실제 배포

6.1 배치 디스패치(Batch Dispatch)

  • 실시간 트랜스크립션 지원
  • 동적 배치 크기 조절
  • 지연시간 vs 효율성 최적화

6.2 최적화 기법

  1. 16비트 연산
    • 정확도 손실 없음
    • 처리량 향상
  2. 언어 모델 최적화
    • 확률 기반 문자 제한
    • 검색 속도 150배 향상

6.3 실제 응용시 고려사항

  • 애플리케이션별 학습 데이터 중요성
  • 도메인 특화 언어 모델 필요
  • 후처리 규칙 정의 필요

7. 결론

7.1 주요 성과

  1. End-to-End 학습의 효과성 입증
  2. 다국어 지원 용이성 확인
  3. 실시간 서비스 가능성 검증

7.2 향후 연구 방향

  1. 모델 아키텍처 개선
  2. 학습 방법론 발전
  3. 실제 응용 확장