본문 바로가기

혼자서

20220705

 

트랜스포머 : 기존의 seq2seq 구조인 인코더-디코더를 사용하며 attention으로만 구현

(RNN 사용 X)

 

기존의 seq2seq는 두 개의 모듈 사용

인코더 : 입력 시퀀스를 하나의 벡터 표현으로 압축

디코더 : 이 벡터 표현을 통해 출력 시퀀스 생성

여기서 인코더 압축 과정에서 입력 시퀀스의 정보가 일부 손실된다는 단점이 있음

 

<트랜스포머 하이퍼함수>

 

1. d_model= 512 :

트랜스포머의 인코더와 디코더에서 정해진 입·출력 크기 의미

(임베딩 벡터 차원도

, 각 인코더와 디코더가 다음 층의 인코더-디코더로 값을 보낼 때도 차원 유지)

 

2. num-heads = 8 :

트랜스포머에서 어텐션 사용 시 여러 개로 분할해서 어텐션 수행 후 결과 값을 합치는데 이때의 병렬 개수

 

3. num-layers = 6 :

트랜스포머 모델에서 인코더-디코더가 총 몇 층으로 구성됐는지 의미

 

4. d_ff = 2048 :

트랜스포머 내부의 피드포워드 신경망의 은닉층 크기

피드포워드 신경망의 입·출력 크기는

피드포워드 신경망 : 값의 흐름이 단방향인 신경망. 이를 대체하기 위해 RNN 등장

 

RNN은 한 단어씩 여러 단계를 순차적으로, 트랜스포머는 문장을 병렬구조로.

 

기존의 seq2seq는 인코더에서 입력 시퀀스를 입력받고 디코더에서 출력시퀀스를 출력하는 인코더-디코더 구조를 유지

트랜스포머는 인코더-디코더 구조가 N개 존재 가능

 

RNN은 자연어 처리 시 위치 정보(positional information) 사용.

트랜스포머는 각 단어의 임베딩 벡터에 위치 정보를 더해서 모델의 입력으로 사용

= positional encoding

 

LSTM : RNN의 한 종류, Long Short Term Memory Network.

RNN은 장기 의존성 문제 해결이 힘들어서, 이를 보완하는 것이 LSTM

 

<딥러닝 신경망>

 

ANN (Artificial Neural Network : 인공 신경망)

인간의 뉴런이 연결된 형태를 수학적으로 모방한 모델

뇌에서 뉴런들이 신호, 자극을 받고 그 자극이 어떠한 임계 값을 넘어서면 결과 신호를 전 달하는 과정에서 착안

ANN 뉴런은 여러 입력값을 받아서 일정 수준이 넘어서면 활성, 출력 값을 내보냄

뉴런들을 여러개 쌓아 두 개의 층 이상으로 구성되는 것이 특징

ex) 퍼셉트론

단층 퍼셉트론 (single-layer perceptron) :

입력층(input layer) 과 출력층(oupput layer)로 구성.

입력층에서 학습 벡터 or 입력 벡터 입력됨

입력된 데이터는 출력층 뉴런으로 전달되어 활성 함수에 따라 값 출력

출력층은 임의의 n개의 뉴런으로 구성 가능

단층 퍼셉트론은 값을 보내는 단계 > 값을 출력하는 단계. 총 두 단계로 구성

 

다층 퍼셉트론 (multi-layer perceptron) :

단층 퍼셉트론의 경우 AND, NAND, OR은 가능하지만 XOR 불가능. 이를 보완

입력층과 출력층 사이 은닉층(hidden layer) 추가

선형 분류만으로는 불가능했던 문제를 비선형으로 풀기 가능.

은닉층이 2개 이상인 신경망은 DNN

 

DNN (Deep Neural Network : 심층 신경망)

ANN 이후 모델 내 은닉층을 더 늘려서 학습의 결과를 향상시킴

ANN에 비해 더 적은 수의 유닛들로도 복잡한 데이터를 모델링 가능

컴퓨터가 스스로 분류 레이블을 만들어내고 공간을 왜곡하고 데이터를 구분 짓는 과정을 반복하여 최적의 구분선을 도출

 

CNN (Convolutional Neural Network : 합성 곱 신경망)

데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조

convolution 과정과 pooling 과정을 통해 진행

convolution layerpooling layer를 복합적으로 구성하여 알고리즘 생성

 

RNN (Recurrent Neural Network : 순환 신경망)

반복적이고 순차적인 데이터 학습에 특화된 인공신경망의 한 종류로, 내부의 순환구조가 들 어있음

순환구조를 이용하여 과거의 학습을 weight를 통해 현재 학습에 반영

기존의 지속적이고 반복적이며 순차적인 데이터 학습의 한계를 해결

현재의 학습과 과거의 학습의 연결을 가능하게함, 시간에 종속됨

 

 

GAN (Generative Adversarial Network : 생산적 적대 신경망, 생성 대립 신경망)

서로 경쟁하면서 가짜 이미지를 진짜 이미지와 최대한 비슷하게 만들어 내는 네트워크

 

GRU (Gated Recurrent Units) :

게이트 매커니즘이 적용된 RNN 프레임워크의 일종. LSTM보다 더 간략한 구조, 학습할 가 중치가 비교적 적음

조경현 박사님이 제안

Reset Gate : 과거의 정보를 어느정도 리셋. (0, 1)값을 이전 은닉층에 곱해준다. 직전 시점 은닉층의 값과 현시점의 정보에 가중치를 곱하여 얻을 수 있음

Update Gate : 과거와 현재의 정보의 최신화 비율을 결정

Candidate : 현시점의 정보 후보군을 계산. 과거 은닉층의 정보를 그대로 이용하지 않고 리셋 게이트의 결과를 곱함

마지막에 update gate 결과와 candidate 결과를 결합하여 현시점의 은닉층을 계산

 

Attention 기법

Attention Decoder에 전달할 Context Vector을 만들기 위해 Encoderhidden state들을 step별로 구한다.

각각 stephidden state에 이전 step 디코더의 hidden state

를 각각 dot-product 하거나 다른 score 함수를 사용해 attention score 부여.

점수를 softmax한다. (점수 합이 1)

softmax 된 점수에 해당하는 각각의 hidden state들을 곱한다.

점수에 곱해진 벡터들을 더해 context vector 구해준다.

 

*어텐션의 기본 아이디어는 디코더에서 출력단어를 예측하는 매 시점마다 인코더에서의 전체 입력문장을 다시 한번 참고하는 것. 특히 연관이 있는 입력 단어 부분에 더 집중.

 

 

'혼자서' 카테고리의 다른 글

20220711  (0) 2022.07.19
20220708  (0) 2022.07.19
20220706  (0) 2022.07.19
anaconda 설치 오류 (users 폴더 명 변경) + 그 후 오류  (0) 2022.05.03
220305 정리  (0) 2022.03.05