본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

전체 글55

[파이토치] 딥러닝 시작 블로그 글 중에서 딥러닝을 다루고 있는 페이지가 있습니다. 본 글은 지난 글에서 이미 작성한 내용들은 제외하고 새로운 내용들을 위주로 넣었으니 참고 바랍니다. 참고하시면 되는 글은 해당 문단에서 알려드리겠습니다. 먼저 신경망을 구성하는 가장 기본적인 원리인 퍼셉트론입니다. 퍼셉트론은 AND, OR, NAND, XOR 등 여러 가지 게이트들로 이루어져 있고, 이들은 각각 논리회로들입니다. 자세한 설명은 블로그 내의 퍼셉트론 페이지에 있습니다. 간략하게 설명하자면 퍼셉트론은 많은 숫자들을 0과 1로 나타내는 하나의 과정입니다. 각각의 게이트들이 0과 1로 나타내는 과정과 결과는 다르지만 우리는 여기서 공통점을 찾을 수 있었습니다. 입력값에 대한 출력을 그래프 상으로 나타낼 때 정확히 하나의 직선으로 0과 1.. 2023. 2. 8.
[머신러닝, 딥러닝] 신경망 학습 (1) - 손실함수 지난 장까지 신경망의 전체적인 개요에 대해 알아봤다면 이번에는 신경망의 학습에 대해 알아볼 차례입니다. 여기서 말하는 학습이란, 단순히 배우는 것이 아니라 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 말합니다. 신경망의 학습은 특정한 지표로부터 학습을 이어가는데 이 지표를 손실함수라고 합니다. 이 손실함수의 결괏값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표입니다. 손실되는 값이 가장 적어야 우리가 원하는 정확도가 높은 값을 얻어낼 수 있기 때문이죠. 신경망의 특징은 데이터를 보고 학습할 수 있다는 점입니다. 데이터를 보고 학습한다는 것은 가중치의 매개변수 값을 데이터를 보고 자동으로 결정하여 처리한다는 뜻입니다. 만약에 MNIST 이미지 데이터셋과 관련된 알고리즘.. 2023. 1. 24.
[머신러닝, 딥러닝] 신경망 (4) - MNIST 손글씨 데이터 인식 MNIST 손글씨 숫자 인식 일반적으로 출력을 받을 때는 우리가 출력받기로 설정한 클래스의 개수만큼 출력층의 뉴런 수를 정합니다. 예를 들어 0부터 9까지의 수를 숫자에 맞게 분류하기로 한다면 출력층의 뉴런 수를 10개로 잡으면 됩니다. 이번 페이지에서 사용할 MNIST 데이터셋은 손글씨 숫자 이미지의 집합입니다. MNIST 손글씨 숫자 데이터는 위와 같은 형식으로 이루어져 있으며 누군가가 예쁘게 쓴 실제 손글씨입니다. 위의 숫자들이 뭔가 흐릿하게 보이는 이유는 픽셀로 이루어져 있기 때문입니다. 사진들의 크기는 각각 28 x 28로 작은 크기라서 더욱 선명하게 픽셀자국이 보입니다. 각 픽셀은 0에서 255까지의 값을 취합니다. 가장 먼저 해주는 작업은 이 픽셀 사진들을 넘파이 배열로 바꿔주는 것입니다. .. 2023. 1. 23.
[머신러닝, 딥러닝] 신경망 (3) - 항등함수와 소프트맥스 함수 이번에는 지난번의 말미에 언급했던 항등함수와 소프트맥스 함수에 대해서 다뤄보려고 합니다. 먼저 항등 함수입니다. 항등이란 예전부터 수학에서 자주 등장하는 단어이듯, 뜻은 같다, A = A라는 뜻입니다. 이것에 알고리즘을 씌워 생각해 보면 입력과 출력이 항상 같다는 뜻이 됩니다. 여태까지 신경망의 형태를 보면 하나의 입력이 수많은 은닉층에 영향을 미치고 또한 많은 값들이 출력에 영향을 주는 것을 확인할 수 있었습니다. 그러나 항등 함수는 그 구조 특성상 출력층에서 입력 신호가 그대로 출력 신호로 가는 모습을 볼 수 있기 때문에 이전의 신경망의 모습과는 상이한 모습을 볼 수 있습니다. 위와 같은 항등함수는 주로 회귀에서 사용된다고 하였습니다. 그러나 구조를 보면 아시다시피 입력과 출력이 그대로 가기 때문에 .. 2023. 1. 22.
[머신러닝, 딥러닝] 신경망 (2) - 다차원 배열 계단 함수, 시그모이드와 ReLU에 이어 넘어가기 전 행렬에 대한 개념을 짚고 넘어가 보고자 합니다. 행렬은 행과 열로 이루어진 수를 의미합니다. 가로가 행, 세로가 열인데 기존의 배열의 형태와 유사함을 알 수 있습니다. 배열은 단순히 숫자를 나열한 형태이지만 가장 간단한 한 줄에 숫자를 나열한 배열도 하나의 행과 하나의 열을 가지는 행렬이라고 부를 수 있습니다. 만약 1, 2, 3, 4라는 배열이 있다면 우리는 이것을 다차원 배열로 쉽게 변환할 수 있습니다. # 1차원 A = [1,2,3,4] # 2차원 B = ([[1,2], [3,4]]) 개념적인 부분은 기본적인 수학이니 넘어가고 이제 계산에 대해 알아보겠습니다. 예를 들어 2 x 2 행렬 곱 연산을 한다고 할 때 같은 크기의 행렬을 연산하면 결과도.. 2023. 1. 21.
[머신러닝, 딥러닝] 신경망 (1) - 활성화 함수 (계단함수, 시그모이드, ReLU) 이전에 퍼셉트론에 대해 다뤄보았습니다. 퍼셉트론은 논리회로였습니다. 수학으로 따지면 덧셈, 뺄셈 같은 것이죠. 그러나 우리는 덧셈과 뺄셈을 활용하여 문제를 해결하고 때론 만들곤 합니다. 그렇다면 퍼셉트론이라는 논리회로도 더하기처럼 활용을 해야 합니다. 그리고 그 활용처가 바로 신경망입니다. 신경망이 퍼셉트론을 가지고 운영하는 것이라기 보단 퍼셉트론의 틀을 가지고 간다는 것이 알맞은 표현이겠네요. 신경망은 크게 3개의 층으로 나뉩니다. 입력층, 은닉층, 출력층이 있습니다. 앞선 퍼셉트론에서는 입력과 출력층 밖에 없었습니다. 가중치는 그저 입력과 출력 사이에 들어가는 하나의 요소였을 뿐이었지만, 신경망에서는 은닉층에서 가중치를 고려한 계산이 이루어집니다. 그러나 은닉층은 말그대로 '은닉'이기에 실제로 보이는.. 2023. 1. 4.