전체 글53 [머신러닝, 딥러닝] 신경망 학습 (4) - 학습 알고리즘 구현 이전까지 다뤘던 개념들을 하나로 정리한 2층 신경망의 학습 코드입니다. from common.functions import * from common.gradient import numerical_gradient class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01): # 가중치 초기화 self.params = {} self.params['W1'] = weight_init_std * np.random.randn(input_size, hidden_size) self.params['b1'] = np.zeros(hidden_size) self.params['W2'] = weight_init_s.. 2023. 2. 13. [머신러닝, 딥러닝] 신경망 학습 (3) - 수치 미분과 기울기 갑자기 미분이라는 개념이 등장하는 이유는 바로 기울기를 설명하기 위함입니다. 우리는 흔히 미분과 기울기의 연관성에 대해서는 알고 있습니다. 미분하면 가장 먼저 떠오르는 식입니다. 자세하게 다룰 건 아니기에 가볍게 코드 설명으로 넘어가도록 하겠습니다. 먼저 한 가지 미분 계산을 구현해보겠습니다. def numerical_diff(f, x): h = 1e-50 return (f(x + h) - f(x) / h) 아무 문제가 없는 것 같지만 위 코드에도 문제가 있습니다. 첫 번째는 부동소수점 관련 문제입니다. h의 값 때문인데 1e-50은 0이 50개인 0.000...1입니다. 그러나 이 수를 float형 32비트 부동소수점으로 나타내면 0.0이 되어 올바른 계산이 이루어지지 않습니다. 두 번째는 f의 차분인.. 2023. 2. 13. [머신러닝, 딥러닝] 신경망 학습 (2) - 미니 배치 학습 미니 배치 학습은 경사 하강법에서 발생하는 성능 저하 문제를 해결하기 위해서 등장한 미니 배치 경사 하강법과 유사한 원리를 가지는 학습법입니다. 미니 배치 경사 하강법이 등장하기 이전에도 성능 저하 문제를 해결하기 위해서 여러 방법들이 존재했습니다. 대표적으로는 배치 경사 하강법과 확률적 경사 하강법입니다. 전자는 전체 데이터셋을 하나의 배치(batch)라고 두어 한꺼번에 처리를 하는 것을 의미합니다. 전체를 한꺼번에 처리하기 때문에 누락 없이 꽤 정확한 결과를 가져올 수 있겠지만 반면에 시간이 너무나 오래 걸린다는 단점이 있습니다. 후자는 전자의 시간 문제를 해결하기 위해 고안되었습니다. 그러나 시간이 걸리는 문제는 해결했지만 이번에는 정확도가 떨어지게 되었고, 이로 인해 등장한 것이 미니 배치 경사하.. 2023. 2. 12. [파이토치] 합성곱 신경망 (1) 이전에 언급한 여러 가지 신경망의 종류 중 합성곱 신경망입니다. ○ 합성곱층의 필요성 합성곱층을 사용하는 이유는 합성곱 신경망을 사용하는 이유와 같이 이미지와 영상 처리에 유용하기 때문입니다. 먼저 간략하게 이미지를 분석하는 방법을 예시로 알아보자면 일단 네모난 이미지를 3x3 배열로 나타낼 때 이후에 이걸 일자로 펼쳐서 가중치를 도입한 후 은닉층에 전달하게 됩니다. 그러나 위처럼 이미지를 펼쳐서 분석하게 되면 데이터의 공간적 구조를 무시하게 되는데, 이를 방지하기 위해 도입된 것이 합성곱층입니다. ○ 합성곱 신경망의 구조 합성곱 신경망은 기존의 여타 신경망과는 다르게 많은 층으로 구성됩니다. 나열하자면 입력층 / 합성곱층 / 풀링층 / 완전연결층 / 출력층으로 구성됩니다. 합성곱 신경망의 전체적인 흐름.. 2023. 2. 9. [파이토치] 딥러닝 시작 블로그 글 중에서 딥러닝을 다루고 있는 페이지가 있습니다. 본 글은 지난 글에서 이미 작성한 내용들은 제외하고 새로운 내용들을 위주로 넣었으니 참고 바랍니다. 참고하시면 되는 글은 해당 문단에서 알려드리겠습니다. 먼저 신경망을 구성하는 가장 기본적인 원리인 퍼셉트론입니다. 퍼셉트론은 AND, OR, NAND, XOR 등 여러 가지 게이트들로 이루어져 있고, 이들은 각각 논리회로들입니다. 자세한 설명은 블로그 내의 퍼셉트론 페이지에 있습니다. 간략하게 설명하자면 퍼셉트론은 많은 숫자들을 0과 1로 나타내는 하나의 과정입니다. 각각의 게이트들이 0과 1로 나타내는 과정과 결과는 다르지만 우리는 여기서 공통점을 찾을 수 있었습니다. 입력값에 대한 출력을 그래프 상으로 나타낼 때 정확히 하나의 직선으로 0과 1.. 2023. 2. 8. [머신러닝, 딥러닝] 신경망 학습 (1) - 손실함수 지난 장까지 신경망의 전체적인 개요에 대해 알아봤다면 이번에는 신경망의 학습에 대해 알아볼 차례입니다. 여기서 말하는 학습이란, 단순히 배우는 것이 아니라 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 말합니다. 신경망의 학습은 특정한 지표로부터 학습을 이어가는데 이 지표를 손실함수라고 합니다. 이 손실함수의 결괏값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표입니다. 손실되는 값이 가장 적어야 우리가 원하는 정확도가 높은 값을 얻어낼 수 있기 때문이죠. 신경망의 특징은 데이터를 보고 학습할 수 있다는 점입니다. 데이터를 보고 학습한다는 것은 가중치의 매개변수 값을 데이터를 보고 자동으로 결정하여 처리한다는 뜻입니다. 만약에 MNIST 이미지 데이터셋과 관련된 알고리즘.. 2023. 1. 24. 이전 1 ··· 3 4 5 6 7 8 9 다음