728x90
반응형
본문 바로가기

프로그래밍/김기현의 딥러닝을 활용한 자연어처리 입문과정6

RNN의 Gradient 문제 해결하기 위한 기법? LSTM(Long Short Term Memory)와 GRU(Gated Recurrent Unit)이란? 지난 시간에 RNN을 배워보았습니다. RNN의 경우 Gradient Vanishing 문제가 발생했죠. 이유는 출력할 때 hyperbolic Tangent(하이퍼볼릭 탄젠트, tanh)으로 Back Propagation을 할 때 문제가 생기죠. Back Propagation을 할 때 Tanh를 미분한 값을 곱하게 됩니다. 이 때 보시면 Tanh의 미분한 값은 1보다 작은 값이죠. 그래서 값이 점점 작아지게 됩니다. Gradient Vanishing 문제가 생기죠. 그래서 나온 기법이 LSTM(Long Short Term Memory)입니다. 상기 그래프는 LSTM 구조를 나타내고 있는데요. 보시면 input, forget, output 등의 sigmoid 함수가 들어가 있습니다. 파란색 그래프가 sigm.. 2020. 7. 4.
RNN이 쓰이는 어플리케이션(분야)은 어떤게 있을까? 우선 RNN의 입력과 출력에 따른 모델을 한번 살펴보자. 입력이 여러개이고 출력이 한개인 경우(Many to One), 텍스트 분류에 쓰인다고 한다. 즉, 이 텍스트가 뉴스 카테고리인지 연예 카테고리인지 자기계발인지 하는 텍스트가 속한 카테고리를 정해주는 것이라고 생각하시면 될 것 같다. 최종 출력만 필요하고 나머지 이전의 출력값은 다 버린다. 일대다(One to Many)의 모델의 경우에는 NLG와 Machine Translation이 있다. NLG는 Natural Language Generation 즉, 자연어 생성을 뜻한다. 예를 들어 '나는 멍멍이와 뛰고 싶다'라는 문장이 있을 때 '나는'이라는 단어를 입력하면 뒤에 '멍멍이와'라는 단어가 생성되고, 그 '멍멍이와'라는 출력이 다시 입력으로 들어가.. 2020. 7. 3.
Vanilla RNN(Recurrent Neural Network)이란? 보통의 딥러닝은 다음과 같은 입출력을 보인다. 즉, 입력 x가 들어가면 출력 y가 나오는 식이다. 그런데, RNN 또는 Vanilla RNN의 경우는 다음과 같다.(RNN과 Vanilla RNN은 같은 말이라고 생각하면 된다.) 입력 x가 들어가면 출력 h가 나오는데, 그 출력이 다시한번 입력과 결합되는 방식이다. 이런 RNN 모델에는 어떤 입력 x가 적합할까? 김기현 강사님에 따르면, Sequential Data에 적합하다고 한다. Sequential Data란 말 그대로 순차적인 데이터를 뜻하는데, 예를 들어보면 내가 지금 쓰고 있는 텍스트나 샘플링 주기가 일정한 영상 또는 음성 등이 있다. 이러한 Sequantial Data의 경우에는 데이터의 순서정보가 중요하다고 한다. 텍스트의 경우에는 단어의 .. 2020. 7. 2.
Maximum Likelihood Estimation(MLE)과 Cross Entropy(CE)와의 관계. 결국 같은것이었다. MLE에 대한 내용은 아신다고 가정하고 진행해보겠습니다. 확률분포 내에서 데이터(D)에 대한 N개의 샘플을 먼저 추출하구요. 입력 x를 넣었을 때 출력 y값을 다 더한값이 최대가 되게하는 세타 햇 즉, 랜덤변수를 찾는 것이 MLE의 목표였습니다. 이걸 Negative Log Likelihood(NLL)로 변환하면 식이 다음과 같이 바뀌죠. 그리고 딥 뉴럴 네트워크로 가서 한번 살펴보겠습니다. 가장 왼쪽이 입력 x죠. 그리고 softmax를 거친 y햇이 나옵니다. 이걸 식으로 나타내면 다음과 같습니다. 그리고 Cross Entropy를 볼까요? 앞에 1/N을 제외한 나머지는 똑같습니다. 1/N은 미분하면 사라지게 되구요. 결국 최대의 확률 분포를 찾는 것. 즉, 최소의 Negative Log Likelih.. 2020. 7. 1.

728x90
반응형