책리뷰 (15) 썸네일형 리스트형 (밑바닥부터 시작하는 딥러닝) 8장. 딥러닝 조금 더 깊은 신경망 다음 그림과 같은 조금 더 깊은 CNN을 만들어보고, MNIST데이터셋에 적용해본다. 네트워크 특징 3*3의 작은 필터를 사용한 합성곱 계층 층이 깊어질수록 채널 수가 늘어남 활성화 함수는 ReLU 완전연결 계층 뒤에 드롭아웃 계층 사용 Adam을 사용해 최적화 가중치 초깃값은 He의 초깃값 네트워크 코드 class DeepConvNet: """정확도 99% 이상의 고정밀 합성곱 신경망 네트워크 구성은 아래와 같음 conv - relu - conv- relu - pool - conv - relu - conv- relu - pool - conv - relu - conv- relu - pool - affine - relu - dropout - affine - dropout - softm.. (밑바닥부터 시작하는 딥러닝) 7장. 합성곱 신경망(CNN) 합성곱 신경망은 이미지 인식 분야에서 주로 쓰인다. 완전연결 계층은 평탄화하여 데이터 형상이 무시되는데 CNN은 이를 보완해준다. 지역적인 부분에 대해서 특징을 추출한다는 것이 CNN의 장점이다. CNN을 활용한 네트워크 CNN 계층은 Conv - Relu - Pooling의 흐름으로 연결된다. 출력에 가까운 층에서는 Affine-Relu 구성을 사용한다. 합성곱 계층 합성곱 계층은 합성곱 연산, 패딩, 스트라이드로 구성된다. 합성곱 연산 필터를 일정 간격으로 이동해가며 입력 데이터에 적용한다. 패딩 입력 데이터 주변을 특정값으로 채우는 기법이다. 스트라이드 필터를 적용하는 위치의 간격을 스트라이드라고 한다. 출력 크기 필터, 패딩, 스트라이드에 따라 출력 shape가 달라지게 된다. 입력 크기를 (H,.. (밑바닥부터 시작하는 딥러닝) 6장. 학습 관련 기술들 매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 가능한 낮추는 매개변수를 찾는 것이고, 이를 최적화(optimization)이라고 한다. 확률적 경사 하강법(SGD) 5장에서 매개변수의 기울기를 구해, 기울어진 방향으로 매개변수 값을 갱신하는 일을 몇 번이고 반복해서 점점 최적의 값으로 다가갔다. 이는 SGD라는 방법이다. 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] 아래와 같이 사용할 수 있다. network = TwoLayerNet(... (밑바닥부터 시작하는 딥러닝) 5장. 오차역전파법 수치 미분은 간단하지만 계산 시간이 오래 걸린다는 단점이 있다. 이러한 단점을 오차역전파법(backpropagation)을 통해 해결할 수 있었다. 계산 그래프 노드: 연산을 표현 에지 : 입력과 출력되는 데이터를 표현 사과에서 가격까지가는 방향으로 퍼져가는 것을 순전파 반대 방향으로 퍼지는 것을 역전파라고 합니다. 역전파 역전파는 output에서 input 방향으로 진행한다. 역전파로 갈 때는 미분값을 활용한다. 계산그래프의 연산 구현 덧셈 계층 class AddLayer: def __init__(self): pass def forward(self, x, y): out = x + y return out def backward(self, dout): dx = dout * 1 dy = dout * 1 re.. (밑바닥부터 시작하는 딥러닝) 4장. 신경망 학습 패러다임의 변화 학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다. 기계학습은 데이터에서 패턴을 발견하여 학습한다. 이미지에서 '5'라는 숫자를 인식하는 프로그램을 구현한다고 해보자. 손글씨를 보고 5라는 숫자를 직접 코드를 짜는 것은 어렵습니다. 초기에는 사람이 생각한 알고리즘으로 시도를 했다. 이후에는 이미지에서 사람이 생각하는 특징을 추출(SIFT, SURF, HOG)하고, 그 특징의 패턴을 기계학습 기술(SVM, KNN)로 학습하였다. 이 방식에서 더욱 발전하여 이후에는 완전히 데이터를 기계가 학습하는 방식의 딥러닝을 활용하였다. 손실함수 최적의 매개변수 값을 설정하기 위해서는 평가할 수 있는 지표가 필요하다. 신경망 학습에서는 손실 함수를 사용한다. 오차제곱합 .. (밑바닥부터 시작하는 딥러닝) 3장. 신경망 활성화함수 활성화 함수는(activation function)은 입력 신호의 총합을 출력신호로 변환하는 함수를 의미한다. 계단함수 시그모이드 함수 Relu Leaky-Relu Code def step_function(x): # 인풋은 numpy array y = x > 0 return y.astype(np.int) def sigmoid(x): return 1 / (1 + np.exp(-x)) def relu(x): return np.maximum(0, x) def leaky_relu(x): return np.maximum(0.1*x, x) Graph 출력층의 활성화함수 출력층의 활성화 함수는 원하는 문제의 유형에 따라서 달라진다. 회귀 수치를 예측, 출력층에 항등함수 사용 ex) 점수 0~100점 예측 .. (밑바닥부터 시작하는 딥러닝) 2장. 퍼셉트론 퍼셉트론 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 것을 말한다. 입력신호인 x1과 x2를 넣으면 가중치인 w1과 w2에 각각 곱해진 후 더해진다. 만약 이 값이 특정 역치값(theta)보다 크면 1, 작으면 0을 return한다. 논리 회로 논리 회로는 AND, OR, NAND, XOR 게이트가 있다. AND 게이트 입력이 모두 참일 때 출력도 참이다. def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(x*w) + b if tmp 이전 1 2 다음