일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 설치
- 기울기
- sgd
- CTF
- Python Challenge
- 리뷰
- AdaGrad
- 딥러닝
- picoCTF
- Apache2
- 순전파
- 코딩
- 신경망 학습
- FastAPI
- 소프트맥스 함수
- 파이썬
- 오차역전파법
- 역전파
- 백준
- flag
- 우분투
- 책
- PHP
- 신경망
- Python
- PICO CTF
- PostgreSQL
- HTML
- 아파치
- C언어
- Today
- Total
목록공부/딥러닝 (27)
Story of CowHacker
앞에서 알아본 모멘텀, AdaGrad를 합진 기술의 이름은 Adam이다. 이 Adam을 먼저 파이썬으로 구현해볼 것이다. Adam 코드 class Adam: """Adam (http://arxiv.org/abs/1412.6980v8)""" def __init__(self, lr=0.001, beta1=0.9, beta2=0.999): self.lr = lr self.beta1 = beta1 self.beta2 = beta2 self.iter = 0 self.m = None self.v = None def update(self, params, grads): if self.m is None: self.m, self.v = {}, {} for key, val in params.items(): self.m[ke..
이번에는 저번에 알아본 모멘텀 보다 더 발전한 AdaGrad에 대해 알아보겠다. AdaGrad란? 개별 매개변수에 적응적으로 학습률을 조정하면서 학습을 진행한다. 그림 1은 AdaGrad를 수식으로 표현한 것이다. W는 갱신할 가중치 매개변수다. ∂L/∂W은 W에 대한 손실 함수의 기울기다. η는 학습률을 뜻한다. h는 기존 기울기 값을 제곱하여 계속 더해준다. 매개변수를 갱신할 때 1/루트 h을 곱해 학습률을 조정한다. 이제 이것을 파이썬 코드로 구현해보겠다. AdaGrad 코드 import numpy as np class AdaGrad: """AdaGrad""" def __init__(self, lr=0.01): self.lr = lr self.h = None def update(self, param..
이번에는 저번 글에서 알아본 SGD의 단점을 보완한 방법 중 모멘텀에 대해 알아보겠다. 모멘텀은 운동량을 뜻하는 단어다. 그림 1을 보면 두 개의 수식이 있는데 첫 번째 수식은 모멘텀을 수식화 한 것이고 두 번째 수식은 간소화한 수식이다. 이제 이것을 파이썬으로 구현해보겠다. 참고로 이 코드는 밑에 출처를 참고했다. 출처 : https://github.com/WegraLee/deep-learning-from-scratch WegraLee/deep-learning-from-scratch 『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). Contribute to WegraLee/deep-learning-from-scratch development by creating an account on GitHu..
이번에는 확률적 경사 하강법 , SGD에 대해 알아보겠다. 그림 1은 SGD를 수식으로 나타낸 것이다. W는 갱신할 가중치 매개변수고 뒤에 빼는 분자 분모는 손실 함수의 기울기다. 이것을 파이썬으로 구현해보겠다. SGD 파이썬 코드 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 ] 위 코드를 해석해보면 초기화받는 인수 lr은 learninig rate ( 학습률 )를 뜻한다. 이것을 인스턴스 변수로 유지한다. update 메서드는 SGD 과정에서 반복해서 불린다. ..
다시 한번 신경망 학습의 절차를 보겠다. 전제 신경망에는 가중치와 편향이 있고, 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 학습이라고 한다. 1단계 - 미니 배치 훈련 데이터 중 일부를 무작위로 가져온다. 손실 함숫값을 줄이는 것이 목표다. 2단계 - 기울기 산출 미니 배치의 손실 함숫값을 줄이기 위해 각 가중치 매개변수의 기울기를 구한다. 3단계- 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금 갱신한다. 4단계 - 반복 1 ~ 3 단계를 반복한다. 지금까지 알아온 오차 역전파법은 2단계 기울기 산출에 속한다. 이제 오차 역전파법을 본격적으로 구현할 차례다. 먼저 2층 신경망에서 클래스의 인스턴스 변수와 메서드를 알아보겠다. 이제 그림 1과 그림 2를 참고해 클래스 코드를 ..
이번 글에서는 먼저 출력층에서 사용하는 소프트 맥스 함수에 대해 알아보겠다. 소프트맥스 함수는 입력값을 정규화하여 출력한다. 그림1은 간소화한 Softmax-with-Loss 계층의 계산 그래프다. 여기서 이름에 -with-Loss가 붙는 이유는 손실함수인 교차 엔트로피 오차도 포함했기 때문이다. 그림1의 계산 그래프를 해석해보면 1. 3클래스로 가정하고 3개의 입력을 받는다. 2. 입력 ( a1, a2, a3 ) 을 정규화 하여 출력 ( y1, y2, y3 ) 을 한다. 3. Cross Entropy Error 계층은 Softmax의 출력 ( y1, y2, y3 )과 정답 레이블 ( t1, t2, t3 )를 받고 이 데이터로 부터 손실 L을 출력한다. 이제 파이썬으로 구현해보겠다. class Softm..
이번 글에서는 먼저 Affine 에대해 알아보겠다. Affine 계층이란? 신경망의 순전파 때 수행한 행렬의 곱을 기하학에서는 Affine계층이라고 불린다. 그림1을 보면 행렬의 곱에서 대응하는 차원의 원소 수를 일치 시킨다는걸 볼수있다. 그림2 는 Affine계층의 계산 그래프를 나타낸것이다. X, W, B가 행렬이라는 점에 주의해야한다. 지금까지의 계산 그래프트 노드 사이에 스칼라값이 흘렀는데 이 예에서는 행렬이 흐르고 있다. 이제 그림2의 역전파를 식으로 나타내보겠다 이제 계산그래프로 나타 내보겠다. 그림4를 보면 1, 2로 표시 된곳이 있는데 그것은 바로 그림5는 1 그림6은 2다. 지금까지 봐온 Affine계층은 입력 데이터로 X 하나만 고려한 것이였다. 이번에는 데이터 N개를 묶어 순전파 하는..
이번 글에서는 활성화 함수 계층에서 ReLU와 Sigmoid 계층을 구현해볼 것이다. 1. ReLU 계층 그림 1은 ReLU계층을 수식으로 나타낸 것이다. 그림 2는 x에 대한 y의 미분을 한 것이다. 순 전파 때의 입력인 x가 0보다 크면 역전파는 상류의 값을 그대로 하류로 흘린다. 반면, 순전파 때 x 가 0 이하면 역전파 때는 하류로 신호를 보내지 않는 걸 볼 수 있다. 위 그림 1 ,2를 계산 그래프로도 나타 내보겠다. 이것을 이제 파이썬으로 구현해보겠다. 파이썬 코드는 출처 : https://github.com/WegraLee/deep-learning-from-scratch WegraLee/deep-learning-from-scratch 『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). C..