heheh
히히
heheh
전체 방문자
오늘
어제
  • 히히 (75)
    • AI (14)
      • Model (Study) (3)
      • Model (Paper) (7)
      • Tip! (4)
    • Backend (3)
      • ASP.NET (1)
      • Spring (2)
      • program (0)
      • JAVA (0)
    • Program (11)
      • Docker (3)
      • Github (5)
      • AWS (3)
    • OS (1)
      • Window (1)
      • Linux (0)
    • Python (14)
      • Python Lib (11)
      • Pytorch (1)
      • Tensorflow (1)
      • 크롤링 (1)
    • Spark (3)
      • Scala (2)
      • Pyspark (0)
      • SQL (1)
    • IOS (Swift) (0)
      • 기본 개념 (0)
    • 프로젝트 (3)
      • [AI] GAN (0)
      • [IOS] Swift (3)
      • [AI] 추천시스템 (0)
    • 분석 (1)
    • 알고리즘 풀이 (22)
      • 백준 (22)
    • 기타 (3)
      • 장비세팅 (3)
      • 소개 (0)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
heheh

히히

Attention : NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE
AI/Model (Paper)

Attention : NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE

2021. 6. 28. 23:44

Attention : NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE

 

논문 : https://arxiv.org/pdf/1409.0473.pdf

텐서플로우 코드 : 

https://www.tensorflow.org/tutorials/text/nmt_with_attention https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/nmt_with_attention/nmt_with_attention.ipynb#scrollTo+yJ_B3mhW3jFk

코드2 : https://github.com/hlamba28/NMT-with-Attention-Mechanism/blob/master/NMT_Attention_Marathi.ipynb

코드3 : https://github.com/arshren/NMT-with-Attention/blob/master/NMT%20with%20Attention%20trained%20with%2020%20epochs.ipynb

(두 코드 같은 베이스인것으로 보임 및 2번이 더 맘에 듦 ㅎ)
설명 블로그 : 

이미지 및 공부 영상 : https://www.youtube.com/watch?v=WsQLdu2JMgI 

 

 

 

 

첫번째 단어 출력

 

두번째 단어 출력 및 이를 반복

 

인코더 + 디코더 및 문맥벡터 사용 형태는 기존 자연어 처리 매커니즘과 동일

 

인코더때 각각의 셀인 스테이트를 모두 활용한다. (마지막 셀에서 나온것만 문맥벡터화 하는 s2s와 다르게)

장점 1. 다양한 정보를 담을수 있다. 2. 집중해야하는 단어에게만 집중할 수 있는 매커니즘 설립 가능하다.

 

인코더

히든층을 뽑는다는 것은 동일하다.

이때 디코딩을 위한 과정이 달라진다.

1. 각 은닉층에 FC를 거친 값에 마지막 FC도 더해서 거친다.

2. 그리고 이 값은 층마다의 출력으로 나오며 스코어(s1,s2,s3...)등으로 말한다.

3. 여기에 소프트맥스를 적용한다. 즉 점수화를 하는데, 이때 어텐션 웨이트가 나온다. (0.9, 0.0, 0.1 등)

4. 그렇다면 각 단어들의 인코더 히든층마다 해당 웨이트들을 각각 곱해서 문맥벡터를 만든다. 이때 이 문맥벡터는 어텐션 웨이트를 곱해서 만들어졌기에 필요한 부분에 집중한 더 효과적인 결과를 만들 수 있게 된다.

5. 이 문맥벡터를 디코더의 첫 RNN셀에 넣는다. 그러면 첫번째 단어가 출력된다. (1단계 완료)

6. 다음 단어의 디코딩을 위해 인코더의 모든 히든층에 디코더의 히든스테이트를 같이 FC하여 다른 웨이트를 구한다. 이때 중요한 것은 계속 모든 히든층을 반복적으로 사용한다는 것이다.

7. 그 뒤 해당 웨이트를 모든 인코더 히든층에 모두 다시 곱해서 두번째 단어를 출력한다. (2단계 완료)

8. 이를 계속 반복하고 end토큰이 나오면 멈춘다.

 

teacher forcing

틀린 답을 내뱉었을경우 예측값이 아닌 정답을 넣을 수 있도록 해서 학습을 효율적으로 또 정확하게 진행하도록 한다.

이는 당연히 지도학습이며, 즉 정답 레이블이 존재할 때만 가능하다.

 

 

'AI > Model (Paper)' 카테고리의 다른 글

NIC : 이미지 문장 번역  (0) 2021.08.09
[Seq2Seq] Sequence to Sequence Learning with Neural Networks  (0) 2021.06.19
[코드] 오토인코더 - Training Deep AutoEncoders for Collaborative Filtering  (0) 2021.03.02
[논문] 오토인코더 - Training Deep AutoEncoders for Collaborative Filtering  (0) 2021.02.26
(진행중)Transformer : Attention Is All You Need 리뷰  (0) 2021.01.18
    heheh
    heheh

    티스토리툴바