데이터 스터디/DL 25

RNN - 역전파와 한계점

RNN의 한계점 1) Vanishing / Exploding Gradients 가중치를 업데이트 시키는 Back Propagation Through TIme(BPTT)과정에서, time step이 하나씩 늘어날 때 마다, chain rule 연산도 늘어나게 된다. 아래 그림은 hidden state 벡터에서의 편미분 값을 보여주고 있다. 이때 편미분 횟수만큼 W_h가 곱해지고 있는 모습 !! ⇒ 이 과정에서 RNN의 문제점 발생 𝑊ℎ가 작을 수록(< 1) 반복적으로 곱해지는 값이 0에 가까워져 gradient vanishing gradient descent를 구하기 위해서 weight로 미분해주는 과정에서, chainrule을 사용해서, 미분값을 여러 개를 곱해주게 되는데, 이때, 만약에 입력 seque..

CNN - convolution 연산 이해하기

CNN은 이미지에 '커널 (Kernel)'이라는 필터를 이용하여 컨볼루션(convolution)을 취하는 방식으로, 필터를 이동시키면서 필터의 특성에 맞게 강조된 output(feature)를 뽑아낸다. CNN은 Neural Net과 유사하지만 이미지 데이터의 특성을 인코딩할 수 있다는 특징이 있다. 기존 DNN(Fully Connected Layer만으로 구성된 인공신경망)에서 입력 데이터는 1차원 배열 형태로 한정되기 때문에 이미지를 입력 데이터로 사용했을 때(2차원 -> 1차원 형태로 flatten 시키는 과정에서) 위치 정보가 손실된다. 반면 CNN에서는 Convolution layer를 사용하여 이미지 데이터의 형상을 유지하여 위치 정보의 손실을 줄일 수 있게 된다. 또한 Fully Connec..

07. Back Propagation - 역전파 이해하기

뉴럴 네트워크 모델을 설명하기 위한 파라미터들과, loss function, 경사하강법에 대해 이전에 알아보았다. (참고로, 뉴럴 네트워크는 우리가 알고 있는 아래의 관계망이고 이를 학습시킨 결과물이 바로 딥러닝 '모델'이다.) 이번에는 뉴럴 네트워크 모델, 즉 딥러닝의 학습과정(=파라마티 추정 방법) 에 대해 알아보고자 한다. Neural Network 잠깐 다시 짚고 넘어가자면, 인공 신경망은 입력층, 은닉층(여러 개일 수 있다), 출력층을 가지고 있다. 이 인공 신경망에서 입력 데이터(i1, i2)를 받아 최적의 출력 데이터(o1, o2)를 계산할 수 있도록, 각 퍼셉트론의 가중치(w1~w8)들을 업데이트하는 과정을 신경망 학습이라고 한다. Forward Propagation 순전파(Forward ..

[코드 분석] Bag of Words for IMDB movie review

Kaggle : Bag of Words Meets Bags of Popcorn 커널 필사 대회 소개 링크 : https://www.kaggle.com/c/word2vec-nlp-tutorial 영화리뷰를 읽고 그 리뷰가 영화를 추천하고 있는지 아닌지를 예측 평가하는 기준은 ROC커브 데이터 파일 labeledTraindata.csv - id/sentiment/review 3개의 칼럼- Id는 글쓴이, sentiment는 1이면 긍정, 0이면 부정적인 리뷰를 뜻하고 review는 직접 쓴 리뷰 testData.csv - sentiment가 빠진 2개의 열 [Reference] 캐글 : https://www.kaggle.com/c/word2vec-nlp-tutorial 깃허브 : https://github...

TF-IDF

TF-IDF는 앞서 다루었던 DTM 행렬에서 행렬 내의 각 단어에 대한 중요도를 가중치로 삼아주는 기법이다. 따라서 TF-IDF는 주로 문서의 유사도를 구해서 추천시스템을 만들거나, 검색 결과 중요도를 보여줘서 검색 시스템을 만들거나, 특정 문서에서 키워드의 중요도 키워드 추출을 하는데 쓰이거나 등 되게 많이 사용되고 있다. TF-IDF 자세히 살펴보자면요, TF-IDF는 말그대로 TF랑 IDF랑 곱한 값을 의미한다. 먼저 TF를 보시면, TF란 terim frequency이다. 이는 특정 문서 d개에서 특정 단어 w의 등장 횟수, 즉 각 문서에서 단어의 등장 빈도를 말한다. 그리고 IDF는 DF, document frequency의 역수에 로그를 취한 형태인데, DF는 특정 단어W가 문서 안에서 몇 번..

N-gram 언어 모델

N-gram은 단어 앞에 놓은 단어구들을 모두 사용하는게 아니라, 앞 단어 중에 임의의 개수만 포함해서 카운트해서 근사시키는 방법이다. 이렇게 되면, 통계적 언어 모델에서 일어났던 문제( = 다시 설명하자면, 확률을 계산하고 싶은 문장이 길어질수록 갖고 있는 훈련문장에서 그 문장이 존재하지 않을 가능성이 높아짐)를 해결할 수 있고, 앞 단어들을 적게 사용해서 최대한 근사할 수 있을 정도로 적게 사용한다. 그래서 이때 임의의 개수를 정하기 위한 기준으로 사용하는 것이 n-gram이고, n-gram은 n개의 연속적인 단어 나열, 그래서 n개의 단위로 끊어서 하나의 토큰으로 간주한다. 종류로는 unigram, bigram,trigram, 4-gram등 이고, 최대로 5개까지 사용하는게 보편이라고 한다. 예를 ..

언어 모델 - 통계 기반 언어모델

언어 모델 언어모델이라는 것은, 짧게 요약해서 말하자면, 문장 즉 단어의 시퀀스를 예측하는 모델이다. 그래서 언어모델은 자연어 생성에 기반이 되는데, 기본적으로 자연어 생성과 관련된 건 모두 언어모델과 관련된다고 보면 된다. 음석 인식, 기계 번역, 검색어 자동 완성 모두 언어모델을 사용하고 있다. 언어 모델을 만드는 방법은 크게 통계를 이용한 방법과 인공 신경망을 이용한 방법으로 구분할 수 있다. 최근 자연어 처리에서 언어 모델에 대한 이야기를 빼놓을 수 없는데, 최근 핫한 딥러닝 자연어 처리의 기술인 GPT나 BERT가 전부 언어 모델의 개념을 사용해서 만들어졌다. 통계 기반 언어모델 여기 예시를 하나 보시면, the children play -> 빈칸이 있다. 여기서, 이 앞에 문장이 주어졌을 때 ..

자연어 처리 - 통계 기반 기법

자연어처리를 배우기 위해서는 자연어, 그리고 단어들이 어떻게 문장 안에서 기능을 하고 맥락을 구성하고 있는지 그 바탕에 집중을 해야한다. 이때 단어의 의미를 파악하는 방법으로 1) 통계 기반 기법이 있고, 2) 추론 기반 기법이 있는데 해당 포스팅에선 통계 기반 기법을 다뤄보도록 하겠다. (아래의 내용은 밑바닥부터 시작하는 딥러닝2 의 ch02. 자연어와 단어의 분산표현을 정리한 것이다) 통계 기반 기법 통계 기반 방법은 특정 단어에 주목했을 때, 그 주변에서 어떤 단어가 몇 번이나 등장하는지를 세어주는 방법이다. 이때 컴퓨터가 자연어를 처리할 수 있도록, 다시 말해서 단어를 숫자로 바꿔줘야 하므로, 우리는 단어를 3차원의 벡터로 표현해야 하죠. 그래서 우리 이것을 '단어의 분산 표현'이라고 한다. 단어..

