eubinecto / k4ji_ai

4명의 김씨, 한명의 진씨, 한명의 임씨가 모여서 인공지능을 공부하고 있습니다.
13 stars 0 forks source link

리딩: NLP in Action: chapt 7: Getting words in order with convolutional neural networks (CNNs) #14

Closed eubinecto closed 3 years ago

eubinecto commented 3 years ago

RNN의 문제점을 개선하기 위해서 고안한 것이 LSTM인데, RNN에 대한 기초적인 이해가 부족하니, LSTM에 대한 이해도 힘들다.

다시 RNN에 대해서 복습을 해보자.

하지만 교재의 설명은 아무리 읽어봐도 이해하기가 너무 힘들다. 설명이 좀 빈약한듯.

그렇다고 해서 인터넷 여기저기를 뒤적 거리는 방법은.. 빠른 문제 해결에는 직빵이지만 집중력을 가지고 진득하게 생각해보아야 하는 공부에는 별로 효과적이지 않음.

그냥 잘 쓰여진 책을 하나 집중력을 발휘해서 조지는(?)게 더 공부에 도움이 된다고 생각. 다른 더 좋은 자료 없나? 하면서 검색의 늪에 빠질 필요 없이, 그냥 앞에 놓인 글만 차분하게 읽어나가면 되기 때문.

그렇게 나름 자연어 처리 분야에 유명한 책으로 보이는 NLP in Action 이라는 책 부터 골라봄.

다 읽기에는 당연히 시간이 부족할 것 이므로, RNN에 대해서 자세하게 설명하는 챕터 8만 선택적으로 읽어보려고 함.

RNN을 공부하기 위해선 RNN이 등장하게된 배경도 알아야 하는데, 이에 대한 내용은 time series을 처리함에 있어 CNN을 사용하는 것대비 RNN을 사용하는 것이 어떤 이점이 있는지를 이해해야 할 것으로 보임.

그래서 CNN 공부 했던 것도 다시 복습할 겸, 챕터 8을 이해하기 위해 챕터 7부터 이해해보고자 함. (...)

시간은 좀 걸리겠지만 암튼 재밌으니 뭐 어때.

eubinecto commented 3 years ago

Learning meaning

언어는 단어의 조합이다. 여러 단어들의 조합이 문장의 의미를 결정한다.

그런 문장의 의미는, 최소한, 다음과 같은 단어 조합 패턴의 두가지 종류에 의해 결정된다.

  1. word order (단어가 놓여진 순서)
    • the dog chased the cat
    • the cat chased the dog

dog와 cat의 위치를 바꾸는 것만으로 문장의 의미가 변한다. 이러한 단어 조합 패턴은 공간 상에서의 패턴, spatial pattern으로 볼 수 있다. spatial pattern은 문장의 의미를 결정하는 여러 요소 중 하나다.

  1. word proximity (단어들 사이의 거리)
    • The ship's hull, despite years at sea, millions of tons of cargo, and two mid-sea collisions, shone like new.

동사 shone은 명사 hull과 멀리 떨어져 있지만, 여전히 hull을 가리키고 있는 단어다. 이러한 패턴은 시간 상에서의 패턴으로 볼 수 있다. temporal(relating to time) pattern. spatial pattern 과 함께, temporal pattern 도 문장의 의미를 결정하는 여러 요소 중 하나다.

그런데 이런 spatial & temporal pattern을 basic feedforward neural net이 학습을 할 수 있을까?

구조적으로는 적합하지 않다. inputs <-weights-> hidden unit 사이의 패턴은 중간에 weight를 변경하면서 학습할 수 있지만, input <-> input 사이의 패턴을 학습할 수 있는 weight는 존재하지 않기 때문.

때문에, modeling a sequence of vectors to capture spatial & temporal pattern을 위해서는

물론, basic feedforward neural net 이라고는 해도, 단어 조합의 특정한 관계는 학습할 수 있다.

예를 들어,

이 두 문장이 서로 다른 의미를 가진 문장이라는 것은 쉽게 알 수 있다.

image

위 네트워크에서 인풋을 Run See Jim으로 바꾸면, weight은 고정된 상태에서 인풋이 바뀌는 것이므로 , output은 0.99가 아닌 다른 값이 나올 것이기 때문.

하지만 만약 사용가능한 단어가 10000개이고, 문장의 길이가 3이 아닌 50이라면?

10000 P 5, 그 모든 조합에 각각 어떤 의미가 있는지 학습한다? -> you can easily see that this is an intractable problem.

eubinecto commented 3 years ago

Convolutional Neural Nets

image

convolution은 사실 수학에서 흔히 쓰이는 개념이라고 한다.

여기서는 그런 딥한 것 까지 알 필요는 없고, convolution의 mental image만 잘 이해를 하고 있으면 된다:

eubinecto commented 3 years ago

data = image = sequence of 2D pixel intensities 일 때 convolution은 어떻게 이루어지는지는 이미 공부했다.

그런데 data = sentence = a sequence of 1D words 일 때 convolution은 어떻게 이루어지는가?

time series하면 RNN은 쉽게 떠오르지만, CNN은 쉽사리 떠오르지 않는데. CNN이 modeling time series를 어떤 식으로 접근하나?

즉, CNN이 위에서 언급한 spatial & temporal patterns of words를 어떻게 학습하는가?

이에 대한 답을 얻어보자.

Narrow windows, indeed(pg. 228)

image image
eubinecto commented 3 years ago

Pooling (pg. 236)

image

텍스트의 경우에는, 1D pooling으로 진행. 위 figure는 max pooling의 예시.

pooling은 dimensionality reduction을 위해 사용.

eubinecto commented 3 years ago

그렇다면 CNN은 실제로 sequence modeling에 어떻게 쓰이고 있나?

time series modeling에 CNN 활용한 사례

CNN의 장점

A big argument for CNNs is that they are fast. Very fast. Convolutions are a central part of computer graphics and implemented on a hardware level on GPUs. Compared to something like n-grams, CNNs are also efficient in terms of representation. With a large vocabulary, computing anything more than 3-grams can quickly become expensive. Even Google doesn’t provide anything beyond 5-grams. Convolutional Filters learn good representations automatically, without needing to represent the whole vocabulary. It’s completely reasonable to have filters of size larger than 5. I like to think that many of the learned filters in the first layer are capturing features quite similar (but not limited) to n-grams, but represent them in a more compact way.

감정분석

예를 들면:

다음의 논문을 참고해 볼 것. 거의 vanila CNN에 가까운 모델만으로 semantic analysis에 뛰어난 성능을 보임.

[1] Kim, Y. (2014). Convolutional Neural Networks for Sentence Classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014), 1746–1751.

eubinecto commented 3 years ago

RNN과 비교했을 때, CNN의 한계는 무엇인가?

그렇게 sequence modeling에 쓰일 수 있는데에도 불구하고, 사람들은 왜 CNN이 구조적으로 적합하지 않다고 생각하는가?

CNN의 한계