전 포스팅에서는 데이터 하나에 대한 손실함수만을 생각했다. 이제 훈련 데이터 모두에대한 손실함수를 구해보자 전 포스팅이 궁금하면 아래 링크로 들어가라 https://i-enable.tistory.com/24 [DL] Loss Function(손실 함수)란? 손실 함수의 정의 종류 등 연관이 깊은 배치에 대해 다뤄보자. 손실함수란? 사람들한테 "현재 행복하시나요?"라고 물어볼 때 대부분의 대답들은 "많이 행복해요", "적당히 행복한 거 같아요" 등등 i-enable.tistory.com mini batch(미니배치) 학습 대표적으로 MNIST 데이터셋은 훈련 데이터셋이 6만개인데 모든 데이터를 대상으로 손실 함수의 합을 구하는데는 오래걸린다. 또한 다른 데이터셋의 경우에는 몇억개 있을수도 있는거다. 이런 ..
손실 함수의 정의 종류 등 연관이 깊은 배치에 대해 다뤄보자. 손실함수란? 사람들한테 "현재 행복하시나요?"라고 물어볼 때 대부분의 대답들은 "많이 행복해요", "적당히 행복한 거 같아요" 등등의 답변이 일반적인 경우이다. 그런데 만약에 아래와 같이 대답한다면 어떤가? 내 행복지수는 3.23입니다. 이 사람은 하나의 지표를 가지고 행복을 수치적으로 판단한 것이다. (이런 사람 보이면 피하도록 하자) 이 이야기를 한 이유는 신경망과 관련이 있기 때문이다. 신경망 학습에서 하나의 지표로 표현되는 것은 "현재의 상태"이다. 그 지표를 좋게 만들어주는 것이 가중치 매개변수의 값을 탐색하는 것. 즉, 하나의 지표를 기준으로 최적의 매개변수 값을 탐색한다. 신경망에서 사용되는 지표는 Loss function(손실 ..
배치 수없이 들어봤지만 정확히 뭔지는 모를 수 있다. 바닥부터 알아보자. 배치(Batch)란? 간단하게 말하면 묶음이다. 입력 데이터를 돈다발처럼 묶어 놓은 것이다. 구현을 통해 왜 사용하는지 알아보자. 배치 구현 x, t = get_data() network = init_network() batch_size = 100 # 배치 크기 accuracy_cnt = 0 for i in range(0, len(x), batch_size): # 1 x_batch = x[i:i+batch_size] y_batch = predict(network, x_batch) p = np.argmax(y_batch, axis=1) # 2 accuracy_cnt += np.sum(p == t[i:i+batch_size]) # 결과..
간단한 MNIST 손글씨 숫자 분류를 추론과정 구현을 할 것이다. 이 과정은 Forward propagation(순전파)라고 한다. MNIST 데이터셋 https://github.com/WegraLee/deep-learning-from-scratch GitHub - WegraLee/deep-learning-from-scratch: 『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017) 『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). Contribute to WegraLee/deep-learning-from-scratch development by creating an account on GitHub. github.com import sys, os sys.path.append(os.pardir) # ..
최종 출력층에는 어떤 문제냐에 따라서 사용하는 활성화 함수가 달라진다. 대부분 회귀에는 항등함수, 분류에는 소프트맥스를 사용한다. Softmax(소프트 맥스) 함수 구현 식은 다음과 같다. $$ y_{k}=\frac{exp(a_{k})}{\sum_{i=1}^{n}exp(a_{i})} $$ 간단히 구현해보자 def softmax(x): exp_x = np.exp(x) sum_exp_x = np.sum(exp_x) y = exp_x / sum_exp_x return y 위처럼 잘 구현했지만 컴퓨팅 환경에선 오버플로 문제를 일으킬 수 있다는 점이다. 오버플로 문제를 해결하기 위해 함수를 개선해 보자 $$ y_{k}=\frac{exp(a_{k})}{\sum_{i=1}^{n}exp(a_{i})} =~\frac{C..
활성화 함수란? 말보단 식으로 보여주겠다. 아래식은 퍼셉트론의 동작방식을 설명한 것이다. $$ y=\left\{\begin{array}{l}0\left(b+w_{1}x_{1}+w_{2}x_{2}\leq0\right)\\ 1\left(b+w_{1}x_{1}+w_{2}x_{2}>0\right)\end{array}\right. $$ 간단하다. 여기서 아래처럼 치환하면 이런 식으로 표현할 수 있다. $$ y=h(b+w_{1}x_{1}+w_{2}x_{2}) $$ $$ h(x)=\left\{\begin{array}{l}0(x\leq0)\\ 1(x>0)\end{array}\right. $$ 위 식을 말로 정리하면 입력신호의 총합이 h(x)로 들어왔을 때 0이 넘으면 1을 반환하고 그렇지 않으면 0을 반환한다. 여기서..
퍼셉트론이란? 퍼셉트론은 하나의 알고리즘이라고 생각하면 편한데 신경망의 기원이 되는 알고리즘이다. 이 퍼셉트론은 다수의 신호를 입력받아 하나의 신호를 출력한다. 위 그림을 간단하게 해석하면 x1, x2는 입력신호, y는 출력신호, w1, w2는 가중치이다. 각각의 원은 노드라고 부른다. 입력신호가 다음 노드로 보내질 때는 입력신호에 고유한 가중치가 곱해집니다. 노드에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력한다. 자 이제 다 했다. 당신은 이제 퍼셉트론이 뭔지 안다. $$ y=\left\{\begin{array}{l}0\left(w_{1}x_{1}+w_{2}x_{2}\leq\theta\right)\\ 1\left(w_{1}x_{1}+w_{2}x_{2}>\theta\right)\end{..