1. Sequence-to-sequence(Seq2seq)
- ์ํ์ค๋ฅผ ๋ค๋ฅธ ์ํ์ค๋ก! : ์ด๋ค ์ํ์ค๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด ๊ทธ ์ํ์ค๋ฅผ ๋ค๋ฅธ ์ํ์ค๋ฅผ ๋ณํ์ํค๋ ๋ชจ๋ธ๋ง
- Encoder: ๋ญ๊ฐ๋ฅผ ์ดํดํ๋ ๋ชจ๋ธ
- Decoder: ๋ญ๊ฐ๋ฅผ ์์ฑํ๋ ๋ชจ๋ธ
- ์ธ์ฝ๋๊ฐ ์ ๋ ฅ๋ฐ๊ณ ๋ด์ฉ์ ์ดํดํ๊ณ ๋ง๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ ๊ฒฐ๊ณผ๊ฐ Context vector(๊ฐ๋ฐ์๊ฐ ์ฌ์ด์ฆ๋ฅผ ์ง์ )
- ์ปจํ ์คํธ ๋ฐฑํฐ๋ฅผ ์ ๋ ฅ๋ฐ์์ ๋์ฝ๋๊ฐ ๋ฌธ์ฅ์ ์์ฑ
- ๋ฌธ์ : ์
๋ ฅ์ ๊ธธ์ด๊ฐ ๊ธธ์ด๋ ๊ณ ์ ๋ ์ฌ์ด์ฆ์ context ๋ฒกํฐ๋ฅผ ์ฌ์ฉํด์ผํจ -> ์ธ์ฝ๋์ ๋ค์ด๊ฐ๋ ๋ด์ฉ์ด ๋ง์ผ๋ฉด ์ ๋ถ ์ปจํ
์คํธ ๋ฒกํฐ์ ์ ์ฅํ๊ธฐ ๋ถ๊ฐ
- ์ ๋ถ ์ดํดํ๋ค์์ ํ๋ฒ์ ์ปจํ ์คํธ ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฒ์ ๋นํจ์จ์ !
- ๊ทธ๋ฌ์ง๋ง๊ณ ํ ๋จ์ด, ํ ํฐ์ ๋ณผ ๋๋ง๋ค ์ปจํ ์คํธ ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด์ ์ฃผ๋ฉด, ๋์ฝ๋๊ฐ ๋ณด๊ณ ๋์ ์ค์ํ ๊ฒ๋ง ๋ฝ์์ ์ฐ๊ฒ ๋ค.
- ์ด๊ฒ Attention machanism
2. Attention Mechanism
1) Key vector๋ฅผ ์์ฑํ๋ค.
๊ฐ ๋จ์ด(ํ ํฐ)์ ๋ฒกํฐํํ๋ค.
- Key
- Encoder hidden state
- ์ธ์ฝ๋๊ฐ ๊ฐ ๋จ์ด(ํ ํฐ)๋ง๋ค ์ดํดํ ๋ด์ฉ
2) Query์ Key๋ฅผ dot product
๋์ฝ๋๊ฐ ์ง๊ธ๊น์ง ๋ฌธ์ฅ์ ์์ฑํ๋ฉด์ ์ ๋ฆฌํด์จ ๋ด์ฉ์ธ, query๋ฅผ ๊ฐ์ ธ์์ Key์ dot productํ์ฌ ์ ์ฌ๋๋ฅผ ๊ตฌํ๋ค.
- Query
- Decoder hidden state
- ๋์ฝ๋๊ฐ ์ง๊ธ๊น์ง ๋ฌธ์ฅ์ ์์ฑํ๋ฉด์ ์ ๋ฆฌํด์จ ๋ด์ฉ
- ๋์ฝ๋๊ฐ ํน์ ๋จ์ด(ํ ํฐ)์ ๋ฒ์ญํด์ผํ ์์ ์ด๋ผ๊ณ ๊ฐ์ ํ ๋, ๊ทธ ์ ๊น์ง ์ ๋ฆฌํด์จ ๋ด์ฉ๋ค์ ๊ฐ์ ธ์จ๋ค๊ณ ์๊ฐํ๋ฉด๋จ (๋ด์ฉ์ ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ ์ง๋ ๋ค์์ ์ค๋ช
)
- ์ Query๋ผ๊ณ ๋ถ๋ฅด๋์ง?
- ๊ฒ์ํ ๋, ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋
- ๋์ฝ๋๋ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์ค์ํ key๋ค์ ์ฐพ์
- ์ค์ํ Key๋ฅผ ์ฐพ๊ธฐ ์ํ ๋๊ตฌ
- query์ key๋ฅผ doc product ์ํ ⇒ ์ ์ฌ๋ score
- ๋ ๋ฒกํฐ๊ฐ ์ฌ์ด์ฆ๊ฐ ์๋ง๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฒกํฐ๋ฅผ transpose ํด์ doc product ์งํ
- [1,vec_size][vec_size1]
- ๊ณ์ฐํ๋ฉด ๊ฐ key๋ณ๋ก ์ ์ฌ๋
- dot product๊ฐ ์ ์ ์ฌ๋์ผ๊น?
- dot product(๋ด์ )์ ํ๋ค๋ ๊ฒ์ ํ ๋ฒกํฐ๋ฅผ ๋ค๋ฅธ ๋ฒกํฐ์ ์ ์ฌ์ํ ๊ฒ์ ๊ธธ์ด๋ฅผ ๊ณฑํ๋ ๊ฒ
- query ๋ฒกํฐ์ Key๋ฅผ ์ ์ฌ์ํด์ ๋์ ๊ธธ์ด๋ฅผ ๊ณฑํ๋ ๊ฒ
- ๋น์ทํ ๋ฐฉํฅ๊ณผ ๋น์ทํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ๋ฒกํฐ๋ ๋ด์ ๊ฐ์ด ์ปค์ง๊ธฐ ๋๋ฌธ์ ์ ์ฌ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ํ๋น
3) ๊ตฌํ score์ softmax๋ฅผ ์ทจํด์ 0~1 ์ฌ์ด์ ๊ฐ์ผ๋ก ๋ง๋ ๋ค.
4) ๊ทธ ๋ค์ Key vector์ ๊ณฑํด์ Value๋ฅผ ๋ง๋ ๋ค
- Value
- Query์ key ๋ฅผ ์ด์ฉํด์ score๋ฅผ ๊ตฌํ ํ, softmax๋ฅผ ์ทจํ ๊ฐ์ ๋ค์ Key vector๋ฅผ ๊ณฑํ ๊ฐ
- aliment vector
- Key๋ณ๋ก ํ๋์ฉ ์์ด์ ์ด๋ฆ์ด value → python dictionary ์ ๋น์ท
- score์ ๊ฐ์ด ํด์๋ก key vector์ ์๋ ํํ๊ฐ ๋ ๋ง์ด ๋จ์์์
- ‘๋๋’ ์ vector ⇒ [1,2,9]
- score ⇒ 0.2
- value = [0.2,0.4, 1.8]
- ๋ง์ฝ score๊ฐ 0์ด๋ผ๋ฉด value vector๋ 0์ด ๋ ๊ฒ
5) value๋ค์ ๋ชจ๋ ๋ํด์ context vector๋ฅผ ๋ง๋ ๋ค.
- context vector
- Value๊ฐ๋ค์ ๋ชจ๋ ๋ํ๊ธฐ
- ‘๋๋’ ⇒ [1,2,9] x 0.2 = [0.2,0.4, 0.9]
- ‘์ค๋’ ⇒ [9,1,1] x 0.8 = [7.2, 0.8, 0.8]
- ๋๋จธ์ง ํ ํฐ๋ค์ score๊ฐ 0์ด๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด ๋๋จธ์ง๋ [0,0,0]
- context vector = [7.4,1.2,1.7]
- context vector์๋ score๊ฐ์ด ๊ฐ์ฅ ์ปท๋ ‘์ค๋’ ํ ํฐ์ value๊ฐ์ ์ํฅ์ ๋ฐ์, ์ฒซ๋ฒ์งธ์์๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง๊ฒ ๋จ
6) Value vector๋ฅผ ๋์ฝ๋์ ์ ๋ ฅํ๋ค.
๋์ฝ๋๊ฐ ์ด์ ์คํ ๊น์ง ์ ๋ฆฌํ ๋ฒกํฐ๋ค๊ณผ concatํ๋ค.
- ์ดํ ์ ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ง์
- ์ฌ๊ธฐ์๋ concat์ผ๋ก ์ค๋ช
๊ฒฐ๋ก : ์ดํ ์ ๋ฉ์ปค๋์ฆ์ ์ธ์ฝ๋๊ฐ ๋จ์ด(ํ ํฐ) ๋จ์๋ก ์ ๋ฆฌํ ๋ฒกํฐ ์ค์์ ๋์ฝ๋๊ฐ ์ค์ํ ๋ฒกํฐ๋ฅผ ๊ณจ๋ผ์ ์ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
3. References
'ML > NLP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋์คํฌ๋จธ (Attention is all you need) (3) | 2022.01.19 |
---|---|
์ํ์ค ํฌ ์ํ์ค + ์ดํ ์ ๋ชจ๋ธ (0) | 2022.01.06 |