본문 바로가기
책&강의 학습/올인원 패키지 :딥러닝&인공지능

[패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 46회차 미션

by 소한보 2020. 8. 13.

Part4-54. 맥락을 파악하는 Attention 기법 - 03. (STEP 1) Attention 신경망 - 2

RNN을 제외하고 Attention만 이용하여 최고의 성능을 끌어낸 연구

네트워크 특성

Seq2Seq와 유사한 Transformer 구조 사용
Scaled Dot-Product Attention과 Multi-Head Attention 블록이 핵심 알고리즘
BPTT와 같은 과정이 없으므로 병렬연산이 가능
RNN은 입력단어 순서가 순차적으나, 병령연산으로 인해 Positional Encoding 사용

Transformer vs Seq2seq


Seq2seq는 인코더와 디코더가 존재, RNN으로 이뤄져 있어 순차적으로 이뤄짐
Transformer 인풋쪽과 아웃풋으로 구분, 병별적으로 연산 진행

Inputs & Output


Input은 이전과 동일하게 입력단어의 가짓수 X 입력 시퀀스의 길이
output은 출력단어의 가짓수 X 출력 시퀀스의 길이
Seq2seq처럼 입력에 이전값을 반영해준것과 동일하게 진행

Positional Encoding


시간적으로 위치가 다를떄 마다 고유의 코드를 생성하고 더하는 방식
전체 시퀀스 길이중 상대적 위치에 따라 고유 백터를 생성하여 임베딩된 벡터에 더해줌
특정한 규칙에 의해서 만들어짐.

Scaled Dot-Product Attention


쿼리, 키벨류의 구조를 띄고 있음
Dot-Product(inner product)
디코더값을 예측하기 위해 이전 모든 값을 확인하는게 맞음
하지만 self-attention의 경우 순차적으로 적용된다고 할때 이후 데이터가 나와지 않아서 전체와 비교가 불가
따라서 Mask를 사용해 illegal connection을 막아줌

Multi-Head Attention


Scaled Dot-Product Attention을 h모아서 병렬연산 진행
concatation을 하는 경우 출력이 커질수 있기 때문에 Linear연산을 통해 차원을 감소시킴
Linear로 차원이 줄었기 때문에 연산속도도 줄어듬
h개를 병렬연산으로 진행하면서 하나하나의 연산은 작아짐
병령연산에 유리한 형태로 변화

Masked Multi_Head Attention


쿼리가 있을때 이전것들만 키와 값으로 활용
자기자신을 포함하지 않은 미래값으로는 Attention을 구하지 않기 때문에 mask사용

Multi-Head Attention


self-atttenion 하려면 마스크 필요
Multi-Head Attention은 Masked Multi_Head Attention에서 이전값을 가져오고
input에서 key와 value를 가져옴

seq2seq와 동일한 구조

Position-wise Feed-Forward

Position-wise 단어하나마다 입력으로 들어가고 출력으로 나오는 구조

add & Norm

forward할 부분과 skip할 부분을 합쳐주고 Layer Normalization진행
Layer Normalization은 배치에 영향을 주지 않는 일반화

ouptput softmax

LInear연산을 이용해 출력단어 종류엥 맞춤
softmax를 사용해서 출력구조로 반출

Part4-55. 맥락을 파악하는 Attention 기법 - 04. (STEP 2) Attention 신경망의 수식적 이해 - 1

Attention 매커니즘

키와 쿼리를 비교해서 비교값을 뽑아내고 이를 value와 썩어서 출력
compare함수로는 Dot_product가 많이 쓰임
비슷할수록 더 큰 출력을 냄
Aggregationd은 weighted sum을 사용

Seq2seq의 key-value

디코더에서 인코더의 중간값들도 확인하는 것이 key-value값으로 사용

Seq2seq의 Query

하나 앞선 값을 Query로 사용

Seq2seq Attention 매커니즘


comparison함수는 내적으로 구성
내적을 하게되면 유사할수록 더 높은 값이 출력
이를 소프트맥스로 씌워줘서 0~1값을 갖게끔 함

Seq2seq Application


dense layer가 하나 더 있어서 최종출력으로 바꿔주는 역할
one-hot 벡터로 출력되게끔

딥러닝/인공지능 올인원 패키지 Online

댓글