일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 프로그래머스
- stak
- SQL
- kakao
- boj
- 딥러닝
- algorithm
- 파이썬
- Numpy
- FullyConnectedLayer
- sort
- Heap
- MySQL
- 자연어처리
- Stack
- backward
- Sigmoid
- que
- dl
- CBOW
- Python
- skip-gram
- affine
- Programmers
- hash
- PPMI
- DeepLearning
- select
- Word2vec
- 신경망
- Today
- Total
목록딥러닝 (6)
혜온의 이것저것

4.1.1 Embedding 계층 앞장의 word2vec 구현에서는 단어를 원핫 표현으로 바꿨다. 그것을 MatMul 계층에 입력하고, MatMul 계층에서 가중치 행렬을 곱했다. 여기서 어휘 수가 100만개인 경우를 상상해보자. 이때 은닉층 뉴런이 100개라면, MatMul 계층의 행렬 곱은 그림처럼 된다. 그림에서 결과적으로 수행하는 일은 단지 행렬의 특정 행을 추출하는 것뿐이다. 따라서 원핫 표현으로의 변환과 MatMul 계층의 행렬 곱 계싼은 사실 필요가 없다. 그러면 가중치 매개변수로부터 단어ID에 해당하는 행을 추출하는 계층을 만들어보자. 그 계층을 Embedding 계층이라 부르겠다. 4.1.2 Embedding 계층 구현 행렬에서 특정 행을 추출하는 것은 쉽다. 가중치 W가 2차원 넘파이 ..

3.5.1 CBOW 모델과 확률 A라는 현상이 일어날 확률은 P(A)라고 쓰고, 동시 확률은 P(A,B)라고 쓴다. 사후 확률은 P(A|B)로 쓴다. B가 주어졌을 때 A가 일어날 확률 이라고 해석할 수 있다. CBOW 모델을 확률 표기법으로 기술해보자. CBOW 모델이 하는 일은 맥락을 주면 타깃 단어가 출현할 확률을 출력하는 것이다. w_t-1과 w_t+1이 주어졌을 때 타깃이 w_t가 될 확률을 수식으로 쓰면 다음과 같다. w_t-1과 w_t+1이 일어난 후 w_t가 일어날 확률을 뜻한다. 그리고 w_t-1과 w_t+1이 주어졌을 때 w_t가 일어날 확률로 해석할 수 있다. CBOW는 위의 식을 모델링하고 있는 것이다. 1장에서 설명한 교차 엔트로피 오차를 적용하면 다음 식을 유도해낼 수 있다. C..

우리가 구현할 신경망은 다음과 같다. 우리는 이 신경망을 SimpleCBOW라는 이름으로 구현할 것이다. 클래스의 초기화 메서드부터 시작해보자. import sys sys.path.append('..') import numpy as np from common.layers import MatMul, SoftmaxWithLoss class SimpleCBOW: def __init__(self, vocab_size, hidden_size): V,H=vocab_size, hidden_size # 가중치 초기화 W_in = 0.01*np.random.randn(V,H).astype('f') W_out= 0.01*np.random.randn(H,V).astype('f') # 계층 생성 self.in_layer0=M..

3.3.1 맥락과 타깃 word2vec에서 이용하는 신경망의 입력은 '맥락'이다. 그리고 그 정답 레이블은 맥락에 둘러싸인 중앙의 단어, 즉 '타깃'이다. 다시 말해, 우리가 해야 할 일은 신경망에 '맥락'을 입력했을 때 '타깃'이 출현할 확률을 높이는 것이다. 그림에서 말뭉치로부터 목표로 하는 단어를 타깃으로, 그 주변 단어를 맥락으로 뽑아냈다. 이 작업을 망뭉치 안의 모든 단어에 대해 수행한다. 이 맥락의 각 행이 신경망의 입력으로 쓰이고, 타깃의 각 행이 정답 레이블이 된다. 참고로, 각 샘플 데이터에서 맥락의 수는 여러 개가 될 수 있으나, 타깃은 올직 하나 뿐이다. 우선 말뭉치 텍스트를 단어 ID로 변환해야 한다. import sys sys.path.append('..') from common...

통계 기반 기법을 살펴보면서 말뭉차(corpus)를 이용할 것이다. 간단히 말하면 대량의 텍스터 데이터인데, 맹목적으로 수집된 텍스트 데이터가 아닌 자연어 처리 연구나 애플리케이션을 염두에 두고 수집된 텍스트 데이터를 일반적으로 말뭉치라고 한다. 말뭉치에는 자연어에 대한 사람의 지식이 충분히 담겨 있다고 볼 수 있다. 문장을 쓰는 방법, 단어를 선택하는 방법, 단어의 의미 등 사람이 알고 있는 자연어에 대한 지식이 포함되어 있다. 통계 기반 깁버의 목표는 이처럼 사람의 지식으로 가득한 말뭉치에서 자동으로, 그리고 효울적으로 그 핵심을 추출하는 것이다. 2.3.1 파이썬으로 말뭉치 전처리하기 자연어 처리에는 다양한 말뭉치가 사용되다. 위키백과와 구글 뉴스 등의 텍스트 데이터, 셰익스피어나 나쓰메 소세키 같..