(03강) Recurrent Neural Network and Language Modeling
Last updated
Was this helpful?
Last updated
Was this helpful?
RNN을 활용하는 다양한 방법과 이를 이용한 Language Model을 학습 RNN을 이용한 Language Model에서 생길 수 있는 초반 time step의 정보를 전달하기 어려운 점, Gradient Vanishing / Exploding 을 해결하기 위한 방법에 대한 복습
Further Reading
RNN은 Sequential Data를 처리하기 위한 모델이다.
※ 모든 layer 에서 같은 함수와 파라미터를 가진다.
One to One Standard Neural Network, 일반 뉴런 네트워크 기본 분류
One to Many Image Caption Task
Many to One 감정분석 Task, 모든 문장을 분석한 후 하나의 결과를 도출
Many to Many (make output when every input is trained) Machine Translation, 문장을 다 읽은 후에 번역을 진행
Many to Many 단어별 품사 확인 Task
Language Model 이란 주어진 문자를 바탕으로 다음 나타날 문자를 예측하는 Task이다. Character level의 모델을 예시로 확인해 보자.
사전 구축 및 one-hot vector 로 표현
Vocab : "hello" -> [h, e, l, o]
[1, 0, 0, 0], [0, 1, 0, 0], [0,0,1,0], [0,0,0,1]
input layer로 부터 hidden layer의 계산
output vector 를 구하기
output vector는 다음 input이 되어야하므로 input의 size와 동일하게 된다.
위와 같은 학습 방법으로 첫 문자 "h" 만으로 다음 단어를 계속해서 예측가능한 구조가 되었다.
위는 세익스피어 글의 일부분인데 학습을 진행함에 따라 점차 문장에 가까운 글이 되어감을 확인 할 수 있다.
역전파를 통해 학습이 진행 되는데 문장의 길이가 길게 되면 필요한 메모리가 너무 커져 truncation으로 일정 부분만 잘라서 사용하게 된다.
위 예시는 특정한 hidden state vector의 dim을 고정해놓고, 그 해당 dim의 값의 변화를 음수는 파란색 양수는 붉은색으로 정도를 표시한 데이터 이다.
하나 dim에 대해서 위와 같이 흥미로운 패턴을 지니는 것을 볼 수 있다. hidden state의 특정 dim이 따옴표가 열리고 닫힘에 대한 정보를 가지고 있음을 알 수 있다.
Vanila RNN(Original RNN)은 사실 잘 사용되지 않는다. hidden state의 연산이 반복됨에 따라 같은 Matrix의 연산(등비수열)은 Gradient Vanishing, Exploding이 발생하여 학습이 잘 되지 않기 때문이다.
이런 문제에 대한 해결책으로 LSTM을 다음시간에 배우기로 한다.
Input Value 와 Hidden Value(누적값) 의 값이 다음 모델의 Input이 된다.
: old hidden-state vector
: input vector at some time step
: new hidden-state vector
: RNN function with parameters W
: output vector at time step (해당시점의 를 바탕으로 최종 출력값을 구한다.)
는 현재 input의 값()과 지금까지의 누적 값()의 합을 tanh 씌운 것이다.
구해진 값에 선형변환을 통해 output 값을 구할 수 있다.
위 예시를 보면 값 3이 반복적으로 곱해져 증폭 Gradient Exploding 문제가 발생한다.