일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- HTML
- 백준
- C언어
- 오차역전파법
- 아파치
- 책
- Python
- 순전파
- sgd
- CTF
- 파이썬
- AdaGrad
- 신경망 학습
- Apache2
- picoCTF
- 기울기
- 소프트맥스 함수
- 리뷰
- PICO CTF
- Python Challenge
- 우분투
- PostgreSQL
- 코딩
- PHP
- 신경망
- flag
- 역전파
- 설치
- FastAPI
- Today
- Total
목록공부 (139)
Story of CowHacker
이번 글에서는 활성화 함수 계층에서 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..
이번 글에서는 먼저 연쇄 법칙에 대해서 알아볼 것이다. 연쇄 법칙이란? 합성 함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다. 여기서 합성 함수가 뭔지 알아야만 한다. 합성함수란? 여러 함수로 구성된 함수다. 그림 1의 식은 그림 2처럼 두 개의 식으로 구성된다. 다음은 역전파에 대해서 알아보겠다. 역전 파는 연쇄 법칙이랑 같은 원리다. 먼저 덧셈 노드의 역전파에 대해 알아보겠다. z = x + y 라는 식을 미분해보면 그림 3처럼 된다. 이것을 계산 그래프로 표현하면 그림 4는 순 전파를 나타낸 것이고, 그림 5는 역전파를 나타낸 것이다. 그림 5에서 상류에서 전해진 미분에 1을 곱하여 하류를 거친다. 결국 덧셈 노드의 역전 파는 1을 곱하기만 할 뿐이므로 입력된 값을 그대..
이번에는 오차 역전파법을 알아볼 것이다. 오차 역전파법이란 가중치 매개변수의 기울기를 효율적으로 계산하는 것이다. 오차 역전파법을 이해하는 방법은 두 가지가 있는데 수식 또는 계산 그래프다. 계산 그래프로 설명한다는 생각은 안드레 카페시, 페이페이 리 교수가 진행한 딥러닝 수업에서 나왔다. 계산 그래프 여기서 사용하는 그래프는 자료구조로, node와 edge로 표현된다. 그럼 문제를 풀어보겠다. 문제 1. A는 슈퍼에서 1개에 100원인 사과를 2개 샀다. 이때 지불 금액 구하기. 단, 소비세가 10% 부과된다. 그림 1을 설명해보겠다. 처음에 사과의 100원이 X2 노드를 거친 후 200원이 되어 다음 노드로 전달된다. 200원이 X1.1 노드를 거친 후 220원이 된다. 결과는 220원이 된다. 위 ..
이번 글에서는 신경망 학습 알고리즘에 대해 알아볼 것이다. 지금 까지 알아온 손실 함수 미니 배치 기울기 경사 하강법 등 많은 걸 봤다. 이것은 신경망 학습 절차에 그대로 적용된다. 신경망 학습 절차 0. 전제 신경망에는 적응 가능한 가중치와 편향이 있고, 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 학습이라고 한다. 1. 미니 배치 훈련 데이터 중 일부를 무작위로 가져온다. 이렇게 선별한 데이터를 미니 배치라고 한다. 이 미니 배치의 손실 함숫값을 줄이는 것이 목표다. 2. 기울기 산출 미니배치의 손실 함수 값을 줄이기 위해 각 가중치 매개변수의 기울기를 구한다. 기울기는 손실 함수의 값을 가장 작게 하는 방향을 제시한다. 3. 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금..
pwnable.kr 사이트 문제 중 input이라는 문제를 풀어볼 것이다. 출처 : http://pwnable.kr/play.php http://pwnable.kr/play.php pwnable.kr 문제 서버에 접속을 해봤다. 드래그 한 부분에 대충 /tmp 아래에 파일은 언제든 지울 수 있고, /tmp 아래에 나의 디렉터리를 만들라는 소리인 거 같았다. 다음은 문제 서버에 c파일이 있길래 열어 봤다. c파일의 내용은 엄청 길었다. 중간중간에 Stage 1 clear!라고 위 코드를 만족시키면 클리어를 시켜 주는 듯했다. 총 5개 보였다. 먼저 나는 Stage 1 위에 printf 문을 봤다. 출처 : https://papago.naver.com/ 네이버 파파고 번역을 부탁해 파파고 papago.nav..
이번 글에서는 저번에 배웠던 기울기를 이제 신경망에서 구현해보겠다. 신경망에서 말하는 기울기는 가중치 매개변수에 대한 손실 함수의 기울기다. 예를 들어 2 x 3 인 형상에서 가중치가 W, 손실 함수가 L인 신경망을 생각해보면 가중치 W를 수식으로 나타내면 그림 1이 된다. 그림 2는 경사를 수식으로 나타 냈을 때다. 해석해보면 각 원소는 각각의 원소에 관한 편미분이다. 예를 들어 1 행 1 번째 원소는 w11을 조금 변경했을 때 손실 함수 L이 얼마나 변화하느냐를 나타낸다. 여기서 중요한 점은 그림 2의 형상이 W와 같다는 것이다. 이제 한번 신경망에서 기울기를 구하는 코드를 짜 보겠다. 신경망에서의 기울기 코드 import sys, os sys.path.append(os.pardir) # 부모 디렉터..
이번 글에서는 경사 법에 대해 알아보겠다. 머신러닝 문제 대부분은 학습 단계에서 최적의 매개변수를 찾아낸다. 딥러닝 즉, 신경망 역시 최적의 매개변수를 학습 시에 찾아야 한다. 여기서 최적이란 손실 함수가 최솟값이 될 때의 매개변수 값이다. 경사 법이란 기울기를 이용해 함수의 최솟값을 찾으려는 것이다. 경사 법을 수식으로 나타내 보겠다. 그림 1이 바로 경사 법을 수식으로 나타낸 것이다. 수식에서 η ( 에타 )는 갱신하는 양을 나타낸다. 이를 신경망 학습에서는 학습률이라 한다. 학습률이란 한 번의 학습으로 얼마만큼 학습해야 할지, 즉 매개변수 값을 얼마나 경신하냐를 결정하는 것이다. 이제 경사 법을 파이썬으로 구현해보겠다. 경사 법 코드 def gradient_descent ( f, init_x, lr..
이번 글에서는 앞 글에서 봤던 편미분을 묶어서 동시에 계산하는 방법을 알아보겠다. 이 묶어서 계산하는 방법이 바로 기울기라는 것이다. 지금부터 기울기에 대해 알아보겠다. 그림 1처럼 모든 변수의 편미분을 벡터로 정리한 것을 기울기라고 한다. 이 기울기를 파이썬으로 구현해보겠다. 기울기 코드 import numpy as num def numerical_gradient ( f, x ) : h = 1e-4 grad = num.zeros_like ( x ) for idx in range ( x.size ): tmp_val = x [ idx ] x [ idx ] = tmp_val + h fxh1 = f ( x ) x [ idx ] = tmp_val - h fxh2 = f ( x ) grad [ idx ] = ( ..