Processing math: 100%
본문 바로가기
대학원 이야기/CS224N : NLP with Deep Learning

[CS224N] Assignment 3

by misconstructed 2020. 11. 2.
728x90

이번 과제에서는 neural dependency parser를 만들어 본다. 

# 문제

문제 해석 : 우리가 기존에 사용하던 stochastic gradient descent 의 경우 다음과 같은 식을 만족한다. 이 때, J 는 loss function 이고 α 는 learning rate 를 의미한다. 우리는 각 loss 에 대한 파라미터의 gradient 값을 learning rate에 곱해서 파라미터 값을 업데이트하는 방식으로 학습을 진행했다. 

[식-1]

이번에 새로 다뤄볼 Adam optimizer 의 경우 다음과 같은 식을 만속시키면서 학습을 진행한다. β 값은 0에서 1 사이의 (보통 0.9를 사용한다) 하이퍼파라미터로 사용한다. 

[식-2]

Adam optimizer가 m을 사용함으로서 어떻게 학습에 도움이 되는지 이야기해보자.

문제 해석 : Adam 은 추가적으로 adaptive learning rate v 를 다음과 같이 사용한다. 

[식-3]

Adam 이 전체 업데이트를 v 로 나눠주는데, 이러한 방식으로 학습을 진행하면 어떤 파라미터가 더 크게 업데이트를 하게 되는가? 이러한 업데이트 방식이 학습에 어떠한 도움이 되는지 이야기해보자.

Adam optimizer 에 대한 논문을 한 번 읽어봐야 겠다. (링크)

# Dependency parser

Dependency parser는 각 단어들 사이의 관계를 학습하면서 문장의 문법적인 구조를 나타낼 수 있다. 이번 과제는 transition-based parser로서, 순차적으로 하나씩 parsing 해나간다. Parser는 다음과 같은 구성을 지닌다.

  • stack : 현재 처리되고 있는 단어들의 목록. [ROOT] 만 보유하고 있는 경우 stack은 비어있다고 판단한다.
  • buffer : 나중에 처리되어야 할 단어들의 목록
  • dependency list : parser가 예측한 dependency를 저장하는 list

Parsing 을 진행할 때 각 step 마다 다음과 같은 3가지 연산 중 하나를 수행한다.

  • SHIFT : buffer에서 첫 단어를 stack 에 추가
  • LEFT-ARC : 가장 마지막에 추가된 단어 a 가 그 전에 추가된 단어 b 에 dependent 한 경우, a->b 의 dependency를 생성하고 b를 stack에서 제거한다. 
  • RIGHT-ARC : 두 번째로 마지막에 추가된 단어 a 가 그 직후에 추가된 단어 b 에 dependent 한 경우, a->b 의 dependency를 생성하고 b를 stack에서 제거한다. 

 

 

 

 

 

 

 

 

 

728x90

댓글