본문 바로가기

[ML&DL]

[ML&DL] 텍스트를 위한 인공 신경망

[전체흐름 정리]

### 기존 신경망
하나의 샘플을 사용하여 정방향 계산을 수행한 후,
해당 샘플은 버려지고 다음 샘플을 계산할 때 사용하지 않는다.

* 피드포이드 신경망
입력 데이터의 흐름이 앞으로만 전달되는 신경망

 

### 순환 신경망(recurrent Neural network: RNN)
신경망이 이전에 처리했던 샘플을 다시 샘플 계산 시, 재사용하기 위한 신경망
이전에 처리했던 샘플을 다음 샘플 연산에 표함시키기 위해 순환 시키는 신경망

완전 연결 신경망에 이전 데이터의 처리 흐름을 순환하는 고리 하나만 추가.
주로 은닉층에 추가

# 용어
타임스텝: 샘플을 처리하는 한 단계를 의미
셀: 하나의 층(layer). 여러개의 뉴런이 있지만, 모두 표시하지 않고 하나의 셀로 층을 표현
은닉상태: 셀의 출력을 의미
시퀀스: 보통 하나의 샘플을 지정. 시퀀스 안에는 여러개의 아이템이 존재. 따라서 , 시퀀스의 길이는 == 타임스텝의 길이

# 순환 신경망 기본 구조:
입력 * 가중치 => 활성화함수=>다음층으로 전달 : 기존 신경망
층의 출력을 다음 타임스텝에 재사용 : 순환 신경망

활성화 함수: 하이퍼볼릭 탄젠트 함수인 tanh
-1 ~1사이의 범위를 갖는다.

입력* 가중치1 / 이전 타임승텝의 은닉상태 * 가중치2

셀의 가중치와 입출력
순환층에 입력되는 특성의 갯수: 4개
뉴런: 3개

1.. 입력층과 순환층의 뉴런은 완전 연결: 4*3=12
2. 순환층에서 타입스텝에 재사용되는 은닉상태 : 3*3=9
이유: 첫번째 뉴런의 은닉생태가 다음 타임스텝에 재사용될 때
세 개의 뉴런 모두에게 전달되기 때문
 즉, 모델 파라미터 수 = 12+9+절편

입력이 순환층을 통과하면 순환층의 뉴런의 갯수만큼 출력된다.
=> 즉, 1차원 배열로 변화한다.(Flatten 클래스로 펼칠 필요x)

**** 순환층은 기본적으로 마지막 타임스텝의 은닉 상태만 출력으로 내보낸다.

 

 

 

말뭉치: 자연어 처리에서 사용하는 테스트 데이터의 모음, 즉 훈련 데이터셋을 말함

 

토큰: 텍스트 데이터가 숫자로 분리된 단어, 하나의 샘플은 여러개의 토큰으로 이루어져 있고,

1개 토큰이 하나의 타임스텝에 해당

 

원-핫 인코딩: 정수로 변환된 토큰은 어떠한 관련이 없어야하기 때문에 고유한 정수를 표현하는 원-핫 인코딩이 필요

 

단어 임베딩: 정수로 변환된 토큰을 비교적 작은 크기의 실수 밀집 벡터로 변환

따라서 자연어ㅓ 처리에서 좋은 성능을 발휘함

 

 


LSTM : 단기 기억을 오래 기억하기 위해 고안
활성화 함수: 시그모이드/ tnah
타임스텝의 길이가 길때 쓰는 메모리

입력과 이전 은닉상태* 가중치 => 시그모이드 => 다음 은닉상태
이전 은닉상태 => tanh => 값
다음 은닉 상태 * 값

LSTM은 순환되는 상태가 2가지
1. 은닉상태 : 다음 층으로 출력 결과를 전달.
2. 셀 상태: LSTM 내에서만 순환되는 값을 보유

입력게이트: 새로운 정보를 셀 상태에 추가
출력게이트: 셀 상태가 다음 은닉 상태로 출력
삭제게이트: 셀 상태에 있는 정보를 삭제

GRU : LSTM의 성능 보완
LSTM보다 가중치가 적기 때문에 계산량이 적다.
LSTM 못지 않은 성능을 제공

'[ML&DL]' 카테고리의 다른 글

[ML&DL] 이미지를 위한 인공 신경망  (0) 2023.03.14
[ML&DL] 딥러닝 입문  (0) 2023.03.13
[ML&DL] 비지도학습  (0) 2023.03.10
[ML&DL] 트리 알고리즘  (0) 2023.03.09
[ML&DL] 다양한 분류 알고리즘  (0) 2023.03.08