ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20221215 = RNN 복습, TextVectorization
    PYTHON 2022. 12. 15. 16:13
    RNN (Recurrent Neural Network)
    * 용어는 비슷하지만 순환 신경망과 재귀 신경망(Recursive Neural Network)은 전혀 다른 개념
    
    → 기존 모델은 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향함
    → 시퀀스 데이터를 기존모델인 NN, CNN으로는 처리성능이 낮았음
    → 가중치가 데이터의 처리되는 순서와 상관없이 업데이트되기 때문에 이전에 본 샘플을 기억할 수 없음
    → 단어와 단어 사이의 gap이 넓을 경우엔 잘 동작하지 못한다.
    → 인공 신경망과 다르게 RNN은 순환 구조이므로 은닉층의 데이터를 저장하며 펼쳐진 형태로 
      순환구조로 확률값을 계산
    
    기존 모델들과의 차이점
    
    → 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징
    → 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망
    → RNN은 텍스트 분류나 기계 번역과 같은 다양한 자연어 처리에 대표적으로 사용되는 인공 신경망
    
    RNN의 활용 분야  
    → 언어 모델링
    → 음성 인식
    → 기계 번역
    → 대화 모델링/질문 답변
    → 이미지/비디오 캡션
    → 이미지/음악/동작생성
    
    RNN의 한계점
    
    → RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점
    → 장기 의존성 문제
    → RNN의 시점(time step)이 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생
    → 해결책: LSTM
    SimpleRNN
    
    → 층을 순서대로 쌓아 clasffifier를 만들어준다.  
    → 첫 번째 층은 Embedding 으로, 정수로 인코딩된 단어를 입력 받고 각 단어 인덱스에 해당하는  
    임베딩 벡터를 찾아준다. 최종 차원은 ( batch, sequence, embedding ) 이 된다.  
    → 기본적으로 RNN 레이어 출력에는 샘플 당 하나의 벡터가 포함된다.  
    이 벡터는 마지막 타임스텝에 해당하는 RNN 셀 출력으로, 전체 입력 시퀀스에 대한 정보를 포함
    
    parameters
    
    units = 양의 정수, 출력 공간의 차원.  
    activation = 사용할 활성화 기능. 기본값은 tanh으로 None을 전달하면 활성화가 적용되지 않음  
    use\_bias = True레이어가 편향 벡터를 사용하는지 여부를 나타내는 부울  
    bias\_initializer = 편향 벡터의 이니셜라이저  
    return\_sequences = 출력 시퀀스의 마지막 출력을 반환할지 아니면 전체 시퀀스를 반환할지 여부  
    return\_state = 출력 외에 마지막 상태를 반환할지 여부  
    go\_backwards = True이면 입력 시퀀스를 거꾸로 처리하고 반전된 시퀀스를 반환
    TextVectorization
    
    자연어 처리에서는 기계가 문자를 이해 할 수 있도록 수치화해주는 과정이 반드시 필요하다
    
    1. 원-핫 인코딩(One-hot encoding)
    
    → 원-핫 인코딩은 텍스트를 유의미한 숫자(벡터)로 바꾸는 가장 쉬운 방법
    → 하나의 요소만 1이고 나머지는 모두 0인 희소 벡터(sparse vector)이다.
    → 원-핫 벡터의 차원은 말뭉치(corpus) 내 단어의 수와 같다.
    → 단어의 특정한 관계나 의미를 포함하지 않는다.
    
    2. TF-IDF: 빈도수 기반 텍스트(문서) 벡터화 방법
    
    → TF-IDF는 문서를 벡터화 할 때, 단어의 빈도에 역문서 빈도를 가중치로 주어 계산하는 개념
    → 각 단어들이 전체 문서에 얼마나 자주 등장하는지에 따라 TF-IDF 값은 달라지게 된다
    
    3. 단어 임베딩(Word Embedding)
    
    → Word Embedding은 단어를 벡터로 표현하는 방법, 단어를 밀집 표현으로 변환한다.
    → 희소 행렬과는 반대 되는 개념으로 대부분이 0 이 아닌 값으로 채워진 행렬
    LSTM ( Long Short Term Memory Network )
    
    → LSTM알고리즘은 Cell State라고 불리는 특징층을 하나 더 넣어 Weight를 계속 기억할 것인지 결정
    → LSTM은 과거의 데이터를 계속해서 업데이트
    → 기존 RNN의 경우, 정보와 정보사이의 거리가 멀면, 초기의 Weight값이 유지되지 않아 학습능력이 저하
    GRUs ( Gated Recurrent Units )
    
    → LSTM을 변형시킨 알고리즘으로, Gradient Vanishing의 문제를 해결
    → GRUs는 Update Gate와 Reset Gate를 추가하여, 과거의 정보를 어떻게 반영할 것인지 결정
    → Update Gate는 과거의 상태를 반영하는 Gate이며, Reset Gate는 현 시점 정보와 과거 시점 정보의 반영 여부를 결정

     

    'PYTHON' 카테고리의 다른 글

    20221220 = AARRR  (0) 2022.12.20
    20221219 = BERT  (1) 2022.12.19
    20221214 = 자연어처리 복습 및 RNN 유형  (0) 2022.12.14
    20221212 = CNN 복습 / 자연어처리 개념 정리  (0) 2022.12.12
    20221207 = CNN 복습 및 정리  (0) 2022.12.07
Designed by Tistory.