본문 바로가기

AI_basic/Deeplearning12

[Deeplearning Part.8-5] 어텐션 seq2seq의 문제점 seq2seq의 Encoder의 출력을 Decoder로 보낼 때 이 출력은 "고정 길이의 벡터"였습니다. 이 고정 길이의 벡터에 문제가 있습니다. Encoder에 입력된 데이터의 길이에 상관없이 항상 같은 길이의 벡터로 변환하기 때문입니다. 이제 이 seq2seq의 문제점들을 하나씩 개선시키며 어텐션 구조를 완성시켜보겠습니다. Encoder 개선 앞에서 얘기했던 문제를 개선하기 위해 입력 데이터의 길이에 따라 Encoder의 출력의 길이를 바꿔줍니다. hs에는 입력 문장(데이터)의 길이 만큼의 벡터들이 담기게 되었습니다. hs의 각 행벡터에는 해당 층에 입력된 데이터의 정보가 담겨있다고 볼 수 있습니다. Decoder 개선 1. 맥락 벡터 Encoder의 출력이 더 이상 고정 길이.. 2022. 1. 27.
[Deeplearning Part.8-4] GRU GRU 이전 글에서 게이트가 추가된 RNN으로 LSTM에 대한 글을 썼었는데, GRU는 이 게이트를 쓴다는 개념은 유지하고, 매개변수를 줄여 계산 시간을 줄여줍니다. LSTM과 비교해보면, 기억 셀을 사용하지 않고 은닉 상태만을 사용합니다. 게이트를 추가하기 전까진, 기본적인 RNN과 같은 모습입니다. GRU에는 r과 z라는 두 개의 게이트를 사용하는데 r은 reset, z는 update게이트입니다. LSTM에 비해 게이트 수가 줄었고, 기억 셀을 사용하지 않는다는 점에서 파라미터 수와 연산량이 확실히 줄 것 같다는 생각입니다! 그리고 reset과 update라는 정말 필요한 게이트만을 설정해준 느낌입니다. 우선 reset게이트는 과거에서 흘러온 은닉 상태를 얼마나 무시할지 정합니다. 한편, update.. 2022. 1. 25.
[Deeplearning Part.8-3] seq2seq seq2seq seq2seq모델은 시계열 데이터를 다른 시계열 데이터로 변환하는 모델입니다. 시계열 데이터의 변환을 예를 들면 특정 언어의 문장을 다른 언어의 문장으로 번역하는 과정을 들 수 있습니다. 또한 seq2seq모델은 Encoder-Decoder 모델이라고도 하는데, 이름처럼 input을 인코딩하고, 인코딩된 데이터를 다시 디코딩하는 과정을 거칩니다. "나는 고양이로소이다"라는 한글 문장을 "I am a cat"으로 변환(번역)하는 경우로 예를 들어 보겠습니다. seq2seq의 Encoder LSTM모델에 한 문장을 넣는 경우를 생각해보겠습니다. 위 모델이 출력하는 h는 LSTM계층의 마지막 은닉 상태인데, 이 h에 입력된 문장을 번역하는데 필요한 정보가 인코딩됩니다. 겉으로 보면 "나는 고양이.. 2022. 1. 25.
[Deeplearning Part. 8-2] LSTM 기본 구조의 RNN의 문제점 1. 기울기 소실 기울기 소실의 원인은 tanh함수입니다. tanh는 ouput의 절대값이 1보다 작아 역전파 시 기울기가 소실될 수 있습니다. 이 문제 때문에 기본 DNN모델이나 CNN에서 활성화함수로 sigmoid를 ReLU로 대체하는 것을 알 수 있었습니다. 2. 기울기 폭발(소실 포함) 기울기 폭발의 원인은 가중치 행렬과의 행렬곱입니다. W라는 가중치는 모든 시점에서 공유되는데, 자세한 부분은 https://yjjo.tistory.com/15를 참고하면 좋을 것 같습니다. W라는 가중치가 모든 시점에서 공유되기 때문에, 역전파가 하류로 갈수록 W의 전치가 계속해서 곱해져갑니다. 이 때, 행렬의 특잇값이 1보다 크다면 제곱 할수록 계속해서 커져 기울기 폭발이 일어납니다... 2022. 1. 25.
[Deeplearning Part.8-1] RNN 기본구조 이 전에 알아본 Word2vec의 CBOW모델을 다시보면, 맥락 안의 단어 순서가 무시된다는 단점이 있습니다. 예시로 나온 문장 중 say에 대한 윈도우는 "you say goodbye"가 되는데, 이는 (you, say)와 (say, you)를 같은 맥락으로 취급합니다. 따라서 맥락 내의 단어 순서도 고려한 모델이 바람직한데, 여기서 등장하는 것이 순환 신경망(Recursive Neural Network)입니다. RNN t는 각 단어의 순서를 기준으로 인덱싱 한 숫자입니다. 우변을 좌변처럼 하나의 계층으로 본다면 RNN으로 표시된 사각형의 층을 지나서 나온 output이 계속해서 다시 RNN계층으로 들어가게 됩니다. 따라서 값이 계속 순환하고 있습니다! RNN한 계층의 계산수식을 보면, 이전 RNN계층.. 2022. 1. 24.
[Deeplearning Part.7-1] 자연어 처리와 Word Embedding NLP란 NLP란 자연어 처리란 뜻으로, 자연어 생성(Meaning ->Text)과 자연어 이해(Text -> Meaning) 두 가지를 포함하는 영역입니다. NLP의 영역 감정 분석(Sentiment Analysis) 요약(Summarization) 기계 번역(Machine Translation) 질문 응답(Question Answering) 문자를 숫자로 표현하는 법 Token과 vocabulary 각 Token별로 indexing했을 때 문제점 1) feature engineering의 label encoding처럼 별 의미 없을 듯?? 2) 학습한 말뭉치에 없는 Token이 나온다면?? -> OOV(Out-Of-Voca) OOV문제를 줄이기 위해 큰 기업의 연구에서는 말뭉치(Corpus)를 잘 o.. 2022. 1. 22.
[Deeplearning Part .6-1] CNN CNN CNN은 합성곱 신경망이며, 이미지 인식과 음성 인식 등 다양한 곳에서 사용됩니다. CNN에서는 이 전 신경망과 달리 합성곱 계층convolutional layer와 풀링 계층pooling layer가 등장합니다. CNN의 기본 1. 합성곱 연산 합성곱 연산에서는 필터를 적용시킵니다. 위 그림의 가운데 행렬이 필터이며, 입력층에서 같은 크기를 갖는 윈도에 단일 곱셈 누산을 하고, 이를 출력합니다. 출력층의 행과 열 개수는 필터 크기의 윈도우를 입력층에서 몇 개 가질 수 있는지에 따라 결정됩니다. 일반적인 Affine 변환의 경우, 데이터를 1차원으로 평탄화하여 입력했지만, 위와 같이 합성곱 연산을 할 경우 데이터의 형상을 살릴 수 있습니다. 2. 패딩 padding 입력층의 주변을 폭 1짜리 0의.. 2022. 1. 9.
[Deeplearning Part.5] 학습 관련 기술들 매개변수 갱신 신경망 학습의 목적은 손실함수의 값을 가능한 한 낮추는 매개변수를 찾는 것입니다. 지금까지 확률적 경사 하강법(SGD)를 통해 가중치를 업데이트하는 법을 알아보았는데, SGD 외 다른 매개변수 최적화 기법을 소개합니다. 1. 모멘텀 Momentum 모멘텀은 운동량을 뜻하며, 가중치 업데이트 수식은 다음과 같습니다. 여기서 v라는 변수는 물리에서 말하는 속도에 해당합니다. αv항은 기울기 방향으로 힘을 받아 가중치가 가속되어 업데이트하는 형상을 띄게 됩니다.(α는 보통 0.9 등의 값으로 설정합니다.) 2. AdaGrad 학습률을 효과적으로 정하는 기술로 학습률 감소 learning rate decay가 있습니다. 또한 학습률을 서서히 낮추는 간단한 방법은 매개변수 "전체"의 학습률 값을 일.. 2022. 1. 9.
[Deeplearning Part.4] 오차역전파법 오차역전파법 경사하강법으로 손실함수의 최솟값을 찾으려는 방법을 이전 장에서 알아봤습니다. 오차역전파법은 오차를 역으로 전파하는 방법으로 가중치 매개변수의 기울기를 효율적으로 계산하는 방법입니다. 오차역전파법을 위한 도구로 연쇄 법칙을 알아보고, 신경망에서의 오차역전파 전체를 한 번 보겠습니다. 1. 연쇄 법칙 Chain rule 오차역전파법을 이해하기 위해서는 기본적으로 연쇄 법칙에 대해 이해해야합니다. 연쇄 법칙은 합성함수의 미분을 각 함수의 미분의 곱으로 나타내는 것입니다. 위 식과 같은 합성함수 z가 있을 때 미분은 다음과 같이 나타낼 수 있습니다. 우변의 t가 지워져 좌변과 같아지는 것을 알 수 있습니다. 여기서 우변의 두 분수는 z를 t로 미분한 것과 t를 x로 미분한 것입니다. 이것은 x ->.. 2022. 1. 6.