-
부스트캠프 ai tech 2기 6주차 학습 정리 노트Boostcamp AI Tech 2기 2021. 9. 10. 19:37
강의 복습
1강 Intro to Natural Language Processing(NLP), Bag-of-Words
Natural language processing (major conferences: ACL, EMNLP, NAACL) :
• Low-level parsing :
- Tokenization : I study math. 와 같은 문장에서 I, study, math와 같은 각 단어들을 token이라고 부르며 주어진 문장을 token 단위로 쪼개는 과정을 Tokenization이라고 한다.
- Stemming : 단어의 어미는 다양하게 변할 수 있다. 가령 study는 studying, studed 등으로 변할 수 있는데, 이렇게 어미가 변하더라도 이 단어들은 비슷한 뜻을 가지고 있음을 컴퓨터로 하여금 이해할 수 있게 어근을 추출해 의미만을 보존하는 작업이다.
• Word and phrase level :
- Named entity recognition(NER) : 단일 단어, 혹은 여러 단어로 이루어진 고유 명사를 인식하는 task. New york Times의 경우 세 개의 단어를 따로 인식하지 않고 하나의 고유명사로 인식해야한다.
- Part-of-speech(POS) tagging : 각 단어들의 문장 내에서의 품사나 성분이 무엇인지를 알아내는 task. 주어, 목적어, 동사, 부사구, 형용사구 등을 구분한다.
• Sentence level :
- Sentiment analysis(감정 분석) : 주어진 문장이 긍정적인지 부정적인지를 판별. This movie was not that bad. 와 같은 문장의 경우 bad라는 단어가 들어감에도 문장 자체는 긍정적인 평을 담고 있으므로 긍정으로 분류하여야한다.
- machine translation(기계 번역) : I study math. 와 같은 문장을 난 수학을 공부한다. 와 같은 문장으로 번역해 출력. 의미와 어순을 고려해 출력하여햐 한다.
• Multi-sentence and paragraph level :
- Entailment prediction : 두 문장간의 논리적인 내포 혹은 모순 관계를 예측. 어제 존은 결혼을 했다. 어제 최소 1명이 결혼했다. 의 두 문장은 첫 번째 문장이 참인 경우 두번째 문장 또한 자동으로 참이 된다. 하지만 첫번째 문장은 어제 한 명도 결혼하지 않았다. 는 문장과는 양립할 수 없다. 이러한 관계를 예측하는 것이 Entailment prediction이다.
- Question answering(독해기반 질의응답) : 가령 구글에 where did napoleon die 를 검색하면 예전엔 문장에 포함된 각 단어와 연관된 검색 결과를 보여줬다면 요즘에는 검색결과 맨 위에 나폴레옹이 죽은 곳은 longwood임을 정확하게 나타내준다. 이러한 과정은 관련 문서 탐색 -> 독해를 통한 정확한 정답 제시 과정을 거치게 된다.
- Dialog systems : 챗봇과 같은 대화를 수행할 수 있는 자연어처리 기술.
- Summarization : 주어진 문서를 한 줄 요약의 문장으로 나타내주는 task.
Text mining(major conferences: KDD, The WebConf (formerly, WWW), WSDM, CIKM, ICWSM) :
한 인물이나 상품의 년도별 자주 등장하는 키워드와 그 빈도수들을 수집해 그에 따른 대중의 반응을 분석하는 작업 등이 포함된다. 이를 위해선 서로 다른 단어라도 비슷한 의미를 가진 단어를 그룹화해야할 필요가 생기며 topic modeling과 같은 문서 군집화 기술이 존재한다.
또한 computational social science와도 관련이 깊은데, 최근 자주 쓰이는 단어나 신조어가 현대의 어떠한 사회현상과 관련이 깊다 등을 규명하는 역할을 한다.
Information retrieval (major conferences: SIGIR, WSDM, CIKM, RecSys) :
구글, 네이버 등에서 쓰이는 검색 기술을 주로 연구한다. 멜론이나 유튜브의 음악, 영상 추천 시스템과도 밀접한 관련이 있다. 이는 검색 시스템의 자동화된 형태라고도 볼 수 있다. 또한 추천 시스템은 광고나 상품 추천과 같은 다양한 분야에서 사용되고 있다.
Bag-of-Words :
• Step 1. Constructing the vocabulary containing unique words. 이 때 중복된 단어를 제외한 set을 구성한다.
• Step 2. Encoding unique words to one-hot vectors. (one-hot encoding) 이 때 각 단어간의 유클리디언 거리는 루트2가 되며, 내적 값은 0이 된다. 또한 이 단어들의 조합의 합 벡터를 구하는 것으로 문장과 문서를 표현할 수 있다. 이를 Bag-of-Words Vector라고 부른다.
NaiveBayes Classifier :
문서 d가 주어지고 문서가 속할 수 있는 클래스 c들의 집합을 C라고 하면 d가 속할 c를 정하는 과정은 다음과 같다.
따라서 해당 클래스가 등장할 확률과 클래스가 고정되어 있을 때의 각 단어가 등장할 확률을 알면 문서 d가 속할 클래스 c를 알 수 있는 것이다. 그러나 한번도 만난 적 없는 단어가 나오게 되면 다른 밀접한 관계의 단어들이 나옴과 상관없이 해당 클래스에 속할 확률이 0이 되므로 이를 이용한 다양한 정규화 방법이 제안되었다. 또한 클래스가 고정되어 있을 때의 각 단어가 등장할 확률은 최대우도 추정법에 의해 추출하는 것이 좋다고 알려져있다.
2강 Word Embedding
Word Embedding : 각 단어를 공간 상의 한 점이나 좌표를 나타내는 벡터로 변환하는 기법. 이 때 유사한 의미를 가진 단어끼리는 거리가 가깝게, 아닌 경우는 거리가 멀도록 변환한다. Word Embedding은 그 자체로서 머신러닝, 딥러닝 기법이며 학습을 통해 최적의 좌표값을 반환할 수 있다.
Word2Vec : 같은 문장에서 나타난 인접한 단어들 간에 그 의미가 비슷할 것이라는 가정을 사용. 따라서 Word2Vec은 한 단어를 주변에서 등장하는 단어들을 통해 그 의미를 알 수 있다는 사실에 착안하게 되며 학습을 바탕으로 특정 단어 주변에 나타날 단어들을 예측하게 된다. 단어간의 비슷한 관계는 비슷한 차이로 나타나게 된다. 가령 man과 woman, king과 queen은 남성에서 여성으로의 변환으로, vec[queen] – vec[king] = vec[woman] – vec[man]이면 잘 학습된 것으로 볼수 있다.
- Analogy Reasoning : 한국-서울+도쿄 = 일본의 형식으로 단어간 연산으로 결과 단어를 유추.
- Intrusion Detection : 여러 단어가 주어졌을 때, 나머지 단어들과 의미가 가장 상이한 단어를 찾는 task. 각 단어별 유크리디언 거리를 평균내어 계산한다.
GloVe(Global Vectors for Word Representation) : 각 입력 및 출력 단어쌍들에 대해 동시에 등장한 횟수를 미리 계산하고 로그함수를 취해 직접적으로 loss 계산에 이용한다는 점에서 Word2Vec과 차이를 보인다. 중복되는 계산을 줄인다는 장점 때문에 Word2Vec보다 학습이 상대적으로 빠르며 보다 적은 데이터에 대해서도 잘 동작하는 특성이 있다.
3강 Recurrent Neural Network and Language Modeling
RNN : 어떠한 sequence 데이터가 입력 혹은 출력으로 주어진 상황에서 각 time step에서 들어오는 입력 벡터 X_t와 그 전 time step의 RNN모듈에서 계산한 hidden state 벡터 h_t-1을 입력으로 받아 현재 time step에서의 h_t를 출력으로 내어주는 구조를 가지고 있다. 서로 다른 time step에서 들어오는 입력 데이터를 처리할 때 동일한 파라미터를 가져 반복적으로 등장하는 RNN모듈을 매번 동일하게 사용한다. vanilla RNN의 경우 Vanishing/Exploding Gradient Problem이 치명적인 문제이고, 이를 해결하기 위해 LSTM, GRU등을 사용하게 된다.
Type of RNNs
• One-to-one : ex) Standard Neural Networks.
• One-to-many : ex) Image Captioning. 하나의 이미지를 받았을 때 문장으로 설명하는 task. 첫번째 time step에서만 입력을 받으므로 이후의 time step에선 이미지와 같은 사이즈의 0으로 채워진 벡터를 입력으로 넣어준다.
• Many-to-one : ex) Sentiment Classification.
• Many-to-Many : ex) Machine Translation, Video classification on frame level, Part-of-speech(POS) tagging.
Character-level Language Model
Language Model : 주어진 문자열이나 단어들의 순서를 바탕으로 그 다음 단어가 무엇인지를 맞추는 task.
Character-level Language Model : 알파벳 하나하나를 단위로 예측을 수행하는 Language Model. hello를 학습시킨다면 h가 input으로 주어졌을 때 e를 반환할 수 있어야하며, e에선 l. l에선 l, 그 다음 l에선 o를 반환하도록 해야한다. 또한 자신의 출력값을 그대로 다음 입력값으로 쓰게 된다면 무한한 길이의 문자열을 재귀적으로 반환하는 것도 가능하다. 이를 더 응용하면 latex을 통해 쓰인 논문을 학습하거나 c를 통해 짜인 코드를 학습해 논문 생성기나 코드 생성기를 만드는 것도 가능해지는 것이다.
4강 LSTM and GRU
Long Short-Term Memory(LSTM) : Vanishing/Exploding Gradient Problem을 해결하고, time step이 먼 경우에도 필요로 하는 정보를 보다 효과적으로 처리하고 학습할 수 있도록 개선한 모델. h_t로 표현되는 기존의 히든 스테이트 벡터와 더불어 c_t로 표현되는 셀 스테이트 벡터를 다음 학습에 넘겨주게 된다.
Gates of LSTM : A gate exist for controlling how much information could flow from cell state.
• Forget gate : W_f와 [X_t, h_t-1]의 선형결합에 bias b_f를 더하고 시그모이드를 취한다. 이는 cell state에 성분곱을 하여 cell state의 정보를 얼마나 보존할지(얼마나 잊지 않을지를) 계산하는데 쓰인다.
• Input gate : W_i와 [X_t, h_t-1]의 선형결합에 bias b_i를 더하고 시그모이드를 취하고, W_c와 [X_t, h_t-1]의 선형결합에 bias b_c를 더하고 tanh를 취한다. 이 두 값은 성분곱이 되어 forget gate를 거친 cell state값과 더해져 C_t를 완성한다.
• Output gate : W_o와 [X_t, h_t-1]의 선형결합에 bias b_o를 더하고 시그모이드를 취한다. 이 값은 tanh(C_t)와 성분곱이 되어 h_t를 완성한다. C_t가 기억해야할 모든 정보를 담은 벡터라면, h_t는 현재 time step에서 예측값을 내는 output layer의 입력으로 사용되는, 즉 해당 time step의 에측값에 직접적으로 필요한 정보만을 담은 벡터이다.
Gated Recurrent Unit(GRU) : LSTM을 경량화하여 보다 적은 메모리 요구량과 빠른 계산시간이 특징이다. LSTM의 cell state 벡터와 hidden state 벡터를 일원화하여 hidden state 벡터만을 사용한다. f_t 또한 없애고 그 자리에 1-i_t 값을 사용하는 것 또한 특징이다.
5강 Sequence to Sequence with Attention
Seq2Seq Model : It takes a sequence of words as input and gives a sequence of words as output. It composed of an encoder and a decoder.
Attention : At each time step of the decoder, focus on a particular part of the source sequence. 이 때 각 step별 hidden state를 매번 선별적으로 활용하게 되는데, Decoder RNN의 hidden state 벡터는 모든 Encoder RNN의 hidden state 벡터와 내적 연산을 거치고 softmax를 씌워줘 유사도 배열을 만든다.(아래 그림에서는 간단한 내적 외에 여러 유사도 계산 방법을 보여준다.) 이렇게 연산된 벡터를 Attention vector라고 부르며, Attention vector의 성분들을 Encoder RNN의 hidden state 벡터들과 각각 곱해 가중평균 벡터를 구할 수 있다. 이 attention output은 Context vector라고도 부르며, 이 Context 벡터와 Decoder RNN의 hidden state 벡터는 concat되어 output layer에 입력으로 들어가게 되고, 다음에 나올 단어를 예측하는 것이다.
Teacher forcing : 학습과정에서는 오답이 발생하더라도 다음 값으로 올바른 ground truth값을 넣어주지만, 추론 과정에서는 오답이라도 오답 값이 다음 인풋으로 들어가게 된다. 이 경우 학습과정에서도 오답을 넣어준 경우보다 학습이 더 빠르게 진행되지만 실제와는 괴리가 발생하게 된다. 따라서 학습의 초반에만 Teacher forcing을 사용했다가 나중에는 오답을 넣어 학습시켜주는 방법이 존재한다.
6강 Beam Search and BLEU score
Greedy decoding : 현 시점을 기준으로 가장 확률이 높은 단어를 그 때 그 때 선택해 되돌릴 수 없는 방식의 추론법.
Exhaustive search : 모든 나올 수 있는 단어의 수를 조합해 Joint probality가 최대가 되도록 하는 경우를 찾는 방법. 굉장히 많은 계산량과 시간을 요구하게 되므로 비현실적이다.
Beam search : 위의 두 방법을 적절히 섞은 것으로, on each time step of the decoder, we keep track of the k most probable partial translations. (k = beam size) 이 때 문장별로 다른 time step에서 <end> 토큰을 만나게 될텐데, 먼저 끝난 것들은 일단 저장해놓은 뒤 남은 것들에 한해서 Beam search를 계속 수행한다. 특정 time step에 도달하거나 완료된 문장의 개수가 특정 개수를 넘어가면 Beam search를 중단하게 된다. 이 때 완료된 문장 후보 중 가장 점수가 좋은 것을 뽑게 되면 긴 문장일수록 불리해지기 때문에 각 점수를 문장의 길이만큼 나눠주는 방법이 있다.
Precision, recall, F-measure : 'Half of my heart is in Havana ooh na na' 라는 문장에 대한 예측이 'Half as my heart is in Obama ooh na'였다면 정밀도, 재현율, F-1스코어는 아래와 같다.
그러나 위의 방법은 순서와 관계가 없이 채점하므로 'Havana na in heart my is Half ooh of na'와 같은 문장을 예측했다면 정밀도, 재현율, F-1스코어가 모두 100%가 될 것이다.
BLEU(BiLingual Evaluation Understudy) score : Compute precision for n-grams of size one to four. 그리고 이를 기하 평균 취한다. 이후 원래 문장의 길이보다 예측 문장이 짧은 경우 그 비율을 기하평균값에 곱해준다. 이 비율은 gravity penalty로서 작용하게 된다.
과제 수행 과정 및 결과
과제는 어렵지 않았지만 주어진 빈칸 채우기 이상을 시도해보지 않은 점이 아쉬움이다. 실습 코드나 과제 코드를 분석하며 왜 지금 이런 코드가 사용되었을까하는 의문을 던지지 못한 것이 무척 아쉽고, 주말 동안 복습을 하며 이 과정을 수행해야겠다는 다짐을 하였다.
피어 세션
이번 주부터 5주간 함께했던 기존의 피어들과는 작별하고 새로운 팀원들과 3주간 새롭게 피어세션을 진행하게 되었다. 새롭게 만나게된 분들에게도 배울 점이 무척 많았고, 한 주만에 어느덧 친근해진 것 같아 기쁘다. 피어세션 시간엔 모르는 것에 대한 질의응답을 주로 진행하였으며, 조를 구성해 인당 2편의 논문을 읽기로 하였다.
학습 회고
강의와 과제 모두 굉장히 깔끔한 인상을 많이 받을 수 있었다. 지금까지 배운 내용 중 가장 심화된 내용이었지만, 교수님의 강의력 덕분에 이해가 어렵지 않은 점이 너무나 좋았다. 하지만 이번 주에는 그만큼 내가 너무 물음표를 적게 던진 것이 아닌가하는 반성도 된다. 강의와 과제 내용을 질문하시는 피어 분들의 질문을 명확히 대답드릴 수 있는 수준이 되지 않았고 오.. 이러한 궁금증을 가지실 수도 있구나하며 오히려 질문에 감탄을 하고 있었다. 이는 성장을 목표로 한다는 점에서 보면 완전히 틀린 것으로, 주말 동안 복습을 하며 계속해서 나 스스로에게 물음표를 던지는 시간을 가져볼까 한다.
'Boostcamp AI Tech 2기' 카테고리의 다른 글
부스트캠프 ai tech 2기 8주차 학습 정리 노트 (0) 2021.09.24 부스트캠프 ai tech 2기 7주차 학습 정리 노트 (0) 2021.09.15 부스트캠프 ai tech 2기 4주차 학습 정리 노트 (0) 2021.08.27 부스트캠프 ai tech 2기 3주차 학습 정리 노트 (0) 2021.08.20 부스트캠프 ai tech 2기 2주차 학습 정리 노트 (0) 2021.08.13