Archive

[λ²ˆμ—­] Foundations of NLP Explained Visually: Beam Search, How It Works

geum 2022. 8. 1. 14:46

πŸ’¬ μ΅œλŒ€ν•œ λ§€λ„λŸ½κ²Œ ν•΄μ„ν•˜κ³ μž λ…Έλ ₯ν–ˆμ§€λ§Œ μ–΄μƒ‰ν•œ λ¬Έμž₯이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ν”Όλ“œλ°±μ€ μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ πŸ™‚


원본 κΈ€ μ£Όμ†Œ : https://towardsdatascience.com/foundations-of-nlp-explained-visually-beam-search-how-it-works-1586b9849a24

 

Foundations of NLP Explained Visually: Beam Search, How it Works

A Gentle Guide to how Beam Search enhances predictions, in Plain English

towardsdatascience.com

 

NLP λͺ¨λΈμ˜ Output 생성 방법

 

기계 λ²ˆμ—­ μž‘μ—…μ— 자주 μ‚¬μš©λ˜λŠ” sequence-to-sequence λͺ¨λΈμ„ 예둜 λ“€μ–΄λ³΄μž.

예λ₯Ό λ“€μ–΄, μ˜μ–΄λ₯Ό μŠ€νŽ˜μΈμ–΄λ‘œ λ²ˆμ—­ν•˜λŠ” 데 이 λͺ¨λΈμ΄ μ‚¬μš©λœλ‹€λ©΄ λͺ¨λΈμ€ μ†ŒμŠ€ μ–Έμ–΄(μ˜μ–΄)λ₯Ό μž…λ ₯으둜 λ°›μ•„ νƒ€κ²Ÿ μ–Έμ–΄μ—μ„œ μ†ŒμŠ€ 언어와 μ˜λ―Έκ°€ 같은 λ¬Έμž₯을 좜λ ₯ν•  것이닀.

 

ν…μŠ€νŠΈλŠ” 단어(λ˜λŠ” κΈ€μž)의 μ‹œν€€μŠ€μ΄κ³ , NLP λͺ¨λΈμ€ μ†ŒμŠ€ 언어와 νƒ€κ²Ÿ 언어에 λ‚˜νƒ€λ‚œ λͺ¨λ“  λ‹¨μ–΄λ‘œ 이루어진 vocabularyλ₯Ό μƒμ„±ν•œλ‹€.

 

λͺ¨λΈμ€ μ†ŒμŠ€ λ¬Έμž₯을 μž…λ ₯으둜 λ°›μ•„ κ·Έ λ¬Έμž₯을 인코더 λ‹€μŒμ˜ μž„λ² λ”© λ ˆμ΄μ–΄λ‘œ μ „λ‹¬ν•œλ‹€. μΈμ½”λ”λŠ” μž…λ ₯ λ¬Έμž₯μ—μ„œ 핡심적인 νŠΉμ§•λ§Œμ„ νŒŒμ•…ν•˜λŠ” μ••μΆ•λœ ν‘œν˜„μ„ 좜λ ₯ν•œλ‹€.

 

인코더가 좜λ ₯ν•œ ν‘œν˜„μ€ "<START>" 토큰과 ν•¨κ»˜ λ””μ½”λ”λ‘œ λ„˜μ–΄κ°€κ³  λ””μ½”λ”λŠ” 이λ₯Ό μ‚¬μš©ν•˜μ—¬ νƒ€κ²Ÿ μ–Έμ–΄ λ¬Έμž₯의 μ••μΆ•λœ ν‘œν˜„μ„ 자체 μƒμ„±ν•œλ‹€.

 

λ””μ½”λ”μ—μ„œ μƒμ„±ν•œ κ²°κ³ΌλŠ” softmax와 μ΄μ–΄μ§€λŠ” λͺ‡ 개의 μ„ ν˜• λ ˆμ΄μ–΄λ‘œ κ΅¬μ„±λœ 좜λ ₯ λ ˆμ΄μ–΄λ‘œ λ„˜μ–΄κ°„λ‹€. μ„ ν˜• λ ˆμ΄μ–΄λŠ” 좜λ ₯ μ‹œν€€μŠ€μ˜ 각 μœ„μΉ˜μ—μ„œ vocabulary에 μžˆλŠ” 각 λ‹¨μ–΄μ˜ λ°œμƒ κ°€λŠ₯성에 λŒ€ν•œ 점수λ₯Ό 좜λ ₯ν•œλ‹€. SoftmaxλŠ” 이 μ μˆ˜λ“€μ„ ν™•λ₯ λ‘œ λ³€ν™˜ν•œλ‹€.

 

