본문 바로가기

전체 글101

딥러닝 등장 이전의 자연어와 단어의 분산 표현 단어의 의미 * 자연어처리는 컴퓨터에게 인간의 언어를 이해할 수 있게 만드는 기술이다. 컴퓨터가 인간의 언어를 이해하기 위해서는 먼저 문장의 최소 단위인 단어를 이해하는 법을 알아야 할 것이다. 우리가 다루게 될 컴퓨터가 단어를 이해할 수 있도록 인간의 단어를 표현하는 방법은 아래와 같이 3가지이다. 1) 시소러스(thesaurus)를 활용한 기법 - 인간이 사전에 만든 유의어 사전인 시소러스를 활용 2) 통계 기반 기법 3) 추론 기반 기법(word2vec) - 신경망 이용(다음 포스팅에서 다룰 것임) * 먼저 시소러스부터 살펴보자. 시소러스(thesaurus) 기법 * 시소러스는 우리가 사용하는 일반적인 국어사전과 같이 단어와 단어의 뜻이 기술되어있는 것이 아니라 유의어 관계를 정의해 놓은 사전을 뜻.. 2022. 2. 1.
합성곱 신경망(CNN) 완전연결층 CNN이전의 구조 - 완전연결층 * 우리가 지금까지 살펴본 network는 완전연결층(Fully-connected layer)으로 이뤄져있었다. 완전 연결층은 말 그대로 이전 층의 뉴런들과 다음층의 뉴런들이 하나도 빠짐없이 서로 연결되어있는 구조를 띠는 층을 뜻한다. 조금 생소할수도 있으니 다음 자료를 통해 이해해보자. * 일반적인 DNN구조이다. 잘 보면 이전 층의 뉴런들과 다음 층의 뉴런들이 모두 각각 연결되어있는 것을 확인할 수 있다. * 그리고 이 완전연결층을 구현할 때 우리는 지금까지 Affine layer와 ReLU layer를 사용하였다. 이렇게 말이다. * 앞서 mnist dataset을 통해 이미지를 분류하는 과정을 생각해보자. 이미지가 network로 입력될 때 flatten.. 2022. 1. 30.
다양한 단어의 표현방법 Bag of Words * Bag of words는 단어의 순서를 고려하지 않고 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. * 각 단어에 index를 부여하고 index 크기 만큼의 vector에 index별 출현 빈도를 표기한 것이 BoW이다. BoW 만드는 과정 1) 각 단어에 고유한 정수 index 부여 2) 각 index의 위치에 단어 토큰의 등장 횟수를 기록한 벡터를 만듦 from konlpy.tag import Okt okt = Okt() def build_bag_of_words(document): # 온점 제거 및 document 형태소 단위로 분리(list를 return) document = document.replace('.', '') tokenized_document.. 2022. 1. 27.
Optimizer 매개변수 갱신 * 손실함수의 값을 최소로 하는 매개변수 값을 찾는 것을 최적화(optimize) 라고 한다. 최적화된 매개변수는 해석적으로 수식의 풀이를 통해 한 번에 찾을 수 없고, 컴퓨터를 이용한 반복적인 계산을 통해서만 찾는 것이 가능하다. 확률적 경사 하강법(Stochastic Gradient Descent) $W \rightarrow W - \eta {\partial L \over \partial W}$ class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): params[key] -= self.lr * grads[key] * update 메소드의 매개변.. 2022. 1. 27.