일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SQL
- select
- 프로그래머스
- FullyConnectedLayer
- stak
- Numpy
- algorithm
- Python
- 자연어처리
- MySQL
- Sigmoid
- 딥러닝
- boj
- 신경망
- backward
- Stack
- sort
- affine
- dl
- PPMI
- que
- CBOW
- DeepLearning
- kakao
- Heap
- 파이썬
- hash
- Programmers
- skip-gram
- Word2vec
- Today
- Total
목록Deep Learning/밑바닥부터 시작하는 딥러닝2 (15)
혜온의 이것저것
신경망의 학습과 추론에 드는 연산량은 상당하다. 그래서 신경망에서는 얼마나 빠르게 계산하느냐가 매우 중요한 주제이다. 1.5.1 비트 정밀도 넘파이의 부동소수점 수는 기본적으로 64비트 데이터 타입을 사용한다. (OS나 파이썬/넘파이 버전 등에 따라 바뀔 수 있음) 실제로 64비트 부동소수점 수가 사용되는지 다음 코드를 통해 확인 가능하다. import numpy as np a=np.random.randn(e) a.dtype # dtype('float64') 넘파이는 64미트 부동소수점 수를 표준으로 사용한다. 그러나 신경망의 추론과 학습은 32비트 부동소수점 수로도 인숙률을 거의 떨어뜨리는 일 없이 수행할 수 있다고 한다. 메모리관점에서는 항상 32비트가 더 좋다고 말할 수 있고, 신경망 계산 시 데이..
1.4.1 스파이럴 데이터셋 import sys sys.path.append('..') from dataset import spiral import matplotlib.pyplot as plt x,t=spiral.load_data() print('x',x.shape)#입력데이터 (300,2) print('t',t.shape)#정답레이블 (300,2) t는 원핫 벡터로, 정답에 해당하는 클래스에는 1이, 그 외에는 0이 레이블 되어 있다. 이 데이터가 어떤 모습인지 그려보면 아래와 같다. 입력은 2차원 데이터이고, 분류할 클래스 수는 3개가 있다. 이 그래프를 보면 직선만으로는 클래스들을 분리할 수 없음을 알 수 있다. 따라서 비선형 분리를 학습해야 한다. 1.4.2 신경망 구현 은닉층이 하나인 신경망을 ..
학습되지 않은 신경망은 좋은 추론을 해낼 수 없다. 그래서 학습을 먼저 수행하고, 그 학습된 매개변수를 이용해 추론을 수행하는 흐름이 일반적이다. 신경망의 학습은 최적의 매개변수 값을 찾는 작업이다. 1.3.1 손실함수 신경망 학습에는 학습이 얼마나 잘 되고 있는지를 알기 위한 척도가 필요하다. 일반적으로 학습단계의 특정 시점에서 긴경망의 성능을 나타내느 척도로 손실(loss)을 사용한다. 손실은 학습 데이터와 신경망이 예측한 결과를 비교하여 예측이 얼마나 나쁜가를 산출한 단일 값이다. 신경망의 손실은 손실함수(loss function)를 사용한다. 다중 클래스 분류 신경망에서는 손실함수로 교차 엔트로피 오차(Cross Entropy Error)를 이용한다. 교차 엔트로피 오차는 신경망이 출력하는 각 클..
1.2.1 신경망 추론 전체 그림 신경망은 간단히 말하면 함수와도 같다. 무엇인가를 입력하면 무엇인가를 출력한다는 점에서. 2차원 데이터를 입력하면 3차원 데이터를 출력하는 예이다. 입력층(input layer)에는 뉴런2개, 출력층(output layer)에는 뉴련 3개가 있고, 은닉층(hidden layer)에는 적당한 수의 뉴런을 배치한다. 각 뉴런을 잇는 화살표에는 가중치(weight)가 존재하며, 그 가중치와 뉴런의 값을 각각 곱해서 합한 값이 다음 뉴런의 입력으로 쓰이게 된다. 이때 각 층에서 이전의 뉴런의 값에 영향을 받지 않는 정수인 편향값(bias)도 함게 더해진다. 신경망은 인접하는 층의 모든 뉴런과 연결되어 있다는 뜻에서 완전연결계층(fully connected layer)이라고 한다..
1.1.1 벡터와 행렬 벡터는 크기와 방향을 가진 양으로 숫자가 일렬로 늘어선 집합으로 표현할 수 있다. \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} 행렬은 숫자가 2차원 형태(사각형 형상)으로 늘어선 것. \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix} 벡터와 행렬을 확장하여 숫자 집합을 N차원으로 표현한 것도 생각할 수 있는데, 이를 일반적으로 텐서라고 한다. 벡터는 숫자들을 세로롤 나열하는 방법(열벡터), 가로로 나열하는 방법(행벡터)으로 표현 가능. import numpy as np x=np.array([1,2,3]) x.shape ## (3,) x.ndim ## 1 W=np.array([[1,2,3],[4,5,6]])..