Data Science

Deep Learning/from scratch II

[밑바닥부터 시작하는 딥러닝 2] - 3장 word2vec I

통계 기반 기법 : 학습 데이터를 한꺼번에 처리(배치 학습)하고, 단어의 빈도를 기초로 단어를 표현한다. 추론 기반 기법: 학습 데이터의 일부를 사용하여 순차적으로 학습(미니 배치 학습) 추론 기반 기법과 신경망 맥락 정보를 입력받아 단어의 출현 확률 기반으로 맥락에서 나올 단어를 추측한다. 신경망에서는 단어를 원핫벡터로 변환한다. 인덱스와 단어 ID와 같은 원소를 1로, 나머지는 모두 0으로 설정한다. 원핫벡터 변환 과정을 거치면 단어를 고정길이 벡터로 변환할 수 있다. 단어를 백터로 나타낼 수 있고, 신경망으로 처리할 수 있다. 입력층 뉴런과의 가중합(weighted sum)은 은닉층 뉴런이다. 코드로 구현하면 다음과 같다. import numpy as np c = np.array([[1,0,0,0,..

Deep Learning/from scratch II

[밑바닥부터 시작하는 딥러닝 2] - 자연어와 단어의 분산 표현 II

통계 기반 기법 개선 상호정보량 만약 the car drive 라는 단어가 있으면, the와 car 과의 연관성 보다, car과 drive가 더 관련성이 깊다고 생각할 것입니다. 하지만 the가 더 많이 등장한다면, the와의 관련성이 더 높다고 생각할 것이다. 이러한 문제를 해결하기 위해 점별 상호정보량(PMI) 이라는 척도를 사용한다. P(x)는 x가 일어날 확률, P(y)는 y가 일어날 확률, P(x,y)는 x,y가 동시에 일어날 확률이다. C는 동시발생 행렬, C(x,y)는 단어 x와 y가 동시발생하는 횟수, C(x)와 C(y)는 각각 단어 x와 y의 등장 횟수이다. N은 말뭉치에 포함된 단어수를 의미한다. 만약 the 가 1000번, car가 20번, drive가 10번 등장했을 때, the와 ..

Deep Learning/from scratch II

[밑바닥부터 시작하는 딥러닝 2] - 2. 자연어와 단어의 분산 표현 I

밑딥1은 대부분이 배웠던 내용이라 복습의 목적으로 일주일만에 책 한권 다했다. 밑딥2 1장은 밑딥1의 총망라라 정리하지 않았고 2장부터 시작합니다 밑딥1보다 좀 더 꼼꼼히 기록할 예정임 통계 기반 기법 말뭉치 전처리 하기 통계 기반 기법에서는 말뭉치(corpus)를 이용한다. 말뭉치란 대량의 텍스트 데이터를 의미한다. 우리가 흔히 볼 수 있는 뉴스, 소설과 같은 글도 말뭉치로 되어 있다. 다음과 같은 말뭉치로 앞으로의 분석을 진행할 것이다. text = 'You say goodbye and I say hello.' 이 텍스트를 단어 단위로 분할한다. txt = 'You say goodbye and I say hello.' txt = txt.lower() #단어 소문자화 txt = txt.replace('..

자료구조

검색 알고리즘 I

출처: do it 자료구조와 함께 배우는 알고리즘 입문 선형 검색 알고리즘 직선 모양으로 늘어선 배열에서 원하는 키값을 가진 원소를 찾을 때까지 맨 앞부터 스캔하여 검색한다. from typing import Any,Sequence def seq_search(a: Sequence,key:Any) -> int: #시퀀스에서 a에서 key와 값이 같은 원소를 선형 검색 i = 0 while True: if i == len(a): return -1 #검색에 실패하여 -1을 반환 if a[i]==key: return i #검색에 성공하여 현재 검사한 배열의 인덱스를 반환 i +=1 if __name__ == '__main__': num = int(input('원소 수를 입력하세요: ')) #num값을 입력받음 ..

자료구조

기본 자료구조와 배열

출처: do it 자료구조와 함께 배우는 알고리즘 입문 ## 뮤터블과 이뮤터블의 대입 n = 5 print(id(n)) n = 'ABC' print(id(n)) #변수에 어떤값을 대입하면 값이 아니라 식별번호가 바뀐다 133477962137968 133477960949168 n = 12 print(id(n)) n += 1 #int형 객체가 12에서 13으로 업데이트함 print(id(n)) 133477962138192 133477962138224 변경할 수 있는 자료형(mutable) - 리스트, 딕셔너리, 집합 변경할 수 없는 자료형(immutable) - 수, 문자열, 튜플 내포 표기 생성 리스트 numbers의 홀수 원소값을 *2 한 리스트 생성 numbers = [1,2,3,4,5] twise =..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 7장 합성곱 신경망(CNN) II]

im2col 코드 출처: https://github.com/youbeebee/deeplearning_from_scratch/blob/master/common/util.py import numpy as np def smooth_curve(x): """손실 함수의 그래프를 매끄럽게 하기 위해 사용 참고:http://glowingpython.blogspot.jp/2012/02/convolution-with-numpy.html """ window_len = 11 s = np.r_[x[window_len-1:0:-1], x, x[-1:-window_len:-1]] w = np.kaiser(window_len, 2) y = np.convolve(w/w.sum(), s, mode='valid') return y[5:..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 7장 합성곱 신경망(CNN) I]

Affine 계층은 fully-connected layer 라고도 한다. Affine 계층의 네트워크는 다음과 같다. 마지막 5번째 층은 softmax 계층에서 최종결과를 출력한다. CNN(합성곱 계층, convolutional layer)는 합성곱계층(convolutional layer)와 풀링계층이 추가되었다 affine(a.k.a fc layer)의 문제점 -> 공간, 색깔 (R G B), 거리 등 3차원속의 의미를 갖는 본질이 무시됨, 같은 차원의 뉴런으로 취급됨 CNN의 특징 -> 3차원적인 형상 유지(이미지 데이터의 특성) 합성곱 연산 입력은 (4*4), 필터는 (3*3) 출력은 (2*2) 이다. 필터를 kernel 이라고 지칭하기도함 1*2+0*2+3*1+0*0+1*1+2*2+3*1+0*0+..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 6장 학습 관련 기술들 II]

가중치 초깃값 설정 가중치 초깃값을 0으로 설정하면 갱신을 해도 여전히 같은 값이 유지가된다 그러므로 초깃값을 무작위로 설정해야한다 은닉층의 활성화값 분포 import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1/(1+np.exp(-x)) x = np.random.randn(1000,100) #1000개의 데이터 node_num = 100 #각 은닉층의 노드 수 hidden_layer_size = 5 #총 5개의 은닉층 activations = {} #활성화 결과(활성화 값)을 저장 for i in range(hidden_layer_size): if i != 0: x = activations[i-1] #표준편차가 1일때 w =..

해파리냉채무침
'분류 전체보기' 카테고리의 글 목록 (9 Page)