4 1 Introduction to N grams
https://youtu.be/Saq1QagC8KY

image

각 단어들의 순차적인 결합중에 확률이 높은 것을 찾아낸다.

image

w1 부터 wn까지 순차적 결합이 나올 확률

w1 부터 w4까지 주어진 경우 w5가 나올 확률

image

한단어가 나올 확률은 바로앞 단어까지 주어진 상태에서 단어가 나올 확률에 앞단어들이 나올 확률들의 곱으로 나타낼수 있다.

image
image

위위 그림처럼 앞에까지 나온 모든 단어들이 주어진 상태에서 확률을 구하는 것은 번거롭기 때문에 markov는 바로 앞이나 바로 앞의 몇 단어만이 주어진 상태를 가정해서 확률을 구했다.

image

chain rule을 markov 방법에 맞게 수정한 알고리즘을 보여주고 있다.

image

언어의경우 처음 나온 단어가 맨 뒤의 단어와 밀접하게 연결되는 경우도 있기 때문에 단순히 앞의 몇단어를 가지고 다음에 올 단어를 유추하는 것은 어려울때도 있다.

4 2 Estimating N gram Probabilities
https://youtu.be/paCMAZ-lKq8

image
image
image
image

위 그림은 각 단어별로 나란히 나오는 경우의 확률를 보여준다. 예를 들어 want to 이렇게 연결될 확률은 0.66

image
image

각 확률의 이유를 생각해 본것이다. 예를들어 want chinese가 want english보다 확률이 높은 이유는 chinese음식이 english 음식보다 사람들이 관심을 많이 가지기 때문이다.

image

단어가 여러개인 문장의 경우 확률을 계속 곱하다보면 너무 작은 숫자가 나오는 문제가 발생한다. 여러 번의 곱셈은 많은 자원을 요구하기도 한다.

image
image
image

4 3 Evaluation and Perplexity
https://youtu.be/b6nwdc_fGfA

image
image
image
image
image
image
image
image

4 4 Generalization and Zeros
https://youtu.be/6NeUDr7YDiw

image

<s>가 주어졌을때 가장 확률이 높은 다음 단어로 I 가 넣어지고 I가 주어졌을때 가장 확률이 높은 다음 단어는 want 가 된다. want 다음 확률높은 단어는 to이다. 이런 과정을 통해 문장 전체를 만드는 과정을 보여주고 있다. 위에서는 바로 앞 한 단어만을 고려대상으로 삼지만 2개, 3개, 4개를 고려할수도 있다. 

image
image

세익스피어의 작품안에는 총 300,000 bigram이 있고 세익스피어에는 V개의 단어가 있다.

V개의 단어로 조합가능한 bigram의 총수는 844000000 개이다. 즉 대부분의 bigram은 실제 세익스피어 작품에는 존재하지 않고 이론상으로만 존재한다. ( zero entries )

quadrigrams과 같이 높은 수의 n-grams의 경우는 너무 overfitting되는 경우를 보여준다.

image
image

실제로 존재하지 않는 entries들의 확률을 0으로 본다. (추측컨대 이런 방법을 zeros라고 하는 것 같다.) 이 방법보다 조금 발전된 방법으로 add one smoothing이 있다.

4 5 Smoothing Add One
https://youtu.be/ZbHFLgBWgdQ

image
image

모든 항목 (빈칸포함)에 1을 다 더해준다. (정확한 계산 방법 https://youtu.be/gCI-ZC7irbY 2분 확인)

image

위 400/1000,000 = 0.00004이다. 오타

image

실제로 https://youtu.be/paCMAZ-lKq8 3:16 와 비교해 보면 모든 단어 출현횟수에 1이 더해졌다. 

image

각 행 총 값들의  합은 1이 된다. 예를 들어 i 가 주어진 상태에서 나올 다음 단어의 모든 확률이 합은(첫번째 행 확률값의 총합) 1이다.  

image
image
image

4 6 Interpolation
https://youtu.be/naNezonMA7k

image

n-gram model에서 높은 수의 n 은 보다 넓은 범위의 context를 적용한다 것으로 이해 할수 있다. 때로는 높은 수의 n-gram의 data 출현횟수가 너무 적어서 이를 일반적으로 사용하는데 무리가 있을수 있다. 이런 경우 back-off, interpolation 기술을 이용 보완한다. 

back-off : 예를 들어 어떤 trigram의 출현횟수가 적은 경우 한단계 낮춘 bigram을 이용한다. 또 그래도 부족한 경우 unigram을 이용한다.

interpolation : trigram의 출현횟수가 적은경우 bigram과 unitgram을 혼합사용해서 보완한다. 

interpolation이 좀던 좋은 성과를 보여주는 경향이 있다.

image

위그림에서 lambda는 weights 이된다. lambdas conditionla on context에서는 마지막 2번째 단어 (w n-2) 와 1번째 단어 (w n-1)를 고려한 lambda를 이용한다. (좀더 섬세한 접근 방법이다.)

image

training data를 이용해 만들어진 model을 가지고 held-out data의 예상값이 최적이 되게하는 lambdas값을 얻어 이용한다. (여기서 log는 확률의 곱으로 발생하는 계산상의 번거로움을 줄이고자 사용된것으로 추측한다.)

image
image

대용량의 데이터를 이용해서 model을 만드는 경우에 대한 설명이다. 

image

대용량의 데이터를 이용해서 model을 만드는 경우 stupid backoff를 이용 좀더 효율적으로 작업할수 있다. trigram이 있는 경우는 대괄호의 상단 공식 사용, trigram이 없고 bigram이 있는 경우 대괄호안의 하단 공식사용, 맨 하단의 공식은 unigram만 있는 경우 사용된다. 

참고 자료) https://rpubs.com/pferriere/dscapreport

