AI, Deep Learning Basics/NLP

[NLP] 1. Introduction of NLP, Word2vec

πŸ“ NLP: Natural Language Processing

μžμ—°μ–΄λ₯Ό μ²˜λ¦¬ν•˜λŠ” λΆ„μ•Ό, 우리의 말을 μ»΄ν“¨ν„°μ—κ²Œ μ΄ν•΄μ‹œν‚€κΈ° μœ„ν•œ λΆ„μ•Όλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μžμ—°μ–΄λŠ” μ‚΄μ•„μžˆλŠ” 언어이며 κ·Έ μ•ˆμ—λŠ” 'λΆ€λ“œλŸ¬μ›€'이 μžˆμŠ΅λ‹ˆλ‹€.

 

πŸ“ 'λ‹¨μ–΄μ˜ 의미'λ₯Ό 잘 νŒŒμ•…ν•˜λŠ” ν‘œν˜„λ°©λ²•

  1. μ‹œμ†ŒλŸ¬μŠ€(Thesaurus, μœ μ˜μ–΄ 사전) ν™œμš©
    • 단어 λ„€νŠΈμ›Œν¬(μ‚¬λžŒμ˜ μ†μœΌλ‘œ λ§Œλ“  μœ μ˜μ–΄ 사전)λ₯Ό μ΄μš©ν•˜λŠ” 방법이닀. 단어 μ‚¬μ΄μ˜ 'μƒμœ„μ™€ ν•˜μœ„' ν˜Ήμ€ '전체와 λΆ€λΆ„' λ“± 더 μ„Έμ„Έν•œ κ΄€κ³„κΉŒμ§€ μ •μ˜ν•΄λ‘”λ‹€. ex. Car = auto, automobile, machine, motorcar
    • λŒ€ν‘œμ μΈ μ‹œμ†ŒλŸ¬μŠ€λŠ” WordNet(NLTK λͺ¨λ“ˆ)이 μ‘΄μž¬ν•œλ‹€.
    • Cons: μ‚¬λžŒμ΄ μˆ˜μž‘μ—…μœΌλ‘œ λ ˆμ΄λΈ”λ§ν•˜λŠ” λ²ˆκ±°λ‘œμ›€/μ‹œλŒ€ 변화에 λŒ€μ‘ν•˜κΈ° μ–΄λ ΅λ‹€./λ‹¨μ–΄μ˜ λ―Έλ¬˜ν•œ 차이λ₯Ό ν‘œν˜„ν•  수 μ—†λ‹€.
  2. λ§λ­‰μΉ˜(Corpus) ν™œμš©ν•œ 톡계 기반 기법: λŒ€λŸ‰μ˜ ν…μŠ€νŠΈ 데이터λ₯Ό ν™œμš©ν•˜λŠ” 방법. 즉, λ¬Έμž₯λ“€μ—μ„œ μžλ™μœΌλ‘œ 효율적으둜 핡심을 μΆ”μΆœν•˜λŠ” 방식 
  3. μΆ”λ‘  기반 기법

이 μ€‘μ—μ„œ 톡계 기반 기법과 μΆ”λ‘  기반 기법이 성곡적인 κΈ°λ²•μž…λ‹ˆλ‹€. 이 λ‘˜μ€ λΆ„μ‚° 가섀을 λ°”νƒ•μœΌλ‘œ λΆ„μ‚° ν‘œν˜„μ„ ν•˜κ³ μž ν•©λ‹ˆλ‹€.

  • λΆ„μ‚° ν‘œν˜„(Distributional representation): λ‹¨μ–΄μ˜ 의미λ₯Ό μ •ν™•ν•˜κ²Œ νŒŒμ•…ν•  수 μžˆλŠ” 벑터 ν‘œν˜„
  • 뢄포 κ°€μ„€(Distributional hypothesis, λ‹¨μ–΄μ˜ μ˜λ―ΈλŠ” μ£Όλ³€ 단어에 μ˜ν•΄ ν˜•μ„±λœλ‹€λŠ” κ°€μ„€)

 

πŸ“ λ§λ­‰μΉ˜(Corpus) ν™œμš©ν•œ 톡계 기반 기법