λ¬Όλ‘  우리의 ꢁ극적인 λͺ©ν‘œλŠ” ν™•λ₯  좜λ ₯이 μ•„λ‹ˆλΌ νƒ€κ²Ÿ μ–Έμ–΄λ‘œ 된 λ¬Έμž₯을 λ§Œλ“œλŠ” 것이닀. 이 κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄ λͺ¨λΈμ€ νƒ€κ²Ÿ λ¬Έμž₯의 각 μœ„μΉ˜μ—μ„œ μ–΄λ–€ 단어λ₯Ό μ˜ˆμΈ‘ν•΄μ•Όν• μ§€ κ²°μ •ν•΄μ•Ό ν•œλ‹€.

 

μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒ?

 

 

Greedy Search

 

ν™•μ‹€ν•œ 방법은 각 μœ„μΉ˜μ—μ„œ κ°€μž₯ 높은 ν™•λ₯ μ„ κ°–λŠ” 단어λ₯Ό μ„ νƒν•΄μ„œ κ·Έ λ‹¨μ–΄λ‘œ μ˜ˆμΈ‘ν•˜λŠ” 것이닀. 이 방식은 λΉ λ₯΄κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš°λ©° μ’…μ’… 정닡을 좜λ ₯ν•˜κΈ°λ„ ν•œλ‹€.

 

사싀 Greedy SearchλŠ” μ΄ν•΄ν•˜κΈ° μ‰¬μ›Œμ„œ 더 이상 μ„€λͺ…ν•  것이 μ—†λ‹€. ν•˜μ§€λ§Œ ν•œ 걸음 더 λ‚˜μ•„κ°ˆ 수 μžˆμ„κΉŒ?

 

 

Beam Search

 

Beam SearchλŠ” Greedy Search보닀 두 가지 ν–₯μƒλœ 점이 μžˆλ‹€.

 

β—Ύ Greedy SearchλŠ” 각 μœ„μΉ˜μ— κ°€μž₯ μ ν•©ν•œ 단어λ₯Ό 단 ν•˜λ‚˜λ§Œ μ„ νƒν•œλ‹€. λ°˜λŒ€λ‘œ Beam SearchλŠ” N개의 단어λ₯Ό μ„ νƒν•˜λŠ” κ²ƒμœΌλ‘œ ν™•μž₯ν•œλ‹€.

β—Ύ Greedy SearchλŠ” 각 μœ„μΉ˜λ“€μ„ 독립적인 κ²ƒμœΌλ‘œ λ³Έλ‹€. μ–΄λ–€ μœ„μΉ˜μ—μ„œ 졜적의 단어λ₯Ό ν™•μΈν–ˆμ„ λ•Œ, κ·Έ λ‹¨μ–΄μ˜ μ΄μ „μ΄λ‚˜ 이후에 μ–΄λ–€ 단어가 μ™”λŠ”μ§€ ν™•μΈν•˜μ§€ μ•ŠλŠ”λ‹€. Beam SearchλŠ” μƒμœ„ N개의 단어λ₯Ό κ³ λ₯΄κ³  ν˜„μž¬ μœ„μΉ˜μ˜ 단어와 이전 μœ„μΉ˜μ˜ λ‹¨μ–΄λ“€μ˜ κ²°ν•© ν™•λ₯ μ„ κ³ λ €ν•œλ‹€.

 

ν•˜μ΄νΌνŒŒλΌλ―Έν„° 'N'은 Beam width라고 ν•œλ‹€.

 

이 방식이 Greedy Search보닀 더 λ‚˜μ€ κ²°κ³Όλ₯Ό μ œκ³΅ν•œλ‹€λŠ” 것은 μ§κ΄€μ μœΌλ‘œ 이해 κ°€λŠ₯ν•˜λ‹€. μ™œλƒν•˜λ©΄ μš°λ¦¬κ°€ 관심을 κ°–λŠ” 것은 졜고의 μ™„μ „ν•œ λ¬Έμž₯인데 각각의 μœ„μΉ˜μ—μ„œ κ°€μž₯ 쒋은 κ°œλ³„μ μΈ λ‹¨μ–΄λ§Œ κ³ λ₯Έλ‹€λ©΄ μ™„μ „ν•œ λ¬Έμž₯을 놓칠 수 있기 λ•Œλ¬Έμ΄λ‹€.

 

 

Beam Search μ—­ν• 

 

Beam widthλŠ” 2, 문자λ₯Ό μ‚¬μš©ν•œ κ°„λ‹¨ν•œ μ˜ˆμ‹œλ₯Ό λ³Έλ‹€.

 

