-
패스트캠퍼스 환급챌린지 28일차 미션 (2월 28일) : 딥러닝·인공지능 Signature 초격차 패키지 Online. 강의 후기패스트캠퍼스 챌린지 2024. 2. 28. 10:58
자, 오늘은
Part3. 인공지능의 이해 Lv.2: 숲을 보는 인공지능
CH07-08. NLP-Seq2Seq
&
CH07-09. NLP-Attention
CH07-08. NLP-Seq2Seq
자연어 처리에 관련한 태스크를 계속 보는데, 이번에 볼 것은 번역이다.

번역의 구조는 어떻게 될까?
저런 영어 문장을 번역 하였을 때 아래의 4가지 경우중 번역의 경우 어떤 구조를 가지게 되는 것일까?
4번째 many to many이다.
영어 문장이 시퀀스로 입력이 되고 모든 문장이 입력이 되었을 때 결과가 순차적으로 나오는 4번째 RNN 항목이다.
물론 마지막 것도 가능하다.(번역을 즉시 즉시)
RNN을 사용하여 we propse a novel neural network model
우리는 새로운 신경망 모델을 제안한다. 라는 것을 학습시켜보자.

앞서 계속 설명한 것처럼 RNN의 구조상 돌림노래? 처럼 이전에 있었던 가중치를 그대로 가져가기 때문에 위와 같이
노드를 거치면서도 계속 이 벡터데이터들은 사라지지 않고 남아있으면서 학습에 활용된다.
우리는 순차적으로 즉각즉각 번열을 해야하는 경우가 있겠지만 실제적으로는 마지막 단어까지 다 학습된 완전한 문장을
번역한 것을 원할 것이다.
따라서 번역이라는 Task 에 대해서 맨 마지막의 문장 전체를 활용하여 원하는 시퀀스를 만들어보는건 어떨까?
라는 개념으로 seq2seq가 나타난 것이다.
따라서 앞선 이미지의 히든레이어 마지막 값을 다른 히든 레이어의 입력값으로 쓴다.
출력하고자 하는 RNN의 입력으로 다 넣어버리면 그냥 문장을 순차적으로 내뱉어준다.
이 seq2seq 는 결국 Encoder와 decoder로 구성되어있고, 번역에 아주 좋은 발전을 시켰다.
(시초가 되는 모델!)
발상은 인코더의 결과(RNN에 누적된 정보) 가 시퀀스의 vector form이라는 발상부터 시작하여 요약되어있는 벡터 폼을
디코딩에 사용하였따는게 큰 특징이다.
Encoder
variable length source sequence : 입력은 다양한 길이의 시퀀스
fixed length vector : 출력은 고정된 길이의 벡터
Decoder
fixed length vector 의 conditional probability를 maximize : 인코더의 출력결과였던 fixed length vector
variable length target sequence : 다양한 형태를 가지는 타겟 시퀀스
단점으로는 문장이 길어질수록 압축 성능이 떨어진다.(seq2sesq의 최대 단점)
앞선 벡터가 계속 나열됨으로....
CH07-09. NLP-Attention
앞에서 seq 2 seq를 통한 번역을 알아보았다. 이것의 가장 큰 특징은 인코더와 디코더로 나눠지고,
인코더의출력은 입력시퀀스에 대해 하나의 고정된 길이를 갖는 컨텍스트 벡터를 출력하고,
디코더는 컨텍스트벡터를 입력하여 새로운 시퀀스를 만들어낸다!
였는데, 최대의 단점은 문장이 길어질 때 번역의 성능이 떨어진다는 점이었다.
이를 해겨자 어텐션이라는 개념이 나왔다.
"고정된 벡터가 출력되는 시점에서 어디에 초점을 맞춰야 하는지 형관펜을 쳐주는 작업"