https://www.aclweb.org/anthology/D07-1090

image

크네이서 나이 가장 많이 사용되는 방법이다. 

image

4 7 Good Turing Smoothing
https://youtu.be/fhvDgKBZa1U

참고 자료 ) 알고리즘이 실제 어떻게 움직이는지 쉽게 설명한 동영상

Good Turing Algorithm Part 1 by online courses

https://youtu.be/9ybvyShnDbk


Good Turing Algorithm Part 2

https://youtu.be/_tJleRiF-DM

image

add one smoothing에서 변형된 add k smoothing과 변형된 모습들이다.

image

add one smoothing에서 변형된 add k smoothing과 변형된 모습들이다.

image

add one smoothing에서 좀더 진보된 형태로 good turing, kneser ney, witten bell smoothing 방법들이 있다. 이들은 보통 이미 출현한 data를 기반으로 나타나지 않는 data를 추측하는 방법이라고 할수 있다. 

image
image
image

trout의 경우 한번만 출현 했다. 그러므로 c 값은 1이다. 실제 출현 확률은 1/18이다. 

두번 출현한 물고기는 whitefish 한가지 이므로 N2는 1이 된다. 한번 출현한 물고기는 trout, salmon, eel 3가지 이므로 N1은 3이 된다. c*은 discounted 된 값이다. 

image
image
image

tensorflow 공부 materials

The links from the video are:-

If this has been useful, then consider giving your support by buying me a coffee https://ko-fi.com/pythonprogrammer

https://www.tensorflow.org/

https://developers.google.com/machine…

https://github.com/jtoy/awesome-tenso…

https://medium.mybridge.co/30-amazing…

Book (affiliate link)

Hands-On Machine Learning with Scikit-Learn and TensorFlow – https://amzn.to/2HsG3f0

Other Python Learning Resources

### Online Courses

Learn Python – https://www.learnpython.org/

Google’s Python Class – https://developers.google.com/edu/pyt…

My Python Course – https://www.youtube.com/watch?v=Aah3T…

### Books (affiliate links)

1. Automate the Boring Stuff With Python – http://amzn.to/2kSPOtA

(or for free here https://automatetheboringstuff.com/ )

2. Python Crash Course –http://amzn.to/2BsorSq

3. Effective Computation in Physics – http://amzn.to/2BJxVFC

4. Learn Python the Hard Way – http://amzn.to/2p4TQVd

tensorflow 공부 materials

The links from the video are:-

If this has been useful, then consider giving your support by buying me a coffee https://ko-fi.com/pythonprogrammer

https://www.tensorflow.org/

https://developers.google.com/machine…

https://github.com/jtoy/awesome-tenso…

https://medium.mybridge.co/30-amazing…

Book (affiliate link)

Hands-On Machine Learning with Scikit-Learn and TensorFlow – https://amzn.to/2HsG3f0

Other Python Learning Resources

### Online Courses

Learn Python – https://www.learnpython.org/

Google’s Python Class – https://developers.google.com/edu/pyt…

My Python Course – https://www.youtube.com/watch?v=Aah3T…

### Books (affiliate links)

1. Automate the Boring Stuff With Python – http://amzn.to/2kSPOtA

(or for free here https://automatetheboringstuff.com/ )

2. Python Crash Course –http://amzn.to/2BsorSq

3. Effective Computation in Physics – http://amzn.to/2BJxVFC

4. Learn Python the Hard Way – http://amzn.to/2p4TQVd