데이터 스터디 63

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을 적용해주는 기능을 갖고 있다. 이때 갱신이 많이 된 매개변수에는 학습률을 작게 만들어 더 작게 변화하도록 만들고, 갱신이 조금 된 변수에는 학습률을 크게 만들어 더 크게 변화..

05. 경사 하강법

이제 결론적으로 우리가 앞에서 살펴봤던 loss function을 최소화해줘야한다. 이를 위해서는 우리는 가중치에 대해서 미분하는 과정을 거치게 된다. 경사 하강법 그래서 미분한 함수가 최소가 되는 지점, 다시 말해서 접선의 기울기가 0에 가까워지는 지점을 단계적으로 차근차근 밟아가는 경사하강법을 거친다. 이때 배치 크기에 따라서 경사하강법 방법도 달라지는데, 배치라는 건 매개변수 값을 조정하기 위해서 사용하는 데이터의 양을 말한다. 그래서 전체 데이터를 갖고 매개변수의 값 조정할지/ 아니면 정해준 일정한 양을 가지고 조정할지에 따라서 경사하강법의 방법은 달라진다. 아는사람은 이미 알겠지만 전체 데이터 쓰는 건 batch 경사 하강법, 사용자가 지정해주면 minibatch 하강법이다. 1. 배치 경사 하..

04. 신경망 학습 - loss function

학습은 훈련데이터로부터 우리의 매개변수의 최적값을 자동으로 획득하는 단계이다. 여기서 매개변수는 2개, 기울기와 편향이다. 이때 최적값은 실제값과 예측값이 가장 비슷한 지점에서 만들어지겠다. 다시 말하면 loss function을 최소화하는 방향으로 학습을 해야한다는 의미이다. 손실함수의 종류 그래서 loss function의 종류로는 먼저 MSE가 있다. 신경망이 추정한 출력값에서 실제 값과의 차이가 얼마나 되는지를 알려주는 함수고 연속형 변수 예측에 사용된다. 직접 함수로 정의하면 다음과 같이 작성할 수 있다. 보시는 것 처럼 compile() 메소드를 사용해서 학습 방식에 대한 환경설정을 이렇게 해주면 된다. Compile은 세 개의 인자를 입력으로 받는데 1) optimizer, 2) loss f..

03. 신경망 추론 - 활성화 함수, 출력층 함수

신경망 추론 활성화 함수(activation function) 추론은 마지막 출력층 값이 뭔지 알아내는 과정이다. 따라서 입력신호랑 가중치 곱하고 편향 더한 이 총합을 출력신호로 변환하는 함수가 필요하다. 그리고 우리는 이를 활성화 함수라고 부른다. 활성화함수 처리과정을 보시면, 가중치가 있는 입력 신호와 편향의 총합을 계산한 걸 a라고 뒀을때 이걸 활성화함수 h()에 넣어서 y값을 출력하는 일련의 과정을 거치고 있다. 활성화 함수의 종류 활성화함수의 종류로는 단층에서는 step function, 계단함수를 쓰고 다층에서는 시그모이드나 렐루같은 비선형 함수를 사용한다. 계단함수 : 0이 계속해서 나오다가 특정 임계값을 넘기면 1로 바뀌는 모습. 위 예시에서는 임계값을 0으로 설정해서 x가 0을 넘으면 1..

02. 인공신경망

인공신경망 신경망은 그림처럼 입력층, 은닉층, 출력층에 뉴런을 적절히 배치해준 형태이다. 신경망에서 수행하는 작업은 크게 두 단계로 나눌 수 있는데, 추론과 학습이다. - 추론은, 가중치와 뉴런의 값을 곱하고 그리고 뉴런 값에 영향을 받지 않는 이 편향도 같이 더해줌으로써 다음 뉴런의 값을 얻어내는 과정을 말한다. - 학습은 최적의 매개변수를 찾아가는 과정이다. (여기서 매개변수는 2개인데 하나는 가중치고 하나는 편향이다.) 이 두 매개변수는 신경망이 학습될 때 수시로 갱신되는 친구들이고, 이때 학습이 얼마나 잘됐는지 알아보는 척도로 loss function을 사용해준다.