https://towardsdatascience.com/foundations-of-nlp-explained-visually-beam-search-how-it-works-1586b9849a24

 

 

첫 번째 μœ„μΉ˜

β—Ύ 첫 번째 μœ„μΉ˜μ—μ„œ λͺ¨λΈμ˜ 좜λ ₯ κ²°κ³Όλ₯Ό μƒκ°ν•΄λ³΄μž. <START> ν† ν°μœΌλ‘œ μ‹œμž‘ν•΄μ„œ 각 단어에 λŒ€ν•œ ν™•λ₯ μ„ μ–»λŠ”λ‹€. ν™•λ₯ μ΄ 높은 두 개의 문자(Beam widthκ°€ 2이기 λ•Œλ¬Έ)λ₯Ό μ„ νƒν•œλ‹€.

 

두 번째 μœ„μΉ˜

β—Ύ 두 번째 μœ„μΉ˜μ—μ„œλŠ” 첫번째 μœ„μΉ˜μ— λ‚˜μ˜¬ 수 μžˆλŠ” 문자(ν™•λ₯ μ΄ 높은 두 개의 문자)λ₯Ό 고정해두고 λͺ¨λΈμ„ 두 번 λ°˜λ³΅ν•œλ‹€. 즉 첫 번째 μœ„μΉ˜μ— 올 수 μžˆλŠ” 문자λ₯Ό μ œν•œν•˜κ³  κ°€λŠ₯ν•œ 첫 κΈ€μžμ— λŒ€ν•΄μ„œλ§Œ 브랜치λ₯Ό λ§Œλ“ λ‹€. 

β—Ύ  μ²« 번째 μœ„μΉ˜μ˜ 단어와 두 번째 μœ„μΉ˜μ˜ 단어λ₯Ό κ²°ν•©ν–ˆμ„ λ•Œμ˜ ν™•λ₯ μ— κΈ°λ°˜ν•˜μ—¬ 전체 μ€‘μ—μ„œ κ°€μž₯ 쒋은 μŒμ„ μ„ νƒν•œλ‹€. 첫 번째 μ§‘ν•©μ—μ„œ ν•˜λ‚˜λ₯Ό κ³ λ₯΄κ³  두 번째 μ§‘ν•©μ—μ„œ ν•˜λ‚˜λ₯Ό κ³ λ₯΄λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.

 

μ„Έλ²ˆμ§Έ μœ„μΉ˜

β—Ύ μ„Έλ²ˆμ§Έ μœ„μΉ˜μ—μ„œλŠ” μœ„μ˜ 과정을 λ°˜λ³΅ν•œλ‹€. 첫번째 μœ„μΉ˜, λ‘λ²ˆμ§Έ μœ„μΉ˜λ₯Ό 거쳐 κ³ μ •λœ 두 κΈ€μžμ™€ μ„Έλ²ˆμ§Έ μœ„μΉ˜ κΈ€μžμ˜ κ²°ν•© ν™•λ₯ μ„ 보고 λͺ¨λΈμ„ 두 번 λ°˜λ³΅ν•œλ‹€. 

β—Ύ ν•œ 번 더 전체 쌍 μ€‘μ—μ„œ κ°€μž₯ ν™•λ₯ μ΄ 높은 두 μŒμ„ κ³ λ₯Έλ‹€.

 

<END> 토큰을 λ§Œλ‚  λ•ŒκΉŒμ§€ 반볡

β—Ύ 이 과정은 νŠΉμ • μœ„μΉ˜μ—μ„œ <END> ν† ν°μ˜ μΆœν˜„ ν™•λ₯ μ΄ κ°€μž₯ 높을 λ•ŒκΉŒμ§€ λ°˜λ³΅λœλ‹€.

 

μ΅œμ’…μ μœΌλ‘œ λ§Œλ“€μ–΄μ§„ 두 개의 μ‹œν€€μŠ€ 쀑 ν™•λ₯ μ΄ 더 높은 μ‹œν€€μŠ€λ‘œ κ²°κ³Όλ₯Ό μ˜ˆμΈ‘ν•œλ‹€.

 

 

Beam Search μž‘λ™ 방식

 

μš°λ¦¬λŠ” 이제 κ°œλ…μ μΈ μˆ˜μ€€μ—μ„œ Beam Searchλ₯Ό μ΄ν•΄ν–ˆλ‹€. ν•œ 단계 더 λ“€μ–΄κ°€ Beam Searchκ°€ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ μ•Œμ•„λ³Έλ‹€. κ³„μ†ν•΄μ„œ 같은 예제λ₯Ό μ‚¬μš©ν•  것이고 Beam widthλŠ” 2이닀.

 