위의 이미지에서 보이는 것처럼 네가 제안한다! 라는 아웃풋을 출력해야 하는 시점이라면 전체 시퀀스 중 노란색 형광펜인
propose에 해당하는 정보가 하이라이트 되 표시가 되는 형태인 것이다.
따라서 정적인 벡터들을 동적인 벡터로 변환하여 어디를 집중해야 하는지 보는게 어텐션 구조다.
자 그러면 어떻게 동적으로 변하는 컨텍스트 벡터를 만들 수 있는지 한번 알아보자.

1. Encoder : Bidirectional RNN
먼저 인코더 구조를 보면 바이디렉셔녈 RNN을 사용하는데, 방향이 뒤로갔다가 앞으로갔다가 양방향 RNN을
사용한다. 이렇게 소스시퀀스를 학습한다.
그리고 히든 스테이트의 벡터셋을 각각 생성을 한다.(인코더에서 콘텍스트 벡터로 나가는 화살표)
2. context vector : weight sum of Hiddenstate vector
인코더의 출력결과인 히든 스테이트 벡터를 활용해서 구하는데 그때, 컨텍스트 벡터를 구하기 위해
어텐션 벡터(각각 히든스테이트 벡터에 가중치를 얼마나 줄 것인가)에 가중치를 참고하여 계산(sum)
3. Decoder : context vector, st-1, yt-1...
: 그래서 나온 값을 각각 디코더의 입력으로 활용한다.
어텐션 벡터, 가중치의 합(atteion score)를 어떻게 구하는지 확인해보자!
어텐션의 콘텍스트 벡터는 가중치인 알파와 각 인코더의 은닉상태를 나타내는 에이치를 곱하여 모두 더한 값을 나타낸다.
즉 각 인코더의 은닉 상태에 대한 weight sum 을 구하는 형태
그럼 가중치(알파)는 어떻게 구하는가?
알파: e의 소프트맥스(1의 확률분포)
e는 어떻게 구하는가?
e : 2개가 인자로 사용(h 라는 특정한 은닉상태의 값, si-1 디코더에서의 은닉상태에서의 값)a는 dot production으로 알 수 있다고 한다
너무 어려우니 그림 개념으로 알아보자.

자 정리를 다시 한번 해보자면!
1. 인코더로 여러가지 색깔의 소스 시퀀스가 입력이 도고 이 각각의 시퀀스에 대해서 은닉 상태를 갖게 된다.
(강의에서 나오는 은닉상태라는 것이 헷갈려서 찾아보니 시퀀스의 정보를 요약하고 전달하는 역할이라함)
2. 디코더에서는 인코더에서 받은 학습결과를 또 수행하고, 타겟 시퀀스를 내보낸다.
각각 은닉상태를 보유하게 된다.
3. 첫번째 시퀀스를 학습하여 파란색 동그라미를 얻는 시퀀스를 출력했다.
4. 다음 시퀀스에서는 이전에서 출력한 값을 입력으로 사용하고, 초록색 값도 사용한다.그리고
5. 컨텍스트벡터를 사용한다.
6. 어텐션에서의 컨텍스트벡터는 어떤 하나의 정적인 값을 공통적으로 사용하는 것이 아니라 이 값이 동적으로 변한다
하였는데, 이 값(닷프로덕트 어텐션 스코어)을 구하기 위해
디코더의 은닉상태(초록색 원) 과 인코더의 은닉상태(사각 색깔)을 내적하여 어텐션 스코어를 구하고
이 어텐션 스코어를 각각의 은닉상태의 갑셍 곱해서 최종적으로 구한 컨텍스트 벡터를 입력으로 활용한다.
7. 각각의 히든 스테이트 값을 동일하게 하는게 아니라 특정 은닉층의 값을 더 비중을 주게 되는 것이지.
(들어가는 파란 원 옆에 막대 기둥의 높이가 다 다르다.)
요약하자면
Attention
1. Seq2Seq에서 context vector가 fix 된 것을 보완
2. 타겟 단어와 중요한 관계를 가지는 부분을 자동(동적)으로 찾음
Attention Score
h의 s에 대한 중요도
28일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글