자연어처리 입문

자연어는 우리가 일상생활에서 사용하는 언어들이라고 정의내리고 있다. 그리고 자연어’처리’란 자연어의 의미를 분석해 컴퓨터로 다양한 문제를 해결하는 것이라고 정의가 내려지고 있다. 이때 어떤 문제를 해결하고 있냐?라고 물으면 자연어처리의 응용분야를 같이 살펴보면 된다. 자연어 처리 테스크는 이것보다 훨씬 더 많지만 간단히만 살펴보자면, 1) 텍스트 분류, 2) 감성분석 ,3) 내용요약, 4) 기계번역, 5) 질의응답 등이 있다. 먼저 텍스트분류는 특정 문장이나 문서에서 어떠한 카테고리로 분류하는 문제를 다룬다. 감성분석은 텍스트에서 어떤 주제에 대한 주관적인 인상, 감정, 개인의 의견을 추출하는 문제를 다룬다. 내용 요약은 문서에서 중요하다고 생각되는 문장을 요약하는 방법이나, 요약문을 새롭게 생성하는 방..

06. 옵티마이저 (optimizer)

옵티마이저 (optimizer) 경사하강법 알고리즘에 변화를 살짝 추가해줄 수 있는 요소로 optimizer가 등장을 합니다. 1. 모멘텀 먼저 모멘텀은 경사 하강법에 관성을 더해주는 요소로, 계산된 접선의 기울기에 한 시점 전의(t-1) 접선의 기울기 값을 일정한 비율만큼 반영해주는 것이다. 만약 로컬 미니멈에 도달했을 때에 글로벌 미니멈으로 잘못 인식해 탈출하지 못하는 과정에서 모멘텀의 힘을 빌릴 수 있는 것이다. 2. 아다그라드 또 다른 optimizer로 아다그라드는 각 매개변수에 서로 다른 학습률 learning rate을 적용해주는 기능을 갖고 있다. 이때 갱신이 많이 된 매개변수에는 학습률을 작게 만들어 더 작게 변화하도록 만들고, 갱신이 조금 된 변수에는 학습률을 크게 만들어 더 크게 변화..