> For the complete documentation index, see [llms.txt](https://lswkim322.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lswkim322.gitbook.io/til/til-ml/boostcamp/p-stage-klue/1.md).

# (1강) 인공지능과 자연어 처리

> 인공지능의 발전이 어떻게 자연어 처리 분야에 영향을 주고 발전하게 되었는지\
> 자연어처리의 기초\
> '언어모델'의 개념 탄생
>
> 참고 링크
>
> * [자연어처리](https://www.youtube.com/watch?v=jlCerj5eI4c)
> * [FastText](https://www.youtube.com/watch?v=7UA21vg4kKE)
> * [Seq2Seq](https://www.youtube.com/watch?v=4DzKM0vgG1Y)
> * [Seq2Seq + attention](https://www.youtube.com/watch?v=WsQLdu2JMgI)

## 1. 인공지능의 탄생과 자연어처리

### 1.1. 자연어처리 소개

**인공지능(AI)이란?**\
인간이 지능을 가지는 학습, 추리, 적응, 논증 다위의 기능을 갖춘 컴퓨터 시스템

### 1.2. 자연어처리의 응용분야

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZrj56iQFjloLIKsAo%2Fimage.png?alt=media\&token=52e4e167-e567-485b-b087-069f95d0cbb2)

#### 인간과 컴퓨터의 자연어 이해과

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZsweyIu_pIudE66Dy%2Fimage.png?alt=media\&token=74dbaf95-e08a-4242-bd80-d788b7f70f7c)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZt54s4QUBdAor7_XR%2Fimage.png?alt=media\&token=915092b6-8163-424b-bc5c-56e0a586d27a)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZtVlJjA2lBykux4h0%2Fimage.png?alt=media\&token=04e34d99-e4ff-4683-9486-7fde3ad891a3)

* 대부분의 Task는 분류문제로 볼 수 있다.
* 분류를 위해서는 데이터를 수학적으로 표현해야한다.

### 1.3. 자연어 단어 임베딩

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZvAfEx1ZS84vxQo3f%2Fimage.png?alt=media\&token=2626312e-5155-4dc2-8ead-e70f7125c11a)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZwGidlOVX9XBPuN2G%2Fimage.png?alt=media\&token=0546ae37-699b-4e0d-8840-f05520e74bc6)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZvclBinia8ojs1Ii-%2Fimage.png?alt=media\&token=7878480f-570e-4461-ae1c-eba5457973b7)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZw9c2yL45M5BA1Pp4%2Fimage.png?alt=media\&token=53536b5f-914e-4a12-bd92-53ee699380de)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZwVxMej5Zgqav7NzC%2Fimage.png?alt=media\&token=556748fb-164c-48b8-bbb5-5000566743da)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZmFvBq4FVdAxKSZJf%2F-MkZwrW4PW031FISnw-Y%2Fimage.png?alt=media\&token=5d053e6b-bf7b-4400-86a0-b98a0d1a99f8)

* Vector로 표현된 단어는 연산이 가능하다.
* 위의 예시를 보면 할아버지 - 할머니 를 통해 남자, 여자 로 나눌 수 있을 것이고 여기에 농구를 더함으로써 배구를 추출하는 것을 확인할 수 있다. 예시가 조금 맞지 않다고 생각이 되면 한국 - 서울을 하게 되면 나라와 수도의 관계를 얻을 수 있고, 여기에 도쿄를 더하면 일본을 얻을 수 있다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-MkZxuC2vLQAsdl58FD3%2Fimage.png?alt=media\&token=94a8009d-9d8f-4f46-b87b-84faf85bc448)

* 실생활에서는 신조어나 오탈자 등 OOV 단어가 많이 나올 수 있고, Word2Vec은 OOV 단어들을 전혀 인식할 수 없게 되는 문제가 있다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-MkZyTb2QPzsAFVdkVLw%2Fimage.png?alt=media\&token=3caf2d18-c384-4e6a-9753-0b00d65557b6)

Word2vec과 유사하지만 FastText는 n-gram으로 나누어서 학습하여 OOV문제를 해소할 수 있다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_62iel_gGp5Ni3Dav%2Fimage.png?alt=media\&token=62bd2e22-16d3-4aa0-a2b1-ed7f5d00650f)

&#x20;

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_Ksqqa4yxvOTwzDad%2Fimage.png?alt=media\&token=4578afbf-e9e0-4a17-b5af-4c34e644d1ef)

* 빈도 수가 적은 단어에 대해 유사단어를 잘 추출하는 것을 확인할 수 있다.&#x20;
* 하지만 word2Vec이나 Fasttext의 경우 주변단어를 가지고 예측하기 때문에 문맥을 고려할 수 없다는 단점이있다. 즉, 동음이이의어 등의 단어에 대해 예측이 잘 되지 않는다는 한계가 있다.

## 2. 딥러닝 기반의 자연어처리와 언어모델

### 2.1. 언어모델

* 주어진 단어들로부터 그 다음에 등장한 단어의 확률을 예측하는 방식으로 학습

#### Markov 기반의 언어모델

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_M7g5haLqiMEiWF2a%2Fimage.png?alt=media\&token=bc52bb14-74f0-4967-90a5-9456c6cdc1af)

#### RNN 기반의 언어모델

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_MMR7AJzMG1vBvtGo%2Fimage.png?alt=media\&token=eee16ad7-df9f-4770-9592-ddb5348d2827)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_MVEYdDu5w16Dyiac%2Fimage.png?alt=media\&token=87898581-2f33-49f6-9b5f-191d9068d946)

### 2.2. Sequence to Sequence (Seq2Seq)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_NUXsM91Y-uK9zNdX%2Fimage.png?alt=media\&token=c9bdc996-fccb-4979-ad3c-02073f3a97fd)

Seq2Seq 구조가 가지고 있는 문제점은 1) 입력 seq의 길이가 긴경우 처음 token에 대한 정보가 희석된다. 2) context vector 가 고정된 크기를 가지고 있어 긴 seq에 대한 정보를 함축해서 가지고 있을 수 가 없다. 3) 모든 token이 영향을 미치게 되어 중요하지 않은 token도 영향을 주게 된다.

### 2.3. Attention

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_Oe5n6WjMSCS98JXg%2Fimage.png?alt=media\&token=65241cc2-3264-4219-ba2d-e8982131b9e9)

순차적으로 연산이 이루어지다보니 연산 속도가 느리다.

### Self-Attention

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkZxmW_gKdc_MYyrAS9%2F-Mk_P7qmLZ95KAonYYEY%2Fimage.png?alt=media\&token=199d6fc8-2a4b-44b3-9479-1f38bca448b9)

* 모든 Token들을 연결하게 되어 순서를 없게 되었다.

## Futher Question

* Embedding이 잘 되었는지, 안되었는지를 평가할 수 있는 방법은 무엇이 있을까요?
  * WordSim353
  * Spearman's correlation
  * Analogy test
* &#x20;Vanilar Transformer는 어떤 문제가 있고, 이걸 어떻게 극복할 수 있을까요?
  * Longformer
  * Linformer
  * Reformer