Sequence-to-sequence λͺ¨λΈμ„ κ³„μ†ν•΄μ„œ 보면, 인코더와 λ””μ½”λ”λŠ” λͺ‡ 개의 LSTM λ ˆμ΄μ–΄λ‘œ κ΅¬μ„±λœ μˆœν™˜ λ„€νŠΈμ›Œν¬μΌ κ°€λŠ₯성이 λ†’λ‹€. μˆœν™˜ λ„€νŠΈμ›Œν¬ λŒ€μ‹  트랜슀포머둜 κ΅¬ν˜„λ˜μ—ˆμ„ μˆ˜λ„ μžˆλ‹€.

https://towardsdatascience.com/foundations-of-nlp-explained-visually-beam-search-how-it-works-1586b9849a24

 

λ””μ½”λ”μ˜ ꡬ성 μš”μ†Œμ™€ 좜λ ₯측에 μ§‘μ€‘ν•˜κΈ°λ‘œ ν•œλ‹€.

 

첫 번째 μœ„μΉ˜

첫 번째 λ‹¨κ³„μ—μ„œ λ””μ½”λ”λŠ” 첫 번째 μœ„μΉ˜μ˜ λ¬Έμžλ³„ ν™•λ₯ μ„ κ΅¬ν•˜κΈ° μœ„ν•΄ μΈμ½”λ”μ˜ 좜λ ₯κ³Ό <START> 토큰을 μ‚¬μš©ν•œλ‹€.

 

https://towardsdatascience.com/foundations-of-nlp-explained-visually-beam-search-how-it-works-1586b9849a24

 

ν™•λ₯ μ΄ 높은 A와 Cκ°€ μ„ νƒλœλ‹€.

 

두 번째 μœ„μΉ˜

이전과 같이 μΈμ½”λ”μ˜ 좜λ ₯을 μ΄μš©ν•΄ 디코더λ₯Ό 두 번 μ‹€ν–‰ν•œλ‹€. 첫 번째 μœ„μΉ˜μ˜ "<START>" 토큰과 ν•¨κ»˜ 첫 번째 디코더 μ‹€ν–‰ μ‹œ 두 번째 μœ„μΉ˜μ˜ μž…λ ₯을 "A"둜 미리 μ„€μ •ν•œλ‹€. 두 번째 디코더 μ‹€ν–‰μ—μ„œλŠ” 두 번째 μœ„μΉ˜μ˜ μž…λ ₯을 "C"둜 μ„€μ •ν•œλ‹€.

 

https://towardsdatascience.com/foundations-of-nlp-explained-visually-beam-search-how-it-works-1586b9849a24

 

λ¬Έμžκ°€ 두 번째 μœ„μΉ˜μ— 올 ν™•λ₯ μ„ κ΅¬ν•œλ‹€. ν•˜μ§€λ§Œ 이 ν™•λ₯ κ°’은 독립적인 ν™•λ₯ κ°’이닀. 처음 두 μœ„μΉ˜μ—μ„œ κ²°ν•©λœ 문자 μŒμ— λŒ€ν•œ ν™•λ₯ μ„ 계산해야 ν•œλ‹€. 'AB'의 ν™•λ₯ μ€ 첫 번째 μœ„μΉ˜μ— 'A'κ°€ κ³ μ •λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 첫 번째 μœ„μΉ˜μ—μ„œ 'A'κ°€ λ‚˜νƒ€λ‚  ν™•λ₯ κ³Ό 두 번째 μœ„μΉ˜μ—μ„œ 'B'κ°€ λ‚˜νƒ€λ‚  ν™•λ₯ μ„ κ³±ν•œ 것이닀.

 

두 개의 디코더 λͺ¨λ‘ 이 과정을 μˆ˜ν–‰ν•œλ‹€.

 

μ„Έ 번째 μœ„μΉ˜

https://towardsdatascience.com/foundations-of-nlp-explained-visually-beam-search-how-it-works-1586b9849a24

 

μ²˜μŒλΆ€ν„° μ„Έ 번째 μœ„μΉ˜κΉŒμ§€ 문자 μ„Έ 개의 κ²°ν•© ν™•λ₯ μ„ κ³„μ‚°ν•œλ‹€. 

 

<END> 토큰을 λ§Œλ‚  λ•ŒκΉŒμ§€ 반볡

"<END>" ν† ν°μœΌλ‘œ λλ‚˜λŠ” 두 개의 μ΅œμƒμ˜ μ‹œν€€μŠ€λ₯Ό 생성할 λ•ŒκΉŒμ§€ 이 과정을 λ°˜λ³΅ν•œλ‹€.