목록Deep Learning/이론 (14)
Patrick's 데이터 세상
Transformer트랜스포머(Transformer)는 2017년 구글이 발표한 희대의 논문인 'Attention is all you need'에서 나온 모델로 후대에 BERT, GPT 계열의 모델에 막대한 영향을 끼쳤습니다. 기존의 seq2seq 인코더-디코더 구조를 따르면서 어텐션(Attention)만으로 구현한 모델입니다. 기존 seq2seq 모델은 인코더가 입력 시퀀스를 하나의 벡터로 압축하는 과정에서 정보가 일부 손실된다는 단점이 있는데 이를 보완하기 위해 등장했습니다. 👉🏻 트랜스포머 구조 트랜스포머는 RNN을 사용하지 않지만 기존의 seq2seq처럼 인코더에서 입력 시퀀스를 입력받고, 디코더에서 출력 시퀀스를 출력하는 인코더-디코더 구조를 유지합니다. 이전 seq2seq 구조에서는 인코더와 ..
Attention 입력 시퀀스를 인코더에서 하나의 고정된 Context Vector로 압축하고 이를 활용하여 디코더에서 출력 시퀀스를 만드는 seq2seq는 여러 문제점이 있습니다. ∙ 하나의 고정된 크기의 벡터에 인코더의 모든 정보를 압축하다 보니 정보 손실이 발생합니다. ∙ RNN의 고질적인 기울기 소실(Vanishing Gradient) 문제가 존재합니다. 위 문제는 입력 문장이 길면 번역 품질이 떨어지는 현상으로 나타납니다. 이를 위한 대안으로 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보완하기 위해 등장한 기법이 Attention입니다. Attention의 기본 아이디어는 디코더에서 출력 단어를 예측할 때, 매 시점(time step)마다, 인코더에서 전체 입력 문장을 다시 한..
seq2seq seq2seq는 두 개로 구성된 인코더, 디코더 아키텍처로 구성됩니다. 인코더는 입력 문장의 모든 단어들을 순차적으로 입력받은 뒤에 마지막에 모든 단어 정보를 압축해 하나의 벡터로 만드는데 이것을 Context Vector라고 합니다. 입력 문장의 정보가 하나의 컨텍스트 벡터로 모두 압축되면 인코더는 컨텍스트 벡터를 디코더로 전송합니다. 디코더는 컨텍스트 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력합니다. 인코더 아키텍처와 디코더 아키텍처의 내부는 사실 두 개의 RNN 아키텍처입니다. 입력 문장을 받는 RNN 셀을 인코더라고 하고, 출력 문장을 출력하는 RNN 셀을 디코더라고 합니다. 물론, 성능 문제로 인해 실제로는 바닐라 RNN이 아니라 LSTM(장단기메모리) 셀 또는 GRU ..
👉🏻 장기의존성 문제 Vanilla RNN의 한계로 인해 RNN의 변형으로 앞서 본 BIdirectional RNN과 LSTM 개념이 등장했습니다. Vanilla RNN의 한계 첫 번째 입력 x1의 정보량에서는 짙은 남색인데 시점이 지날수록 색이 흐려지는 것처럼 앞의 정보가 뒤로 충분히 전달되지 않는 문제가 발생합니다. (비교적 짧은 sequence에서만 효과를 보임) ex) "정부가 지난 8일부터 17일까지 이어진 집중호우 피해지역에 대한 사전조사 결과를 토대로 특별재난지역 선포기준 충족이 확실시되는 서울, 경기, 강원, 충남 지역 10개 지자체에 대해 대통령 재가를 받아 특별재난지역으로 우선 선포했다. 22일 중앙재난안전대책본부는 중앙합동조사 전 집중호우 피해의 신속한 수습·복구를 위한 정부 차원의 ..
RNN 👉🏻 개요 RNN(Recurrent Neural Network) 순환 신경망 모델은 입력과 출력을 Sequence 단위로 처리하는 가장 기본적인 시퀀스 모델입니다. 기존의 신경망은 전부 은닉층에서 활성화 함수를 지닌 값이 오직 출력층 방향으로 가는 FFNN(Feed Forward Neural Network)였습니다. RNN은 은닉층 노드에서 활성화 함수를 통해 나온 값을 출력층 방향으로 보내고, 다시 은닉층 노드의 다음 계산의 입력으로 보냅니다. 👉🏻 기본 구조 은닉층 메모리 셀은 각 시점(time step)에서 바로 이전 시점의 은닉층 메모리 셀에서 나온 값을 자신의 입력으로 사용하는 재귀적 활동을 합니다. 은닉층에서 활성화 함수를 통해 결과를 내보내는 노드 : cell 이전의 값을 기억하려고 ..
Subword Segmenation(서브워드 분리)은 하나의 단어를 여러 서브워드로 분리해서 단어를 인코딩 및 임베딩하는 전처리 작업입니다. 이를 통해서 OOV(Out-Of-Vocabulary), 희귀 단어, 신조어와 같은 문제를 해소할 수 있습니다. BPE(Bite Pair Encoding) 자연어 처리에서의 BPE는 기존에 있던 단어를 분리한다는 의미입니다. 글자(character) 단위에서 점차적으로 단어 집합(vocabulary)을 만드는 bottom up 방식의 접근을 합니다. 훈련 데이터의 모든 단어들을 글자(character) 또는 유니코드(unicode) 단위로 단어 집합(vocabulary)를 만들고, 가장 많이 등장하는 유니그램을 하나의 유니그램으로 통합합니다. BPE 알고리즘을 사용한..