본문 바로가기

AI/딥러닝

(7)
[밑바닥부터 시작하는 딥러닝] 8장 딥러닝 8.1 더 깊게 심층 신경망을 만들어 MNIST 데이터셋의 손글씨 숫자 인식에 도전 층이 깊어지면서 채널 수가 더 늘어남 3x3의 작은 필터를 사용한 합성곱 계층 활성화 함수는 ReLU 완전연결 계층 뒤에 드롭아웃 계층 사용 Adam 사용해 최적화 가중치 초깃값은 'He 초깃값' 잘못 인식한 이미지 → 인간도 식별 어려움 데이터셋에 대한 정확도 순위 → 대부분 CNN을 기초한 기법들이 점령 데이터확장 - 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장함 이미지를 회전하거나, 세로로 이동해 미세한 변화를 주어 이미지 개수 늘림 이미지를 일부를 자르는 'crop', 좌우를 뒤집은 'flip' 왜? 층을 깊게 하는 것이 중요한가 1. 신경망의 매개변수가 줄어듦 5x5의 합성곱 연산 1회는 3..
[밑바닥부터 시작하는 딥러닝] 7장 합성곱 신경망(CNN) 합성곱 신경망 CNN 7.1 전체 구조 합성곱 계층, 풀링 계층 완전연결 - 인접하는 계층의 모든 뉴런과 결합 → Affine 계층 + 합성곱 계층, 풀링 계층이 추가됨 출력에 가까운 층에서는 지금까지의 Affine-Relu 구성 사용 가능 마지막 출령 계층에서는 'Affine-Softmax' 조합 그대로 사용함 7.2 합성곱 계층 3차원 데이터같은 입체적인 데이터가 흐름 데이터의 형상이 무시됨, 모든 입력 데이터를 동등한 뉴런으로 취급함 (형상에 담긴 정보를 살릴 수 없음) 3차원 데이터 → 1차원 데이터로 평탄화해서 입력 + 합성곱 계층은 형상을 유지함 특징맵 - CNN에서 합성곱 계층의 입출력 데이터 입력데이터 - 입력 특징 맵 / 출력 데이터 - 출력 특징 맵 필터 연산 필터의 윈도우를 일정 간격..
[밑바닥부터 시작하는 딥러닝] 6장 학습 관련 기술들 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초깃값, 하이퍼파라미터 설정 방법 6.1 매개변수 갱신 최적화 - 매개변수의 최적값을 찾는 문제를 푸는 것 기울어진 방향으로 매개변수의 값을 반복해서 갱신해 최적의 값에 다가감 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] optimizer=SGD() optimizer.update(params, grads) Optimizer에 매개변수와 기울기 정보를 넘겨줌 비등방성 함수에서 탐색 경로가 비효율적 (지그재그로 이동) → 단점 개선) ..
[밑바닥부터 시작하는 딥러닝] 5장 오차역전파법 5.1 계산그래프 오차역전파법을 제대로 이해하는 방법 1. 수식을 통해 2. 계산 그래프를 통해 계산그래프 - 계산 과정을 그래프로 나타낸 것. 복수의 노드와 에지(노드 사이의 직선)로 표현 5.1.1 계산그래프로 풀다 문제2) 슈퍼에서 사과를 2개, 귤을 3개 샀습니다. 사과는 1개에 100원, 귤은 1개 150원입니다. 소비세가 10%일 때 지불금액을 구하세요. 1. 계산그래프를 구성한다. 2. 그래프에서 계산을 왼쪽에서 오른쪽으로 진행한다. 순전파 - 계산을 왼쪽에서 오른쪽으로 진행하는 단계 5.1.2 국소적 계산 국소적 - 자신과 직접 관계된 작은 범위 각 노드에서의 계산은 국소적 계산 자신과 관련한 계산(입력된 두 숫자의 덧셈) 외에는 신경쓰지 않음 5.1.3 왜 계산 그래프로 푸는가? 1. 국..
[밑바닥부터 시작하는 딥러닝] 4장 신경망 학습 4.1 데이터에서 학습하다! 학습 - 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 신경망이 학습할 수 있게 해주는 지표 → 손실 함수 실제 신경망의 매개변수는 무수히 많음 → 수작업으로 결정 X 4.1.1 데이터 주도 학습 기계학습의 중심에는 데이터 존재 주어진 데이터를 활용해서 해결) 이미지에서 특징 추출, 특징의 패턴을 기계학습 기술로 학습 두번째 접근 방식- 특징을 사람이 설계 세번째 접근 방식- 특징도 '기계'가 스스로 학습 ※ 종단간(처음부터 끝까지) 기계학습 - 데이터에서 목표한 결과를 사람의 개입없이 얻음 4.1.2 훈련데이터와 시험데이터 훈련 데이터 / 시험 데이터 훈련 데이터만 사용하여 학습하며 최적의 매개변수를 찾음 시험 데이터를 사용하여 훈련한 모델의 실력을 평가..
[밑바닥부터 시작하는 딥러닝] 3장 신경망 입력층(0층), 은닉층(1층), 두번째 은닉층(2층), 출력층(3층) 활성화 함수 a = b + w1x1 + w2x2 y = h(a) 1단계. 가중치가 곱해진 입력 신호의 총합 계산 2단계. 합을 활성화 함수에 입력해 결과 도출 b - 편향 계단함수 입력이 0 넘으면 1 출력 그 외에는 0 출력 import numpy as np import matplotlib.pylab as plt def step_function(x): return np.array(x>0, dtype=int) x=np.arange(-5.0,5.0,0.1) y=step_function(x) plt.plot(x,y) plt.ylim(-0.1,1.1) plt.show() 시그모이드 함수 연속적인 실수 def sigmoid(x): return..
[밑바닥부터 시작하는 딥러닝] 2장 퍼셉트론 밑바닥부터 시작하는 딥러닝 CHAPTER 2. 퍼셉트론 퍼셉트론 (입출력을 가진 알고리즘) 다수의 신호를 입력으로 받아 하나의 신호를 출력 1 - 신호가 흐른다 / 0 - 신호가 흐르지 않는다 원 - 뉴런, 노드 입력신호 → 가중치(w1, w2) 곱해짐 → 뉴런 임계값을 넘어설 때 1 출력 베타 -> -b 편향 b - 뉴런이 얼마나 쉽게 활성화 하는지 조정하는 매개변수 (결과로 1 출력) 가중치 w1, w2 - 입력 신호가 결과에 주는 영향력(중요도)를 조절하는 매개변수 (책에서 문맥에 따라 셋 다 가중치라고 할 때도 있음) AND def AND(x1, x2): x = np.array([x1,x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x) + b if..