![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bvV7cX/btqTrRB77fH/6O4GANK2EYA3ipwKJsbyeK/img.png)
오차 역전파법 : 신경망의 가중치 매개변수에 대한 손실함수의 기울기를 빠르게 구하기 위함 (효율적으로) 계산 그래프 : 계산 과정을 그래프로 나타낸 것 (노드와 엣지 이용) 순전파 : 순서대로 진행한 것 역전파 : 역으로 계산한 것 => 이를 이용해 미분을 구한다. 연쇄 법칙 이용해 계산 그래프의 역전파 계산 덧셈의 경우 z=x+y 일 때 dz/dx=1, dz/dy=1 이므로 역전파시 E값에 1을 곱한다. (E=dL/dz) 곱셈의 경우 z=x*y 일 때 dz/dx=y, dz/dy=x 이므로 역전파시 x방향 E값에 y, y방향 E값에 x를 곱한다. (E=dL/dz) 예제) 다음 그림과 같은 경우에서 역전파법으로 계산 그래프를 완성하자. 코드 class MulLayer: def __init__(self): ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/zF38t/btqTrRPyH91/bNILjifpXk50uvk3GNKI7K/img.png)
공부 : 밑바닥부터 시작하는 딥러닝 1 chapter 4.5~4.6 1. 2층 신경망 클래스 구현 (필요한 내용 주석으로) import sys, os sys.path.append(os.pardir) from common.functions import * from common.gradient import numerical_gradient class TwoLayerNet: # 2층 신경망, input_size = 입력층 노드 수, hidden_size = 은닉층 노드 수, output_size = 출력층 노드 수 def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01): self.params = {} self.params['..
www.acmicpc.net/problem/2294 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 전형적인 dp문제이다. 우선 0~k원까지 전부 inf로 초기화 한다. 그리고 dp[동전 가치]=1로 잡는다. (1개로 만들수 있으므로) 그러면 점화식이 다음과 같다. dp[ j + coin[i] ] = min( dp[ j + coin[i] ], dp[ j ] + 1) 여기서 j는 구하고자 하는 가치이다. 우선 우리는 dp를 inf로 초기화하였고, 동전의 개수 제한이 없으므로, i번..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qSV1N/btqThZt8hSt/Mc0vW0m9dTH0NBSNm96XSk/img.png)
공부 : 밑바닥부터 시작하는 딥러닝 1 chapter 3,4 신경망 학습 절차 1. 미니 배치 훈련 데이터 중 일부를 랜덤하게 가져온다. 이 데이터를 미니 배치라 한다. 미니 배치의 손실 함수값을 줄이는 것이 목표 2. 기울기 산출 미니 배치의 손실 함수값을 줄이기 위해 가중치 매개변수의 기울기를 구한다. 기울기는 손실함수 값을 가장 작게 하는 방향을 제시한다. 3. 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금 갱신한다. 4. 반복 1~3을 반복한다. 1. 배치 배치 : 하나로 묶은 입력 데이터 ex) MNIST에는 0~9의 글씨가 60,000개 있다. 이 중 10,000개의 테스트 데이터를 불러온다. 이 10,000개를 100개씩 묶는다. mnist파일과 load_mnist, sample..
www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 백트래킹 문제이지만 백트래킹으로 안 풀고 브루트포스로 풀었다. (너무 잠이 와서 생각을 멈췄다.) n개의 수가 입력 받으면 그 수의 부분 수열의 합이 주어진 s와 같은게 몇 개나 있는지 구하는 문제이다. 문제 자체는 어렵지 않지만, 백트래킹이 더 코드도 깔끔하고 시간도 줄어서 내일 풀어보려 한다. 브루트포스는 다음과 같이 하면 된다. n=10이라 예를 들면 10으로 만들 수 ..