일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 아파치
- Apache2
- Python Challenge
- 리뷰
- 소프트맥스 함수
- sgd
- picoCTF
- 역전파
- 책
- 파이썬
- AdaGrad
- HTML
- 순전파
- 딥러닝
- FastAPI
- 오차역전파법
- PHP
- 백준
- 코딩
- flag
- C언어
- PostgreSQL
- 신경망 학습
- 우분투
- 신경망
- 기울기
- CTF
- PICO CTF
- 설치
- Python
- Today
- Total
목록공부/딥러닝 (27)
Story of CowHacker
이번 글에서는 먼저 연쇄 법칙에 대해서 알아볼 것이다. 연쇄 법칙이란? 합성 함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다. 여기서 합성 함수가 뭔지 알아야만 한다. 합성함수란? 여러 함수로 구성된 함수다. 그림 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. 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금..
이번 글에서는 저번에 배웠던 기울기를 이제 신경망에서 구현해보겠다. 신경망에서 말하는 기울기는 가중치 매개변수에 대한 손실 함수의 기울기다. 예를 들어 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 ] = ( ..
이번 글에서는 먼저 미분에 대해 알아볼 것이다. 미분 : 특정 순간의 변화량을 뜻한다. 그림 1은 미분을 수식으로 나타낸 것이다. 좌변은 x에 대한 f ( x )의 변화량을 나타내는 기호다. 결국, x의 작은 변화가 함수 f ( x )를 얼마나 변화시키느냐를 의미한다. 이때 시간을 뜻하는 h를 한없이 0에 가깝게 한다는 의미로 lim h->0로 나타낸다. 이제 위 미분을 파이썬으로 구현해보겠다. 미분 코드 def numerical_diff ( f, x ) : h = 1e-4 return ( f ( x + h ) - f ( x - h ) ) / ( 2 * h ) 함수 이름은 수치 미분을 뜻한다. 이 함수는 함수 f와 함수 f에 넘길 인수 x라는 두 인수를 받는 원리다. 그럼 이제 위 함수를 사용해 간단한 ..
이제 신경망 학습에 대해 알아보겠다. 먼저 신경망의 특징에 대해 보면 데이터를 보고 학습할 수 있다는 점이다. 이 말은 가중치 매개변수의 값을 데이터를 보고 자동으로 결정한다는 뜻이다. 여기서 신경망의 매개변수의 수는 수천에서 수만입니다. 더 들어가 층을 깊게 한 딥러닝 정도면 수억에 이른다. 그림 1은 이미지 5라는 것을 숫자 5라고 인식하는 과정을 나타낸 것이다. 첫 번째 과정은 사람이 생각한 알고리즘을 토대로 한 과정이다. 가장 어려운 방식이다. 두 번째 과정은 사람이 생각한 특징과 머신러닝을 토대로 한 과정이다. 세 번째 과정은 사람 개입 없이 온전히 신경망을 토대로 한 과정이다. 세 번째 과정을 종단 간 머신러닝 이라고도 한다. 처음부터 끝까지 사람의 개입 없이 결괏값을 얻을 수 있다는 뜻을 가..