λŒ€λŸ‰μ˜ ν…μŠ€νŠΈ 데이터λ₯Ό ν™œμš©ν•˜λŠ” 방법. 즉, λ¬Έμž₯λ“€μ—μ„œ μžλ™μœΌλ‘œ 효율적으둜 핡심을 μΆ”μΆœν•˜λŠ” 방식 (λŒ€ν‘œμ μΈ 데이터셋: Penn Tree Bank)

  1. 뢄포 가섀을 λ°”νƒ•μœΌλ‘œ λ™μ‹œλ°œμƒ ν–‰λ ¬(Co-occurance matrix, 단어에 λŒ€ν•΄ λ™μ‹œ λ°œμƒν•˜λŠ” 단어λ₯Ό ν–‰λ ¬λ‘œ 정리)을 κ΅¬μ„±ν•˜μ—¬ 단어λ₯Ό λ²‘ν„°λ‘œ ν‘œν˜„ν•œλ‹€.
  2. 벑터(단어) μ‚¬μ΄μ˜ μœ μ‚¬λ„(ex. 코사인 μœ μ‚¬λ„)λ₯Ό ꡬ해 행렬에 SVDλ₯Ό μ μš©ν•˜μ—¬ 밀집벑터(λ‹¨μ–΄μ˜ λΆ„μ‚° ν‘œν˜„)을 μ–»λŠ” 방법이 μ‘΄μž¬ν•œλ‹€.
  • μΆ”κ°€. 점별 μƒν˜Έμ •λ³΄λŸ‰(Pointwise Mutual Information, PMI), μ–‘μ˜ μƒν˜Έμ •λ³΄λŸ‰(Positive PMI, PPMI)
  • Cons: λŒ€κ·œλͺ¨ λ§λ­‰μΉ˜λ₯Ό λ‹€λ£° λ•Œ 행렬을 κ³„μ‚°ν•˜λŠ” λ°©μ‹μ—μ„œ Computation complexityκ°€ μ—„μ²­λ‚˜κ²Œ λ°œμƒν•œλ‹€.

 

πŸ“ λŒ€ν‘œμ μΈ μΆ”λ‘  기반 기법, Word2Vec

λ§₯락을 μž…λ ₯ν•˜λ©΄ λͺ¨λΈμ€ 각 λ‹¨μ–΄μ˜ μΆœν˜„ ν™•λ₯ μ„ 좜λ ₯ν•œλ‹€.

  1. 단어λ₯Ό κ³ μ • 길이의 λ²‘ν„°λ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄ 원핫 λ²‘ν„°λ‘œ λ³€ν™˜ν•œλ‹€.
  2. 신경망을 톡해 단어λ₯Ό μ²˜λ¦¬ν•œλ‹€.

πŸ“ Word2vecμ—μ„œ μ œμ•ˆν•˜λŠ” CBOW λͺ¨λΈ

λ§₯λ½μœΌλ‘œλΆ€ν„° 타깃을 μΆ”μΈ‘ν•˜λŠ” μš©λ„μ˜ 신경망

  • λ§₯락: μ£Όλ³€ 단어, 타깃: 쀑앙 단어 --> λ§₯락을 원핫 ν‘œν˜„μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ CBOW λͺ¨λΈμ΄ 단어λ₯Ό μΆ”λ‘ ν•œλ‹€.
  • Loss function(NLL) L=βˆ’1Tβˆ‘t=1TlogP(wt|wtβˆ’1,wt+1)

πŸ“ Word2vecμ—μ„œ μ œμ•ˆν•˜λŠ” skip-gram λͺ¨λΈ

CBOWμ—μ„œ λ‹€λ£¨λŠ” λ§₯락과 타깃을 μ—­μ „μ‹œν‚¨ λͺ¨λΈλ‘œ μ€‘μ•™μ˜ 단어(타깃)μœΌλ‘œλΆ€ν„° μ£Όλ³€μ˜ μ—¬λŸ¬ 단어(λ§₯락)을 μΆ”μΈ‘ν•œλ‹€.

  • λ§₯락: μ£Όλ³€ 단어, 타깃: 쀑앙 단어 --> λ§₯락을 원핫 ν‘œν˜„μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ CBOW λͺ¨λΈμ΄ 단어λ₯Ό μΆ”λ‘ ν•œλ‹€.
  • Loss function(NLL) L=βˆ’1Tβˆ‘t=1T(logP(wt|wtβˆ’1)+logP(wt|wt+1))

 

πŸ“ RNN Models

  • One-to-one
  • One-to-many
  • Many-to-one
  • Many-to-many